常用通信协议—SART、I2C、SPI、CAN

0、写在前面

        UART、I2C和SPI是我们在嵌入式开发中比较常见的通信协议了,没有最好的通信协议,每个通信协议都有自己的优缺点。如果想要通信速度快,SPI 将是理想的选择;如果用户想要连接多个设备而不是过于复杂,I2C 将是理想的选择,因为它最多可以连接 127 个设备并且易于管理;UART的通信速度相对较慢,通信也比较简单,单对单。

        uart接口比较常用于主设备与蓝牙、wifi模块的通信、打印调试等。

        i2c接口多用于和传感器的通信,例如触摸屏、计步器、温度传感器、EEPROM等。

        spi接口多用于对速率要求高一些的场景,如spi flash、spi lcd屏、SD卡等。

        can接口多用于高可靠性和实时性通信的场景中,如汽车工业,工业控制,机器人技术等。

 

部分名词解释

        双向:双向传输。

        串行:按位(bit)顺序传输数据。

        并行:多个数据位同时通过多条并行信道进行传输。

        异步,同步:异步通信是指通信过程中发送方和接收方没有同步的时序限制,即它们可以独立于对方进行操作。与同步通信不同,同步通信中必须等待另一端的响应才能继续执行其他任务,而异步通信则允许发送方发送数据后继续执行其他任务,而无需等待接收方的响应。

1、UART

        UART是一种双向、串行、异步的通信总线。它规定了数据如何在发送端和接收端之间以串行方式传输。UART通信不需要双方共享时钟信号,而是通过起始位、数据位、校验位(可选)和停止位来同步数据。

        在UART通信中,发送端将待发送的数据(通常是并行数据)转换为串行数据,并通过TX(发送)引脚发送到数据线上。接收端则通过RX(接收)引脚从数据线上接收串行数据,并将其转换回并行数据。这种转换过程是通过UART芯片或电路实现的。

    关键元素
  1. 波特率:波特率是指每秒钟传输的比特数,它决定了数据传输的速率。UART通信中常用的波特率有9600、19200、38400、57600、115200等。
  2. 数据位:数据位是指每个字符中包含的比特数。UART通信通常使用8位或9位数据位。
  3. 校验位:校验位用于检测数据传输的正确性。UART通信中可以使用奇校验、偶校验或无校验。校验位是可选的,取决于通信双方的约定。
  4. 停止位:停止位用于指示一个字符的结束。UART通信中常用的停止位是1位或2位。停止位可以确保接收端有足够的时间来识别字符的结束,并准备接收下一个字符。
UART的通信过程
  1. 发送过程:当发送端要发送数据时,它首先会生成一个起始位(通常为逻辑0),然后发送数据位(8位或9位),接着是可选的校验位(如果有的话),最后是停止位(1位或2位)。这些数据位和控制位一起构成了一个完整的数据帧。
  2. 接收过程:接收端在检测到起始位后,会开始接收随后的数据位和控制位。当接收到停止位时,接收端会知道一个字符的传输已经结束,并准备接收下一个字符。

综上所述,UART是一种重要的串行通信接口标准,在嵌入式系统和设备中得到了广泛应用。 

 2、I2C

        IIC是一种串行通信总线,使用多主从架构,通过两根信号线(SDA和SCL)进行通信。SDA是串行数据线,用于传输数据;SCL是串行时钟线,用于同步通信的时钟信号。

        IIC通信通过电平变化来传输数据和时钟信号。主设备通过控制SCL和SDA的电平状态来发起通信、发送数据或接收数据。从设备则根据SCL的时钟信号和SDA的数据信号来进行相应的响应。

IIC的主要特性
  1. 节省引脚资源:IIC通信只需要两根信号线(SDA和SCL),相比其他通信协议可以节省引脚资源的使用。
  2. 简单灵活:IIC通信协议具有简单的传输方式和灵活的应用场景,可以适应不同设备之间的通信需求。
  3. 速度较快:IIC通信协议可以实现高速数据传输,一般可以达到400kHz的传输速度,甚至更高(如Fast Mode Plus的1 Mbps和High-Speed Mode的3.4 Mbps)。
  4. 多主从结构:IIC支持多主多从的拓扑结构,允许多个设备在同一总线上共享通信资源。
  5. 自动应答:IIC总线上的所有器件都具有“自动应答”功能,保证数据传输的正确性。
IIC的硬件结构
  • 总线结构:IIC总线由SDA和SCL两根信号线组成,所有参与通信的设备都通过这两根线连接到总线上。
  • 上拉电阻:IIC总线上所有器件的SDA、SCL引脚输出驱动都为开漏(OD)结构,通过外接上拉电阻实现总线上所有节点SDA、SCL信号的线与逻辑关系。
IIC的工作时序
  • 开始和结束信号:开始信号(START/S)是在SCL为高时,SDA从高到低的跳变产生的;结束信号(STOP/P)是在SCL为高时,SDA从低到高的跳变产生的。
  • 数据传输:在SCL为高电平时,SDA线上的数据必须保持稳定;在SCL为低电平时,SDA线上的数据可以改变。每个SCL脉冲的高电平传递1位数据。
  • 应答信号:每个字节(8位)数据传送完后紧跟着应答信号(ACK,第9位)。当第9位为低电平时,表示应答(ACK);为高电平时,表示非应答(NACK)。

