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.

相关推荐
道法自然04025 分钟前
Ethernet 系列(8)-- 基础学习::ARP
网络·学习·智能路由器
EasyCVR1 小时前
萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
运维·服务器·网络·人工智能·ffmpeg·音视频
明月看潮生2 小时前
青少年编程与数学 02-003 Go语言网络编程 15课题、Go语言URL编程
开发语言·网络·青少年编程·golang·编程与数学
龙哥说跨境3 小时前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
懒大王就是我3 小时前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
Elaine2023913 小时前
06 网络编程基础
java·网络
海绵波波1074 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
热爱跑步的恒川7 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面8 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
音徽编程10 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust