嵌入式常见通信接口

本文详细介绍了嵌入式系统中常见的几种通信接口,包括IIC(I2C)的起始信号、数据传输、协议流程,UART的异步通信、数据格式、波特率,SPI的主从模式、工作原理,LIN的电平逻辑、通信协议,以及CAN协议的特点、物理层特征和总线仲裁机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IIC、UART、SPI、LIN、CAN通信接口

IIC: 

1、I2C总线是PHLIPS公司在20世纪80年代推出的一种串行总线。

2、PHILIPS公司开发用于连接微控制器及其外围设备

3、一条是串行数据线SDA,一条是串行时钟线SCL

4、支持多个通讯主机和多个通讯从机,但是任意时间点上只能存在一个主控

5、半双工串行异步通信接口,

6、连接到总线的IC数量只是受到总线的最大负载电容400pf限制

7、每个连接到总线的器件都可以通过唯一的地址和其它器件通信

8、空闲状态时,SDA和SCL处于高电平

9、串行的 8 位双向数据传输位速率在标准模式下可达100kbit/s

快速模式下可达400kbit/s

高速 模式下可达3.4Mbit/s

协议:

1. 起始信号

2. 终止信号

3. 写数据信号

4. 读数据信号

5. 应答信号

6. 非应答信号

通信过程以AT24Cxx系列为例:

写的过程:

1、发送起始信号;

2、发送从设备地址 7 位,写信号 1 位,等待应答;

3、发送待写入数据的存储地址,等待应答;

4. 发送数据给从设备,等待应答;

5、最后发送停止信号。

读的过程:

1、发送起始信号;

2、发送从设备地址 7 位,写信号 1 位,等待 应答;

3、发送待读取数据的存储地址,等待应答;

4、再发送一个起始信号;

5、发送从设备地址 7 位,读信号一位,等待应答;

6、读去数据,8 个时钟,从设备就把对应的数据反馈给处理器;

7、最后发送停止信号。

UART:

1、通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UATR

2、串行数据总线,用于异步通信,全双工通信,采用TTL/COMS电平

UART控制器中包含四种寄存器:

输出缓存寄存器、输出移位寄存器、输入缓存寄存器、输入移位寄存器。

    1、输出缓存寄存器:该寄存器用来存放处理传输过来的并行数据。

    2、输出移位寄存器:读取输出缓存寄存器中的值,将并行数据串行输出,LSB先传输。

    3、输入移位寄存器:接收对方UART接口传输的串行数据,一帧数据接收完毕后,将把数据传输给输入缓存寄存器。

    4、输入缓存寄存器:保存从输入移位寄存器传递过来的串行数据。

UART接口数据线:

1、RX:接收数据

2、TX:发送数据

3、GND:数字地

4、VCC:直流电源

数据格式:

UART作为异步传输接口,接口不需要共用同一个时钟,只需通讯双方在传输过程中的时钟频率大小保持一致。

数据帧包括:起始位、数据位、奇偶校验位、停止位。

1、起始位:表明将要发送数据,起始位为低电平“0”。

2、数据位:数据位可以是5 bits、6 bits、7 bits或者8 bits等,常用为8 bits(ASCII码)。

3、奇偶校验位:用于表示所传输的数据位中1的个数,奇数个1则为1,偶数个1则为0。

4、停止位:表明数据传输结束,停止位为高电平“1”。

空闲状态:

当UART未发送数据时,数据线TX、RX状态为高电平“1”。

波特率:

每秒钟传输的数据位,此时可以等同于比特率。常用的UART波特率为:9600、115200。

SPI:

1、SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。Motorola首先在其MC68HCXX系列处理器上定义的

2、SPI,是一种高速的,全双工,同步的通信总线,

3、是一种最常见的板内芯片间的串行接口

4、SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

采用主-从模式(Master-Slave) 的控制方式

SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave).

一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选 (Slave Select) 来控制多个 Slave 设备,

SPI 协议还规定 Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备,

Slave 设备本身不能产生或控制 Clock, 没有 Clock 则 Slave 设备不能正常工作

SPI接口一般使用4条线通信:

1、MISO 主设备数据输入,从设备数据输出。

