嵌入式系统中的通信总线协议详解
嵌入式系统中的通信总线协议详解
在嵌入式系统中,通信总线协议是实现设备间数据传输的基础。本文将介绍几种常见的通信总线协议,包括UART、RS232、RS485、IIC和SPI,帮助读者更好地理解它们的特点和应用场景。
UART
UART(Universal Asynchronous Receiver Transmitter)是一种通用的串行、异步通信总线,具有两条数据线,可以实现全双工的发送和接收。在嵌入式系统中,UART常用于主机与辅助设备之间的通信。
UART数据帧格式
接线方式
一般情况下,处理器中都会集成UART控制器,使用UART进行通信时只需对其内部的相关寄存器进行设置即可。设置引脚功能的实质是让引脚在芯片内部连接到某一个对应的控制器上。
UART存在的问题
- 电气接口不统一:UART只定义了信号的时序,未定义接口的电气特性;UART通信时一般直接采用使用处理器使用的电平,即TTL电平,但不同的处理器使用的电平存在差异,所以不同的处理器使用UART通信时一般不能直接相连;UART没有规定不同器件连接时连接器的标准,所以不同器件之间通过UART通信时连接很不方便;
- 抗干扰能力差:UART一般直接采用TTL信号来表示0和1,但TTL信号的抗干扰能力较差,数据在传输过程中很容易出错;
- 通信距离极短:由于TTL信号的抗干扰能力较差,所以其通信距离也很短(3米内),一般只能用于一个电路板上的两个芯片之间的通信。
RS232协议
RS232协议是串行通讯的标准,规定采用一个标准的连接器,标准中对连接器的每个引脚的作用加以规定,还对信号的电平加以规定。RS232协议支持点对点通信,在电气层提高信号电平,增大通信距离,编程与UART无异。
- 接口:采用DB-9连接器,当前工业控制的RS232接口一般只使用RXD、TXD、GND三条线。
- 信号:规定逻辑“1”的电平为-5V到-15V,逻辑“0”的电平为+5V到+15V,该标准提高抗干扰能力,增大通信距离,其传送距离一般可达15m。
- 电平转换:处理器产生的TTL信号并不是符合RS232标准的信号,需要在处理器外部去添加电路对信号的电平进行转换(如:MAX232芯片实现TTL信号与RS232信号转换)。
RS485协议
RS485协议使用RS485标准协议的通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号(传输距离可达1500m);该标准允许连接多个收发器,即具有多站能力,因此可利用单一的RS485接口方便地建立一个设备网络。
- 信号:采用差分信号进行数据传输,两线间的电压差为+2v到+6v表示逻辑“1” ,-2v到-6v表示逻辑“0” ;信号电平与TTL电平兼容,可方便与TTL电路连接。
- 接口:采用两线制(双绞线),这种接线方式为总线式拓扑结构;半双工(主机控制总线上的数据收发)
- 电平转换:处理器产生的TTL信号并不是符合RS485标准的信号,需要在处理器外部去添加电路将TTL信号转换成差分信号(如:MAX485芯片)
IIC
IIC(Inter-Integrated Circuit)总线是一种串行、半双工总线,主要用于近距离、低速的芯片之间的通信。IIC总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步。
IIC总线是一种多主机总线;主机发起和结束一次通信,从机等待被主机呼叫;当多个主机同时启用总线时,IIC具备冲突检测和仲裁的功能来防止错误产生。
IIC总线通信过程
- 主机发送起始信号启用总线
- 主机发送一个字节数据指明从机地址(7bit)和后续字节(1bit:0下行,1上行)的传送方向
- 被寻址的从机发送应答信号回应主机
- 发送器发送一个字节数据
- 接收器发送应答信号回应发送器
(......循环步骤4、5,通信完成后主机发送停止信号释放总线)
SPI
SPI(Serial Peripheral Interface,串行外设接口)是一种高速的、全双工、同步的串行通信总线;采用主从方式工作;SPI至少需要4根线,分别为MISO(主设备输入、从设备输出)、MOSI(主设备输出、从设备输入)、SCLK(时钟)、CS(片选)。
总结
本文介绍了几种常见的嵌入式系统通信总线协议,包括UART、RS232、RS485、IIC和SPI。这些协议各有特点和适用场景,选择合适的通信协议对于嵌入式系统的设计至关重要。