《UART串口通讯协议》
1.UART定义
UART 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种通用的串行异步全双工数据收发传输器(总线)。
2.UART作用
UART的作用是:把“要传输的数据”在串行通信与并行通信之间转换。在嵌入式领域,作为把并行信号转成串行信号的硬件设备,UART通常被集成于MCU内部。(MCU内部传输数据可能是并行,串口出来的因为只有一条线(TX),因此是串行)
3.UART和USART
UART:universal asynchronous receiver and transmitter 通用异步收/发器,即串行异步全双工收发器。
USART:universal synchronous asynchronous receiver and transmitter 通用同步/异步收/发器,即串行异步/同步全双工收发器。
从名字上可以看出,USART在UART基础上增加了同步功能,即USART是UART的增强型。其实当我们使用USART在异步通信的时候,它与UART没有什么区别,但是用在同步通信的时候,区别就很明显了。大家都知道同步通信需要时钟来触发数据传输,也就是说USART相对UART的区别之一就是能提供主动时钟。
UART管脚定义:TX、RX、GND; USART管脚定义:TX、RX、GND、SCLK。
4.UART通讯协议
4.1 波特率
一般选波特率都会有9600,19200,115200等选项。其实意思就是每秒传输这么多个比特位数(bit)。
4.2 起始位
先发出一个逻辑”0”的信号,表示传输数据的开始。
4.3 数据位
可以选择的值有5,6,7,8这四个值,可以传输这么多个值为0或者1的bit位。这个参数最好为8,因为如果此值为其他的值时当你传输的是ASCII值时一般解析肯定会出问题。理由很简单,一个ASCII字符值为8位,如果一帧的数据位为7,那么还有一位就是不确定的值,这样就会出错。
4.4 校验位
数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。就比如传输“A”(01000001)为例。
(1)、当为奇数校验:”A”字符的8个bit位中有两个1,那么奇偶校验位为1才能满足1的个数为奇数(奇校验)。图-1的波形就是这种情况。
(2)、当为偶数校验:”A”字符的8个bit位中有两个1,那么奇偶校验位为0才能满足1的个数为偶数(偶校验)。
(3)、此位还可以去除,即不需要奇偶校验位。
4.5 停止位
它是一帧数据的结束标志。可以是1bit、1.5bit、2bit的空闲电平。可能大家会觉得很奇怪,怎么会有1.5位~没错,确实有的。所以我在生产此uart信号时用两个波形点来表示一个bit。
4.6 空闲位
没有数据传输时线路上的电平状态。为逻辑1。
4.7 传输方向
从低位在前,高位在后的传输方式。
发送的数据是0x21。0b0010,0001,实际发送应该是1000 0100
4.8 uart传输数据顺序
刚开始传输一个起始位,接着传输数据位,接着传输校验位(可不需要此位),最后传输停止位。这样一帧的数据就传输完了。接下来接着像这样一直传送。在这里还要说一个参数
4.9 帧间隔 ?
即传送数据的帧与帧之间的间隔大小,可以以位为计量也可以用时间(知道波特率那么位数和时间可以换算)。比如传送”A”完后,这为一帧数据,再传”B”,那么A与B之间的间隔即为帧间隔。