透查本质

现在我们用的三线uart相比其他的DB9,等多线接口简单的很多。所以考虑的时候还需要考虑以前的接口设计。不然很多设计点是想不到的。

  1. 数据传输最基本的肯定是要有一根数据线。
  2. 然后如果是全双工的,至少要分开TXRX
  3. 那么对于这种单独依靠电平传输的,还需要有一根GND去保证电平的参考。
  4. 如何确定什么时候开始传输,什么时候结束传输。所以需要有开始信号和结束信号。
  5. 没有时钟线,则需要双方约定好波特率。

可选

  1. 不同的设备,电平标准不一样,所以有时候需要有电平转换电路。
  2. 可能需要精准的时序,所以需要有RTSCTS等流控制。

协议

常用的有两种数据帧格式

  1. 起始位+数据位+校验位+停止位+空闲位
  2. 起始位+数据位+停止位+空闲位

特性

  1. 默认低位先传输。
  2. 空闲位有助于接收方判断数据传输的开始和结束。因为时钟同步是通过起始位的电平变化来同步的。
  3. 校验位可以有,也可以没有。而且奇偶校验漏检率很高。往往校验都做在应用层。
  4. uart可以设置过采样来保证数据位的准确性。(其实就是在一个数据位内,采样很多次)

补充

现在的uart几乎都会有硬件fifo去减少cpu中断触发的次数,例如一次写16个字节给fifo。然后由uart模块自己去读取。还有用dma+fifo的。

波特率 >= 比特率

参考链接

UART历史

https://zhuanlan.zhihu.com/p/657771076

https://blog.csdn.net/yueqiu693/article/details/120868246