嵌入式学习--step7 各类通信协议

一、IIC
IIC总线它是由数据线SDA和时钟SCL构成的串行总线,可发送和接受数据。高速IIC总线一般可达400kbps以上。 I2C总线在传送数据过程中共有三种类型的信号,分别是:开始信号、结束信号和应答信号:
开始信号:SCL为高电平,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平,SDA由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的IIC在接受到8Bits数据后,向发送数据的IIC发出特定的低电平脉冲,表示已收到数据。
通信流程
在主模式下,I2C接口会启动数据传输并生成时钟信号,串行数据传输始终是在出现起始位时开始,在出现停止位时结束,起始位与停止位均在主模式下由软件生成。在字节传输 8 个时钟周期后是第 9 个时钟脉冲,在此期间接收器必须向发送器发送一个应答位ACK,请参见下图 。

这里写图片描述
从上图可以看出,出现起始位后,SDA由高电平向低电平跳变,开始传送数据, SCL时钟线,当SCL下降沿时,结束数据传输。数据和地址均以 8 位字节传输, MSB 在前。起始位后紧随地址字节(7 位地址占据一个字节;10 位地址占据两个字节)。地址始终在主模式下传送。
这里写图片描述
上图展示I2C具体的内部实现,SDA连接着数据控制,有移位寄存器与数据寄存器控制相连,SCL连接着时钟控制,有时钟控制寄存器、控制寄存器、状态寄存器控制着,另外还有控制逻辑,含DMA请求与ACK。(图中的PEC是Packet Error Checking(PEC)校验功能,PEC 计算器的应用目的是提高通信的可靠性。 PEC 对各个位使用 CRC-8 多项式 C(x) = x8 +x2 + x + 1 公式进行串行计算。)
二、SPI总线
SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。

SPI是一种高速的,全双工(MOSI/MISO),同步(SCK)的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省了空间,提供了方便,主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI框图如下:
这里写图片描述
下图展示了SPI通信过程,SPI全双工通信时,一个数据输出和数据输入都由同一时钟进行同步的1全双工通信过程。
这里写图片描述
下图展示了SPI的时序图,其中CPHA为时钟相位,CPHA1时,则SCK引脚的第二个边沿开始传递数据,CPHA0时,则SCK引脚的第一个边沿开始传递数据;CPOL为时钟极性,CPOL1时,SCK引脚在空闲状态处于高电平,CPOL0时,SCK引脚在空闲状态处于低电平。(CPOL时钟极性,CPHA时钟相位)
这里写图片描述
我们看下SPI全双工情况下是怎么通信的:
这里写图片描述
全双工的通信过程为:1)软件向SPI-DR数据寄存器写入0xF1,软件等待至发送缓冲区空标志TXE为1,表示发送缓冲区为空,可以发送,后向SPI-DR写入0xF2,等待时钟沿进行数据0xF1发送。2),等待RXNE置1,接收端接收到0xF1,表示接收区非空,有数据了,注意,此处是非空(NE,not empty),然后从SPI-DR中读取数据0xA1,0xA1为MISO需要发送的数据,等待时钟沿进行数据发送。
这里写图片描述
我们知道,SPI既可以配置成全双工,也可以配置成半双工通信,前面讲述了全双工模式下的配置,接下来讲述半双工的配置。SPI可以在两种模式下完成半双工模式的工作:
1)1个时钟线和1条双向数据线,双向数据线可作为输入或者输出,但不能同时作为,由BIDIMODE引脚控制。
2)1条时钟线和1条数据线(只接收或者只发送)
当主设备或者从设备只发送时的时序图(半双工)为:
这里写图片描述
在一条时钟和一条单向数据线的模式下,例如只发送模式,在发送引脚上发送数据,接收引脚(主模式下的MISO引脚或者从模式下的MOSI)可以用作通用IO,因而其该引脚的时序不可知(如果该引脚为0或1,则一直为一根直线);在只接收模式下,发送IO引脚可用于其他用途。因而,时序图里只画了MOSI或者MISO一根线,没有如同全双工那样画两根线。

