1. UART
UART(Universal asynchronous receiver / transmitter) 是一种简单的异步全双工串口通信协议,用于两个设备之间相互通信。他只需要连接三根线,分别为 RX
, TX
与 GDN
。
假设 A 与 B 需要通过 UART 进行通信,在 A 与 B 都接地的情况下,A 只需要将自身的 RX 和 TX 分别与 B 的 TX 和 RX 相连既可以开始通信。
在使用 UART 进行通信的时候,一个 UART 数据单位一般包含5个部分,分别位起始位、数据位、奇偶校验位以及停止位。
-
起始位
RX 引脚的初始状态为高电平,起始位一般为低电平,对端检测到 RX 引脚上为低电平的时候就知道开始传输数据了。
-
数据位
数据位就是传输的具体数据信息。
-
奇偶校验位
由于在数据传输过程中可能存在干扰,导致数据可能有部分失真,这里的奇偶校验位可以对数据进行简单校验。这个字段是可选的。
-
停止位
停止位用于表示数据已经传输完成了,停止位电平与初始状态一致位高电平。
由于 UART 是异步通信协议,没有时钟同步发送与接收的速率,所以发送方与接收方需要一起约定一个速率。这个速率一般用波特率(Baud Rate)来表示,波特率是指每秒发送了多少个数据单位。比如波特率为 9600 就是指每秒可以发送 9600 个数据单位。
还有一点需要注意的是 UART 采用的是 TTL 电平标准,其中 0 ~ 0.8V 被认为位低电平,2 ~ 5V 被认为为高电平。
2. RS-232
RS 232 相当于 UART 的增强版,由于 UART 采用的是 TTL 电平,高电平与低电平之间相差的比较小,抗干扰能力较差,所以新出一个 RS 232 标准。他与 UART 的唯一差别在于高低电平的标准不一样,其低电平为范围为:-3~-15V,高电平范围为:+3 ~ +15 V。
3. RS-485
RS 485 是 RS 232 的增强版,但是电平的判断不一样了,RS-485 采用差分信号,当 A 电压大于 B 的时候表示逻辑0,A 小于 B 的时候表示逻辑 1。
不过由于电平修改为差分信号,RS-485 无法进行全双工通信了,只能进行半双工通信。