UART简介
在嵌入式系统、工控设备及智能硬件通信领域,串口协议凭借其简洁高效的特性,长期占据重要地位。UART 全称Universal Asynchronous Receiver Transmitter,翻译成中文为“通用异步接收器发送器”,是一种通用的串行、异步通讯总线。该总线有两条数据线,可以实现全双工的发送和接受。
UART帧格式
起始位(1bit)+数据位(5-9 bit)+校验位(0/1 bit)+停止位(1-2 bit)
数据位:ASCII字符通常用8bit,二进制数可以自定义长度
校验机制:奇偶校验,工业场景中多用无校验
波特率:常见 9600、115200bps,需通信双方严格匹配
硬件连接:TXD接RXD
RS232和RS485
RS232
UART只是对信号的时序进行了定义,而对于接口的电气特性并没有定义:
1. 高电平电压无统一标准:UART 仅规定 “1”“0” 的逻辑含义,未约束电压值。比如有些处理器定义的高电平为5V,而另一些定义的高电平为3.3V;
2. 连接器标准缺失:UART 未定义物理接口形态;
3. 抗干扰能力差,距离短,一般只能用于一块电路板上两个不同芯片的通信;
综上,工程上很少用串口直接通信,需要再电气层做一些补充。由此引出RS232协议和RS485协议。
RS232是由电子工业协会(EIA)制定,常作为设备间(如计算机与外设、工控设备等 )数据传输的物理层协议,该协议规定了一个标准的连接器,规定了尺寸、引脚数量且对每个引脚的作用加以规定,还对信号的电平加以规定。
RS232一般为9根线,我们现在使用RS232时,一般只用3根线,即RXD、TXD和GND。
在232协议中,-3V~-15V定义为逻辑“1”,+3V到+15V定义为逻辑“0”。这样逻辑“1”“0”对于电压的范围都比较宽,例如原本发送的+5V通信过程中收到干扰变成了4.5V,不影响发送的数据,因此可以提高抗干扰能力,增大通信距离,其传输距离一般可达15m。
RS232电平转换
处理器一般会集成UART控制器,但是处理器产生的信号一般都是TTL信号,并不符合RS232的标准,因此一般我们还需要再处理器外部添加电平转换芯片,例如MAX232芯片。
RS485
RS485由电信行业协会和电子工业联盟定义,该标准允许连接多个收发器,一个485总线上可以挂载多个设备。而RS232只能实现点对点的发送。
RS485采用差分信号传输,两线间电压差-2v~-6v表示“0”,+2v~+6v表示“1”。差分信号抗干扰能力更强,因为外界的干扰往往会同时作用到两根线上,而接收端只关心两个信号的差值,所以外界的共模噪声可以被完全抵消,RS485的通信距离可达到1500m。
因为采用两线制,发送和接收都要使用这对差分信号线,发送和接收不能同时进行,所以只能采用半双工。
485电平转换
处理器产生的信号一般都是TTL信号,并不符合RS485的标准,因此一般我们还需要再处理器外部添加电平转换芯片,将TTL信号转换成差分的符合485协议的信号,例如ISO308x系列芯片。