2、MOSI 主设备数据输出,从设备数据输入。

3、SCLK时钟信号,由主设备产生。

4、CS从设备片选信号,由主设备控制。

SPI工作原理总结

1、硬件上为4根线。

2、主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。

3、串行移位寄存器通过MOSI信号线将字节传送给从机,从机也将自己的串行移位寄存器中的内容通过MISO信号线返回给主机。

这样,两个移位寄存器中的内容就被交换。

4、外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;

反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。

SPI传输模式:

通过设置控制寄存器SPICR1中的时钟极性 (CPOL)和时钟相位 (CPHA)位,

控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样,

来保证数据在两个设备之间是同步传输的

同时将SPI可以分成四种传输模式

LIN:

1、LIN(Local Interconnect Network)总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议。

2、其目标定位于车身网络模块节点间的低端通信,主要用于智能传感器和执行器的串行通信,

3、而这正是CAN总线的带宽和功能所不要求的部分。

4、LIN总线采用的是单线传输形式,应用了单主机多从机的概念,总线电平一般为12V,传输速率最高限制为20kbps。

5、网络由一个主节点与若干个从节点构成。由于物理层的限制,一个LIN网络最多可以连接16个节点,否则网络阻抗降低,影响通信。

6、由于LIN网络在汽车中一般不独立存在,通常会与上层CAN网络相连,形成CAN-LIN网关节点。

电平逻辑:

显性电平 0(地)

隐性电平 1(12V)

LIN通信协议:

一个LIN信息帧有同步间隔、同步域、标示符域(受保护ID域)、数据域、校验码域以及响应间隔构成。

除起始域与响应间隔,其他部分都是以字节为单位传送,每个字节都有自己的格式,称之为字节域(ByteField)。

字节之间有字节间隔(InterByteSpace),在头信息和响应之间有一个响应间隔(ResponseSpace),这两个间隔的最小值为0。

帧的结构:

帧包括帧头和应答两部分,主机发送帧头,从机接收帧头并解析内容,然后确认发送应答或者是接收应答还是不做处理。

帧头包括同步间隔断、同步段、受保护PID段;应答包括数据段和校验和段

1、同步间隔域(Break Field)

同步间隔域由同步间隔(Break)和同步间隔域间隔符(Break Delimiter) 构成。

同步间隔至少持续13位的显性电平。从机检测到总线上出现持续11位的显性电平则认为是帧开始!

其中同步间隔段的间隔符至少为1位隐性电

2、同步域(Sync Byte Field)

字节域(Byte Field):1位起始位(Start Bit显性)+8位数据位+1位停止位(Stop Bit隐性),是一种标准UART数据传输格式,一般为0x55

3、受保护ID域(Protected Identifier Field)

受保护ID 段的前6位叫作帧ID(Frame ID),加上两个奇偶校验位后称作受保护ID 。

P0 = ID0 ⊕ID1 ⊕ID2 ⊕ID4

P1 = ~(ID1 ⊕ID3 ⊕ID4 ⊕ID5)

数据域长度(字节数)由标示符域的ID4、ID5决定。

4、数据域

数据段包含1-8个字节,先发送编号最低的字节,编号依次增加。

5、校验码域

检验和段是对帧中所传内容进行校验

检验和分为标准型和增强型,标准型只需要校验数据段,而增强型需要校验PID和数据段

检验方法是将检验对象的各个字节进行带进位二进制加法,当结果大于0xFF时,结果减去0xFF,并将最终结果取反。

接收方对接收数据进行相同操作,结果不取反,然后和接收到的校验和相加,如果相加等于0xFF则校验无误。

CAN:

1、CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。

2、CAN协议经过ISO标准化后有两个标准:ISO11898标准和ISO11519-2标准。

3、其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准。

4、、CAN具有很高的可靠性,广泛应用于:汽车电子、工业自动化、船舶、医疗设备、工业设备等方面。

CAN协议的特点:

1、多主控制。总线空闲时,所有单元都可发送消息,而两个以上的单元同时开始发送消息时,根据标识符(ID,非地址)决定优先级;

2、系统柔软性。连接总线的单元,没有类似“地址”的信息,因此,在总线上添加单元时,已连接的其他单元的软硬件和应用层都不需要做改变。

