串口通信作为最常用通讯协议是每一个工程师需要掌握的基本知识,本章将详细介绍串口基本理论知识。
串口通信有两根通讯线,一根接收数据(uart_rxd),一根输出数据(uart_txd),串口传输速度单位为波特率,bps代表每秒钟传输的二进制数的位数。常用的波特率有9600bps,38400bps,115200bps。
如下图所示为串口通信时序图:
图1 串口时序图
总线接收数据时序解析:
1、空闲状态总线处于高电平,起始位为1个bit低电平;
2、紧接着传输8bit数据位,小端传输(从最低位开始传输);
3、奇偶校验位主要验证链路传输是否有误,如果奇偶校验位为 0(偶数奇偶校验),则数据帧中的 1 或逻辑高位总计应为偶数。如果奇偶校验位为 1(奇数奇偶校验),则数据帧中的 1 或逻辑高位总计应为奇数。通常设计中选择无奇偶校验位,传输数据会另外加帧做数据接收判断。
4、停止位,通常选用一1个bit高电平作为结束位。
综上所述通常情况下传输一个Byte(8个bit数据)需要10位,起始位(1bit)+数据位(8bit)+结束位(1bit)。而如果添加奇偶校验则需要传输11位。
如下图所示为FPGA实现串口仿真图:
图2 FPGA 串口仿真
如上图所示信号定义如下:
en_flag:输出数据有效信号;
uart_din:输出数据;
tx_cnt:输出bit标志位,0~9代表10个bit位;
uart_txd:串口输出信号。
en_flag输出一个工作时钟周期(100MHz)有效位代表uart_din数据有效,输出数据为0x12,串口开始输出1bit起始位(0),紧接着输出0100_1000数据,再输出1bit结束位(1);串口数据传输结束。
以上为串口通信理论知识,如有疑问可以留言。