综上所述,IIC是一种简单、高效、灵活的串行通信协议,广泛应用于各种电子设备之间的通信。随着技术的不断进步和应用需求的增加,IIC通信协议也在不断发展和完善。 

3、SPI

        SPI是一种高速、全双工、同步的通信协议,允许一个主设备(Master)通过一个或多个从设备(Slave)进行通信,从而实现对从设备的控制和数据交换。 

SPI的硬件结构
  • 信号线:SPI通信需要四根信号线,分别是:
    • SCK(Serial Clock):时钟信号线,用于同步主设备和从设备之间的数据传输。
    • MOSI(Master Out Slave In):主设备输出从设备输入的信号线,用于主设备向从设备发送数据。
    • MISO(Master In Slave Out):主设备输入从设备输出的信号线,用于从设备向主设备发送数据。
    • SCS(Slave Select)/CS(Chip Select):从设备选择信号线/芯片选择信号线,用于选择特定的从设备进行通信。
  • 工作模式:SPI有两种工作模式,即主模式和从模式。主设备负责发起通信并控制通信的时序和数据传输,而从设备则受主设备的控制进行通信。
SPI的通信原理
  • 通信过程
    1. 通信开始时,主设备先选择要进行通信的从设备,将SCS/CS线置为低电平,表示选择该从设备。
    2. 主设备通过SCK线提供时钟信号,用于同步数据传输。时钟信号的边沿(上升沿或下降沿)用于采样请求和响应的数据。
    3. 主设备通过MOSI线向从设备发送数据,同时通过MISO线接收从设备发送的数据。
    4. 数据传输结束后,主设备将SCS/CS线置为高电平,表示通信结束。
  • 数据传输格式:SPI支持两种数据传输格式,即高位先行(MSB first)和低位先行(LSB first)。每个字节的数据按照位顺序逐位传输,先传输最高有效位,然后是次高有效位,依此类推,直到最低有效位传输完毕。

 综上所述,SPI是一种高效、灵活的串行通信协议,在嵌入式系统和各种电子设备中得到了广泛应用。然而,在使用时也需要注意其局限性和特点,以便更好地发挥其优势并避免潜在的问题。

 4、CAN通信

CAN总线协议是一种串行通信协议,主要用于实现设备之间的实时、高效、可靠的数据传输。它采用差分信号传输,具有抗干扰能力强、可靠性高的特点。

主要特点
  1. 高可靠性:CAN总线采用差分信号传输,能够有效抑制电磁干扰和信号衰减,确保通信的可靠性。
  2. 高灵活性:CAN总线网络中的节点可以随时加入或离开网络,具有很好的扩展性。同时,CAN协议支持多主控制,多个节点可以在同一总线上竞争发送数据。
  3. 高实时性:CAN总线具有优先级控制机制,能够确保关键信息实时传输,满足实时控制的需求。
  4. 传输距离远:CAN总线支持长距离通信,最大传输距离可达1km(在开环总线网络中)。
  5. 低成本:相对于其他通信协议,CAN总线的硬件成本较低,易于实现和维护。
工作原理

CAN协议的数据传输基于消息的概念,每个消息由一个唯一的标识符(ID)和其对应的数据组成。在CAN总线上,所有节点都连接在一个共享的双线路总线上(CAN_H和CAN_L),通过差分信号传输数据。每个节点都可以发送和接收消息,通过识别消息的ID来确定消息的发送者和接收者。

CAN协议支持两种消息类型:数据帧(Data Frame)和远程帧(Remote Frame)。数据帧用于实际数据的传输,而远程帧则用于请求其他节点发送数据。在发送消息时,节点会竞争总线使用权,优先级高的节点将发送成功,而优先级低的节点将放弃发送并转入接收模式。

\0、总结 

USART(通用同步异步收发器):

  • USART结合了同步和异步通信的功能,是一个灵活的串行通信设备。
  • 它可以根据需求配置为同步模式或异步模式,异步模式即为UART。
  • USART通过提供小数波特率发生器系统,可以实现精确的波特率控制。
  • UART(通用异步收发传输器):

UART是一种异步串行通信协议,广泛应用于各种设备之间的数据传输。

  • 它通过TX(发送)和RX(接收)两条信号线实现全双工通信。
  • UART通信协议简单,不需要时钟信号,且可以通过调整波特率、数据位数以及校验位来满足不同的通信需求。

I2C(Inter-Integrated Circuit):

  • I2C是一种双向、串行、同步的通信协议,由Philips公司开发。
  • 它使用两根线进行通信:SCL(时钟线)和SDA(数据线)。
  • I2C支持多主设备和多从设备,每个设备具有唯一地址,通过地址识别实现数据的发送和接收。
  • 主设备控制时钟线,负责同步数据传输的时序。

SPI(Serial Peripheral Interface):

  • SPI是Motorola公司推出的一种同步串行接口技术。
  • 它以主从方式工作,需要至少四条线:SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。
  • SPI通信是高速、全双工、同步的,适用于高速数据传输的场景。
  • 当有多个从设备时,可以通过片选信号选择与主设备进行通信的从设备。
 相关知识:
  • 串行通信:是一种数据一位一位按顺序传送的通信方式,相比并行通信,它传输速度慢,但传输距离较远且成本较低。
  • 总线:是一种传输数据的通道,它可以在多个设备之间共享,实现设备间的数据通信。
  • 主从设备:在串行通信中,通常有一个主设备负责控制通信的时序和数据流,而从设备则按照主设备的指令进行数据的发送或接收。
  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值