3、速度快,距离远。最高1Mbps(距离<40M),最远可达10KM(速率<5Kbps)。

4、具有错误检测、错误通知和错误恢复功能

5、故障封闭功能。CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。

6、连接节点多。CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。

降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。

物理层特征:

1、CAN 控制器根据CAN_L和CAN_H上的电位差来判断总线电平。

2、总线电平分为显性电平和隐性电平,二者必居其一。

3、显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。

4、CAN总线的起止端都有一个120Ω的终端电阻,来做阻抗匹配,以减少回波反射

显性电平对应逻辑:0

CAN_H和CAN_L之差为2V左右。

隐性电平对应逻辑:1

CAN_H和CAN_L之差为0V。

CAN通信是以以下5种类型的帧进行的:

1、数据帧:用于发送单元向接收单元传送数据的帧

2、遥控帧:用于接收单元向具有相同 ID 的发送单元请求数据的帧

3、错误帧:用于当检测出错误时向其它单元通知错误的帧

4、过载帧:用于接收单元通知其尚未做好接收准备的帧

5、间隔帧:用于将数据帧及遥控帧与前面的帧分离开来的帧

其中,数据帧和遥控帧有标准格式和扩展格式两种格式。

标准格式有11 个位的标识符(ID),扩展格式有29 个位的ID 。

数据帧由7个段组成:

1、帧起始:表示数据帧开始的段。

2、仲裁段:表示该帧优先级的段。

3、控制段:表示数据的字节数及保留位的段。

4、数据段:数据的内容,一帧可发送0~8个字节的数据。

5、CRC段:检查帧的传输错误的段。

6、ACK段:表示确认正常接收的段。

7、帧结束:表示数据帧结束的段。

基本ID,禁止高7位都为隐性,即不能:ID=1111111XXXX。

CRC的值计算范围包括:帧起始、仲裁段、控制段、数据段。

发送单元ACK段:发送2个隐性位。

接收单元ACK段:接收到正确消息的单元,在ACK槽发送显性位,通知发送单元,正常接收结束。称之为发送ACK/返回ACK。

总线仲裁:

1、总线空闲时,最先发送的单元获得发送优先权,一但发送,其他单元无法抢占。

2、如果有多个单元同时发送,则连续输出显性电平多的单元,具有较高优先级。

3、从ID开始比较,如果ID相同,还可能会比较RTR和SRR等位

位速率:由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位一般可以分为如下四段:

1、同步段(SS)

2、传播时间段(PTS)

3、相位缓冲段1(PBS1)

4、相位缓冲段2(PBS2)

标识符筛选器:

1、CAN的标识符不表示目的地址而是表示发送优先级。接收节点根据标识符的值,来决定是否接收对应消息。

2、筛选器可配置为:屏蔽位模式和标识符列表模式。

2.1、在屏蔽位模式下,标识符寄存器和屏蔽寄存器一起,指定报文标识符的任何一位,应该按照“必须匹配”或“不用关心”处理。

2.2、在标识符列表模式下,屏蔽寄存器也被当作标识符寄存器用。因此,不是采用一个标识符加一个屏蔽位的方式,而是使用2个标识符寄存器。

接收报文标识符的每一位都必须跟筛选器标识符相同。

3、为了过滤出一组标识符,应该设置筛选器组工作在屏蔽位模式。

4、为了过滤出一个标识符,应该设置过滤器组工作在标识符列表模式。

例:设置筛选器组0工作在:1个32位筛选器-标识符屏蔽模式,然后设置CAN_F0R1=0XFFFF0000,CAN_F0R2=0XFF00FF00。

其中存放到CAN_F0R1的值就是期望收到的ID,即(STID+EXTID+IDE+RTR)最好是:0XFFFF0000。

而0XFF00FF00就是设置我们需要必须关心的ID,表示收到的映像,其位[31:24]和位[15:8]这16个位的必须和CAN_F0R1中对应的位一模一样,

而另外的16个位则不关心,可以一样,也可以不一样,都认为是正确的ID,即收到的映像必须是0XFFxx00xx,才算是正确的(x表示不关心)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值