常见通信协议总结

2024-04-09 1567阅读

本文深入而全面地概述了嵌入式领域内七种经典串行通信协议:UART、RS232、RS485、I2C、SPI、CAN和I2S。这些协议能够适应不同的应用需求,包括通信速度、传输距离、系统复杂度和成本等多个方面。

一、UART

通用异步收发器(Universal Asynchronous Receiver Transmitter),常见的串行、异步通信总线,两条数据线Tx、Rx,实现全双工通信,常用于主机与外设的通信,点对点。

UART帧格式:

常见通信协议总结

关键点:

  • 串行、异步
  • 需要双方约定好传输的波特率(因为没有时钟线)
  • 空闲位是高位
  • 不能连续发数据,一次最多发5-8位(防止误差累计,因为没有时钟线)

    TX接RX,RX接TX

    常见通信协议总结

    一般串口监视器里面,设置好这几个参数就行,默认是这样,基本就改改波特率。

    常见通信协议总结

    二、IIC

    串行、半双工。两根线SDA(数据线)、SCL(时钟线)
    近距离、低速,硬件结构简单,成本低。

    最大特点:多主机!

    常见通信协议总结

    主机有权发起和结束一次通信,从机只能被主机呼叫。

    主线上有多个主机时,IIC具备冲突检测和仲裁功能。

    每个IIC总线上的器件都有一个唯一的地址(7bit),每个器件可以作为主机也可以作为从机(同一时间只能有一个主机)

    I2C通信过程

    1. 主机发送起始信号启用总线(其他主机收到后就知道现在总线被占用)
    2. 主机发送一个字节数据指明从机地址(7bit)和后续字节的传送方向(1bit,0:主到从,1:从到主)
    3. 被寻址的从机发送应答信号回应主机
    4. 发送器发送一个字节数据
    5. 接收器发送应答信号回应发送器 (循环步骤4、5)
    6. 通信完成后主机发送停止信号释放总线

    寻址方式(主机给从机发的第一个字节数据):

    常见通信协议总结

    一次通信时发送器可以发任意多个字节数据给接收器。上面第一个字节数据的最后一位决定了发送器是主机还是从机。

    IIC具体通信过程

    空闲时SCL和SDA都是高电平

    常见通信协议总结

    规定每次传一个字节(8bit),先发高位,

    常见通信协议总结

    发送器发完一个字节后,接收器必须发送1位应答位,所以一帧共有9位。应答位为低电平。

    同步信号:
    SCL为低电平时,发送器向数据线发一位数据,在此期间数据线上信号允许发送变化。
    SCL为高电平时,接收器从数据线读取一位数据,在此期间数据线上信号要稳定。

    典型I2C时序

    常见通信协议总结

    A表示应答,A非表示非应答,S表示起始信号,P表示终止信号

    三、SPI

    Serial Peripheral Interface(SPI),串行外设接口
    高速、全双工、同步

    一个主机,若干个从机

    常见通信协议总结

    至少4根线:

    MISO(master in server out)

    MOSI(master out server in)

    SCLK(时钟)

    CS (片选,通过使能它来选中不同的从机,有n个从机,主机就需要n条CS线)

    SPI具体通信过程

    先发高位 (MSB:most significant bit,LSB:least significant bit)

    常见通信协议总结

    SPI传完一个字节后,不需要应答!可以直接发下一个字节。
    没有起始信号,也没有终止信号!

    CLK下降沿发数据,上升沿收数据

    或者

    CLK上升沿发数据,下降沿收数据

    (由极性和相位一起决定)

    SPI极性和相位

    SPI总线有四种不同的工作模式,取决于极性(CPOL) 和 相位(CPHL) 这两个因素。为了满足不同场合,不同芯片的需求。

    CPOL表示SCLK空闲时的状态

    CPOL=0,空闲时SCLK为低电平

    CPOL=1,空闲时SCLK为高电平

    CPHA表示采样时刻

    CPHA=0,每个周期的第一个时钟沿采样

    CPHA=1,每个周期的第二个时钟沿采样

    常见通信协议总结

    I2C与SPI异同

    相同点:

    1. 串行、同步
    2. TTL电平,传输距离不长
    3. 主从方式

    不同点:

    1. I2C为半双工,SPI全双工
    2. I2C有应答,SPI无应答
    3. 寻址方式:I2C通过向总线广播从机地址寻址,SPI通过使能不同CS引脚寻址
    4. I2C时钟极性和相位固定,SPI有4种模式

    因为SPI无应答、快速寻址等优势,所以SPI速率比I2C快很多,几M到几十Mbps。

    I2C一般几百kbps,超高速模式下能5Mbps。

    UART的问题

    1. 电气接口不统一

    UART只是对信号的时序进行了定义,而未定义接口的电气特性;UART通信时一般直接使用处理器使用的电平,即TTL电平,但不同的处理器使用的电平存在差异, 高电平和低电平的具体定义不一样,所以不同的处理器使用UART通信时一般不能直接相连。

    2. 抗干扰能力差,通信距离短

    TTL信号表示0和1,数据传输的时候很容易出错,最多1、2m。

    只能用于一个电路板上两个不同芯片之间的通信。

    四、RS232

    用于串行通讯的标准。

    依赖UART串口协议,在电气层面做处理,统一了标准,能传得更远和更快。编程的话没有任何区别,就是串口通信。

    RS232的问题:

    1. 接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容,所以需要使用电平转换芯片才能与TTL电路连接。
    2. 通信速度较低,易产生共模干扰,抗噪声干扰性较弱,传输距离较短(15m)

    五、RS485

    与RS232类似,也是个基于串口的标准,但是是半双工。

    与RS232相比最大特点:远距离(1500m),抗干扰强,速度更快(几百kbps到10 Mbps),允许接收多个收发器(可以组建设备网络)

    常见通信协议总结

    使用差分信号进行数据传输,有效减少共模干扰,因为外部电磁干扰会同时影响到这两条线,而差分信号的接收方只关心两条线之间的电压差,从而有效抵消了干扰。(通信用双绞线,抗干扰强)

    高电平(逻辑1):两线之间电压差为+2v到+6v

    低电平(逻辑0):两线之间电压差为-2v到-6v

    采用两线制,因为用的差分信号,所以两根线表示一个信号,只能半双工。是不是感觉和I2C很像?只是I2C规定好了主机怎么管理从机,在编程RS485时完全可以仿照I2C的主从逻辑,避免冲突。

    一般也还是要在MCU后接一个TTL转485的芯片(单端传差分),比如MAX485

    六、CAN

    CAN(Controller Area Network,控制器局域网)总线协议是一种高度可靠的、多主机的消息广播系统,广泛用于汽车和工业自动化领域进行设备之间的通信。

    常见通信协议总结

    汽车中最小的控制模块叫ECU

    常见通信协议总结

    CAN总线大大促进了ECU之间的高效通讯

    常见通信协议总结

    CAN像RS485一样采用差分信号通信,双线制(CAN_High,CAN_Low)物理上用双绞线,抗干扰强

    常见通信协议总结

    MCU与外界需要一个TTL转CAN信号的芯片(单端转差分)

    常见通信协议总结

    CAN总线数据帧

    常见通信协议总结

    有11位识别码,区分多达2048个设备;

    RTR为了区分数据帧或远程请求帧;

    控制码有6位,第一位区分标准帧和拓展帧(识别位有29位),第二位是空闲位,接下来4为是DLC,控制数据码的长度,0001表示数据有8位,1000表示数据有64位;

    CRC是循环冗余校验码,检测到错误时会自动重传;

    CRC界定符为了把后面信息隔开;

    后面2位分别是ACK(接收1则发送0)和ACK界定符;

    最后7位是结束位;

    优先级控制: CAN协议通过识别码实现优先级控制。ID较低的消息具有较高的优先级,能够在网络忙时优先传输。

    CAN总线的数据传输速率可根据网络长度和节点数进行调整,一般情况下,速率可以从几kbps到1Mbps不等

    位定时

    数据在CAN总线上的传输和采样过程涉及到位定时(Bit Timing),这是确保数据准确同步和传输的关键因素。

    位定时包括若干部分,如同步段、传播时间段、相位缓冲段1和相位缓冲段2,其中采样点(Sample Point)是位时间内的一个特定点,用于决定何时对传输的位进行采样。

    在CAN协议中,数据位的采样通常发生在位时间的某个固定点上,这个点被配置为尽可能靠近位时间结束前,以允许信号在总线上传播并稳定。这意味着数据的采样不直接依赖于时钟信号的上升沿或下降沿,而是依赖于位时间内预先配置的采样点。

    常见通信协议总结

    常见通信协议总结

    由于CAN总线使用非归零(Non-Return to Zero, NRZ)编码,连续的位之间没有自动的同步点(例如,没有时钟信号的显式传输),因此,CAN总线协议通过硬件和位定时配置来确保所有节点在位时间内正确地同步和采样数据。

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]