UART
透查本质
现在我们用的三线uart相比其他的DB9,等多线接口简单的很多。所以考虑的时候还需要考虑以前的接口设计。不然很多设计点是想不到的。
- 数据传输最基本的肯定是要有一根数据线。
- 然后如果是全双工的,至少要分开
TX和RX。 - 那么对于这种单独依靠电平传输的,还需要有一根
GND去保证电平的参考。 - 如何确定什么时候开始传输,什么时候结束传输。所以需要有开始信号和结束信号。
- 没有时钟线,则需要双方约定好波特率。
可选
- 不同的设备,电平标准不一样,所以有时候需要有电平转换电路。
- 可能需要精准的时序,所以需要有
RTS和CTS等流控制。
协议
常用的有两种数据帧格式
- 起始位+数据位+校验位+停止位+空闲位
- 起始位+数据位+停止位+空闲位
特性
- 默认低位先传输。
- 空闲位有助于接收方判断数据传输的开始和结束。因为时钟同步是通过起始位的电平变化来同步的。
- 校验位可以有,也可以没有。而且奇偶校验漏检率很高。往往校验都做在应用层。
- uart可以设置过采样来保证数据位的准确性。(其实就是在一个数据位内,采样很多次)
补充
现在的uart几乎都会有硬件fifo去减少cpu中断触发的次数,例如一次写16个字节给fifo。然后由uart模块自己去读取。还有用dma+fifo的。
波特率 >= 比特率
参考链接
