UART/RS485/RS232
RS485和RS232是物理总线。
RS232
- 传输距离大概15米左右
- 只允许一对一通信
- 全双工
RS485
- 传输距离大概1200米
- 总线上允许接多达32个发射器和43个接收器
- 半双工
UART
UART是基于RS485/RS232/USB等物理层上层通信协议。全双工和半双工是物理链路决定的(有的应用层协议也有要求,比如modbus),和UART无关。
UART的工作原理是将要传输的数据一位接一位地传输。数据包格式如下:
数据包由起始位、数据帧、奇偶校验位和停止位组成。其中每一位(bit)的意义如下:
起始位:发出一个逻辑0的信号,表示传输字符的开始,平时不传输时一直处于高电平,即逻辑1。
数据位:紧接着起始位之后,数据位的个数可以是5~8,从最低位开始传如果不使用奇偶校验位,数据帧长度可以9位。
奇偶校验位:数据位加上这一位后,使得1的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确行。
停止位:表述数据包的结束。可以是1位、1.5位、2位的高电平。停止位有两个作用,一个是结束标志,另一个是做时钟校准。
- 发送数据过程
空闲状态,线路处于高电平;当收到发送数据指令后,拉低线路一个数据位的时间T,接着数据按低位到高位依次发送,数据发送完毕后,接着发送奇偶校验位和停止位(停止位为高电平),一帧数据发送结束。
- 数据接收过程
空闲状态,线路处于高电平;当检测到线路的下降沿(线路电位由高变为低)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶检验位是否正确,如果正确则通知后续设备准备接收数据或存入缓存。
- 奇校验和偶校验原理
奇校验
当数据位中“1”的个数为奇数时,校验位为“0”,否则为“1”。
偶校验
当数据位中“1”的个数为偶数时,校验位为“0”,否则为“1”。