—————
源码阅读:

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 嵌入式ARM协议中的LIN总线是一种低成本、低速率的串行通信协议,主要用于汽车电子系统中的设备通信。LIN总线主要用于连接车辆的各个电子控制单元(ECU),如仪表盘、门控制模块、座椅调节模块等,以实现数据的传输和控制。 LIN总线协议基于主从结构,其中一个ECU充当主节点,负责发送指令和协调通信,而其他ECU则作为从节点,负责接收指令并执行相应的操作。主节点通过发送特定的帧让从节点执行特定的任务,从而实现控制和通信。 LIN总线的通信速率相对较低,通常在20kbps到20Mbps之间。这是为了满足低成本和低功耗的需求而设计的。此外,LIN总线还采用了不同的物理层电压标准,如12V和5V。这样可以适应不同的应用场景和硬件要求。 在嵌入式ARM系统中,LIN总线可以通过软件和硬件实现。通过使用ARM处理器的UART通信接口,可以将指令转化为LIN总线的帧格式,实现数据的发送和接收。同时,还可以使用专用的LIN总线驱动芯片来简化通信的实现。这些芯片通常具有LIN总线协议的硬件支持,可以提供更高的性能和稳定性。 总的来说,嵌入式ARM协议中的LIN总线是一种用于汽车电子系统的通信协议,通过低成本、低速率的串行通信实现ECU之间的数据传输和控制。它提供了灵活和可靠的通信方式,使得车辆系统的各个模块能够协同工作,实现更高的性能和功能。 ### 回答2: 嵌入式ARM协议中的LIN(Local Interconnect Network)总线是一种低成本、低速率的串行通信协议,常用于汽车和工业领域中。 LIN总线主要用于连接车辆不同的电子控制单元(ECU),包括车身电子系统、信息娱乐系统等。它的设计目标是为了提供可靠的数据传输,并保持较低的硬件和软件成本。 在LIN总线中,通讯由一个主节点(Master)和若干从节点(Slave)组成。主节点负责控制总线的访问和数据传输的时序,从节点则是被动响应主节点的指令。主节点通过发送帧(Frame)来控制从节点的操作,并接收从节点上报的数据。 LIN总线的通信速率相对较低,通常在20kbps至20Mbps之间,这是为了满足成本和可靠性的要求。它使用单线通信,通过追加校验位和帧头来确保数据的完整性和正确性。 作为一种低成本的通信协议,LIN总线在汽车和工业控制应用中发挥着重要作用。它常用于门锁系统、车窗控制、座椅调节、仪表盘等模块的通信。LIN总线的主要优点包括低成本、低功耗、简单的网络拓扑和更低的研发成本。 总而言之,嵌入式ARM协议中的LIN总线是一种低成本、低速率的串行通信协议,用于连接车辆不同的电子控制单元。它通过主节点和从节点的通信方式来实现数据传输和控制,具备低成本、低功耗等优点,广泛应用于汽车和工业控制领域。 ### 回答3: 嵌入式ARM协议——LIN总线,全称是局域网互连网络(Local Interconnect Network),是一种用于汽车电子控制系统的串行通信总线协议。 LIN总线是针对在车内各种电子设备之间进行通信而设计的低成本、低速率数据传输网络。它可以连接车内电子控制单元(ECU)之间的传感器、执行器和其他外设,例如仪表板、门锁、窗户控制器和座椅调节器等。 LIN总线采用了单一主节点和多个从节点的拓扑结构。主节点负责发送消息,而从节点是被动接收消息并执行相应的操作。主从节点之间的通信通过单线半双工方式进行,使得LIN总线在成本和可靠性方面都得到了优化。 LIN总线的通信速率相对较低,一般在20kbps至20Mbps之间。由于车内电子设备通常只要求低速率的数据传输,因此LIN总线可以满足大部分应用的需求。 LIN总线的协议栈包含物理层、数据链路层和应用层。物理层负责定义信号和电气特性,例如电压和线缆类型。数据链路层负责提供错误检测和纠正机制,以确保数据的可靠传输。应用层定义了消息的格式和内容,包括标识符、数据字节和校验位等。 相比于其他汽车网络协议,如CAN总线,LIN总线具有更低的成本和更简单的实现。它适用于一些较简单的车内电子设备,不需要高速数据传输的场景。 总而言之,嵌入式ARM协议——LIN总线是一种适用于车内电子控制系统的低成本、低速率的串行通信协议,通过单一主节点和多个从节点的拓扑结构实现通信。它的简单实现和性价比使得它在一些简单车内电子设备中得到广泛应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值