单片机-CAN总线学习-2022.12.09

一、参考网址

https://blog.csdn.net/u010037269/article/details/123849779

二、通信方式

CAN总线通信系统是串行通信的一种,要优于RS485总线,是目前比较常用的一种工业总线!
单片机-CAN总线学习-2022.12.09_第1张图片

三、CAN的协议及组成

CAN的组成一般有两种方式:
1:CPU与CAN控制器集成到一起、再外接CAN收发器;
2:另一种是CPU与CAN控制器分开的,使用的时候需要配置CAN接口电路,比较麻烦
STM32中就是采用第一种方式,将CAN接口集成在芯片内,使用的时候再外接CAN收发器(顾名思义,可发送,可接收),常用的有TJA1050或者82C250。
单片机-CAN总线学习-2022.12.09_第2张图片

四、逻辑电平

在CAN总线上,逻辑“0”和“1”之间显著的电压差是通信可靠的保证。
高速CAN总线电平:
显性:CAN_H =3.5V,CAN_L=1.5V,电压差为2V为逻辑“0”
隐性:CAN_H =2.5V,CAN_L=2.5V,电压差为0V为逻辑“1”
低速CAN总线电平:
显性:CAN_H =4V,CAN_L=1V,电压差为3V为逻辑“0”
隐性:CAN_H =1.75V,CAN_L=3.25V,电压差为-1.5V为逻辑“1”
高速CAN和低速CAN的平均电压都是2.5V

五、回环模式和普通模式

单片机-CAN总线学习-2022.12.09_第3张图片

六、总线协议数据

单片机-CAN总线学习-2022.12.09_第4张图片
解析CAN数据的相关基础知识:
1.channel:CAN通道。
2.Identifier:在某个时间点发送一条报文,该报文的ID号,将这个ID号对照解析文件,从而进行报文解析。
3.Is Standard:判断是否是标准帧。
CAN的消息帧格式有两种,分别是CAN2.0A标准帧(standard)和CAN2.0B扩展帧(extended)。
标准帧用11个bit表示ID编号(identifier),注意11bit的ID是一个有符号数,需要用偏置(offset)补偿。【扩展帧用?个bit表示ID编号,是否是有符号数?】
4.Is Data:判断帧类型是否是数据帧。
帧的类型有四种类型,分别是数据帧、远程帧、错误帧、超载帧。
远程帧:接收数据的节点可以通过发送远程帧要求源节点发送数据,远程帧没有数据场。
错误帧:是6个连续的显性位。
5. Is TX:判断是接收节点还是发送节点(TX)
6.DLC:数据长度码,占4个bit,可包括0~8Byte,本例中为8Byte。
7~14:报文(包含8个字节),十六进制表示

单片机-CAN总线学习-2022.12.09_第5张图片
(1)帧起始:标识一个数据帧的开始,用于同步,一个显性位,只有在总线空闲期间节点才能发送SOF

(2)仲裁段(场):ID、RTR、IDE、SRR

ID:唯一确定一条报文,表明报文的含义和优先级;(标准帧:11位ID;拓展帧:29位ID)
RTR 远程传送请求位(0:数据帧。 1:远程帧)
IDE 标识符拓展位 (0:11位ID,标准帧。1:29位ID,拓展帧)
SRR 远程代替请求位 SRR = 1
(3)控制段(场):主要用于表示数据段有多少个字节
r1、r0 为保留位,默认为显性电平(逻辑0)
DLC 数据长度码:表示数据段的字节数,表示为0~8
(4)数据段(场):CAN数据帧要发送的数据内容
(5)CRC段(场):用于进行CRC校验
CRC:接收到的CRC数据,用于进行校验
DEL 界定符:用于界定CRC序列,固定1个隐性电平(逻辑1),CRC界定符之前会进行位填充,CRC之后的位域都是固定格式,不允许位填充
(6)ACK段(场):确定报文被至少一个节点正确接收
发送节点在ACK发送隐性位(逻辑1):
正确接收到报文的节点 =》 ACK发送显性位(逻辑0)
未正确接收到报文的节点 =》ACK发送隐性位(逻辑1)
发送节点检测应答位是否被显性电平覆盖(即ACK变为显性位,逻辑0)
没有 =》 ACK错误
(7)帧结束:7个连续的隐性位(逻辑1),表示帧结束;节点在检测11个连续的隐性位后,认为总线空闲

协议详解网址:https://blog.csdn.net/laifengyuan1/article/details/123402635

七、通信速率

CAN总线传递速率500kb/s

你可能感兴趣的:(学习,单片机,stm32)