一.通信种类
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.