UART串口通信实验

一.通信种类

1.1按照数据通信方式

1.1.1串行通信

优点:占用的引脚少,成本低

缺点:传输速度慢

适用场合 :长距离、低速率的通信场合

1.1.2并行通信

优点:传输速率快

缺点:占用引脚多,成本高

适用场合:短距离的场合。

1.2按照数据传输方向

1.2.1单工通信:

数据只能沿一个方向传输。

1.2.2半双工通信:

数据可以沿两个方向传输,但需要分时进行。

1.2.3全双工通信:

数据可以同时进行双向传输。

1.3按数据同步方向分类

1.3.1同步通信

带时钟端口的数据传输

1.3.2异步通信

没有时钟端口,发送方和接收方使用各自的时钟控制数据的收发过程。

二.UART串口

含义:通用异步收发器,是一种串行数据总线,它在发送数据时将并行数据转换成串行数据来传输,在接收数据时将接收到的串行数据转换成并行数据。需要两根信号线来实现,一根用于串口发送,另外一根负责串口接收,两个设备间的TXD和RXD,必须交差连接。

1.物理层:接口类型,电平标准等

2.协议层:通信协议(包括数据格式、传输速率等)

UART 在发送或接收过程中的一帧数据由 4 部分组成,起始位、数据位、奇偶校验位和停止位 。

起始位:一帧的开始,必须保持一个低比特的低电平0.

数据位:传输的数据位,数据位可选5~8位,LSB在前,MSB在后。

校验位:可选位,占用一个比特位,也可以没有校验。

停止位:一帧的结束,必须有,可选占用0.5/1/1.5/2个比特位,保持逻辑高电平。

波特率:串口通信的速率用波特率表示,它表示每秒传输二进制数据的位数。单位是bps(位/秒).常用的波特率有 9600、19200、38400、 57600 以及 115200 等。

UART 负责完成数据的串并转换,而信号的传输则由外部驱动电路实现。电信号的传输过程有着不同的电平标准和接口规范,针对异步串行通信的接口标准有 RS232、RS422、RS485 等,它们定义了接口不同的电气特性,如 RS-232 是单端输入输出,而 RS-422/485 为差分输入输出
等。

三.实验任务

本节实验任务是上位机通过串口调试助手发送数据给启明星开发板,启明星开发板 PL 端通过 USB_UART 串口接收数据并将接收到的数据发送给上位机,完成串口数据环回。UART波特率:115200。停止位:1,数据位8,无校验位。

四.绘制系统框图

uart_rx模块中:uart_rxd是串口接收到的数据,uart_rx_done表示数据转换完成(数据由并行数据转为串行数据)。uart_rx_data表示转换完成后的串行数据。注意:接收到的并行数据是1位,转换后的串行数据是8位。

uart_tx模块中:uart_tx_dat表示转换完成的8位串行数据,uart_tx_en表示的是数据由并转串转换完成,uart_txd表示的是转换后的并行数据,uart_tx_busy表示的是数据由串转并正在转换中。

五.绘制波形图

因为uart_rxd是异步信号,并且起始位是低电平,这里需要捕捉下降沿变,因此需要对其打三拍进行处理,由此就可以得到数据接收起始位信号start_en信号,表示并行数据要来了,接下来可以进行并转串的工作了;

rx_flag表示并行数据转串行数据正在进行中,从start_en开始,到rx_cnt=9和baud_cnt到216结束。这里是因为避免该帧数据还没结束下帧数据起始位就来临的情况,因此把停止位控制在0.5个比特位;

baud_cnt:系统时钟为50Mhz,即50000000,而这里波特率选择115200,故50000000/115200=434,即传输一位数据需要434个系统时钟周期,故需要baud_cnt这个计数器。

rx_data:因为串行数据是8位,最好加个索引,方便找到某一位的数据,方便赋值。因此需要rx_cnt。

rx_data_t:转换好的串行数据。

uart_rx波形图

uart_tx_en:表示串行数据转换完毕,即uart_rx_done信号。

uart_data_t:暂存转换完成的串行数据位,便于后续传输。

baud_cnt:同上一样。

tx_cnt:同上一样。

uart_tx波形图

六.仿真

uart_rx仿真波形

uart_tx波形仿真

uart整体波形图

七.板级验证

打开串口调试工具

对需要调试的信号添加debug属性,将程序烧录到开发板上,串口助手中输入以下信息。

因为55 66 77的四位16进制码分别是 0101 0101 ,0110 0110,0111 0111.

相关推荐
不脱发的猴子2 小时前
Wireshark使用教程
网络·测试工具·wireshark
小羊在奋斗4 小时前
【Linux网络】NAT技术、DNS系统、五种IO模型
linux·网络·智能路由器
暴躁的小胡!!!6 小时前
Linux权限维持之协议后门(七)
linux·运维·服务器·网络·安全
遇见火星7 小时前
2025年Linux 安全与运维指南
网络
苏格拉真没有底7 小时前
python实现mqtt消息转Tcp消息
网络·python·tcp/ip
dxaiofcu7 小时前
双网卡电脑,IP地址漂移
linux·服务器·网络
煲冬瓜的程序猿9 小时前
BGP(三)联盟、反射器
网络·网络协议
Joeysoda9 小时前
JavaEE进阶(2) Spring Web MVC: Session 和 Cookie
java·前端·网络·spring·java-ee
暴躁的小胡!!!10 小时前
Linux权限维持之vim python 扩展后门(五)
linux·运维·服务器·网络·安全
圣圣不爱学习10 小时前
Calico-BGP FullMesh模式与RR模式 Day04
运维·网络