ZYNQ开发系列——双串口打印以及串口波特率设置

本文介绍了如何在ZYNQ平台上实现双串口打印及串口波特率的修改。通过定义特定函数实现双串口同时打印,并详细讲解了波特率修改的过程,包括查找相关函数、初始化串口实例以及封装成调整波特率的函数。实验结果显示,串口支持最高921600波特率的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

ZYNQ开发系列——双串口打印以及串口波特率设置


前言

上一篇,我们遗留了这两个问题:
1、 如果我两个串口都想打印东西怎么弄
2、 串口的波特率如何修改,最大能支持多少
这一篇文章我们就来解决这个问题。

双串口打印

首先我们可以仿print的写法

void print(const char8 *ptr)
{
   
#if 
### Zynq 平台下 Linux 系统串口开发 #### 1. 配置 Linux 内核中的串口支持 为了使能Zynq平台上Linux系统的串口功能,需要确保内核已经配置了相应的串口驱动。通常情况下,Xilinx提供的预编译内核已经包含了这些必要的模块。 对于自定义内核而言,在`menuconfig`界面中应确认如下选项被选中: - `Device Drivers -> Character devices -> Serial drivers -> 8250/16550 and compatible serial support` 这一步骤可以保证系统启动时能够识别到UART设备并加载对应的驱动程序[^1]。 #### 2. 编写用户空间应用程序访问串口 当操作系统成功挂载了串口之后,开发者可以在用户态编写C/C++等高级语言的应用来操作该接口。下面给出一段简单的例子用于向指定端口发送消息以及接收来自外部的数据反馈。 ```c #include <stdio.h> #include <string.h> #include <unistd.h> #include <fcntl.h> /* File Control Options */ #include <errno.h> #include <termios.h> /* POSIX Terminal Control Definitions */ int main(int argc, char **argv){ int fd; struct termios options; // 打开/dev/ttyPS0 (假设这是你要使用的串口号) fd = open("/dev/ttyPS0", O_RDWR | O_NOCTTY ); if(fd<0){ perror("open error"); return -1; } tcgetattr(fd,&options); cfsetispeed(&options,B115200); // 设置波特率为115200bps cfsetospeed(&options,B115200); options.c_cflag |= (CLOCAL | CREAD); options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); tcsetattr(fd,TCSANOW,&options); write(fd,"Hello World!\r\n",strlen("Hello World!\r\n")); close(fd); } ``` 上述代码展示了如何通过标准POSIX API打开、配置和关闭一个特定的TTY设备节点(这里指代的是Zynq片上集成的PS7_UART)。注意这里的路径名应当根据实际硬件连接情况调整为正确的值[^3]。 #### 3. 实现基于shell框架下的命令行工具 除了直接调用底层API之外,还可以利用现有的嵌入式shell库快速搭建交互式的控制台应用。比如在高云FPGA系列教程里提到的方法就可以很好地适用于此场景——即创建自己的`shell_write()`回调函数处理输出逻辑,并将其注册给全局实例对象;同时提供初始化入口让用户能够在任意时刻激活这个服务[^2]。 ```c void userShellInit(void) { shell.write = userShellWrite; shellInit(&shell, shellBuffer, sizeof(shellBuffer)); } short userShellWrite(char *data, unsigned short len) { UART_SendString(UART0, data); return len; } ``` 这段代码片段说明了怎样把之前定义好的串行通信机制融入到更复杂的CLI环境中去,从而简化后续的功能扩展工作量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA十年老鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值