西河刘卡车医 发表于 2022-10-29 00:20:10

CAN总线简介

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
CAN信号表示
https://img2022.cnblogs.com/blog/3005905/202210/3005905-20221028123104159-1651733289.png
CAN总线采用不归零码位填充技术,也就是说CAN总线上的信号有两种不同的信号状态,分别是显性的(Dominant)逻辑0和隐形的(recessive)逻辑1,信号每一次传输完后不需要返回到逻辑0(显性)的电平。
显性与隐性电平的解释:
CAN的数据总线有两条,一条是黄色的CAN_High,一条是绿色的CAN_Low。
当没有数据发送时,两条线的电平一样都为2.5V,称为静电平,也就是隐性电平。当有信号发送时,CAN_High的电平升高1V,即3.5V,CAN_Low的电平降低1V,即1.5V。
CAN_H-CAN_L < 0.5V 时候为隐性的,逻辑信号表现为"逻辑1"- 高电平。
CAN_H-CAN_L > 0.9V 时候为显性的,逻辑信号表现为"逻辑0"- 低电平。
 ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
CAN的报文格式

CAN的通信帧分成五种,分别为数据帧、远程帧、错误帧、过载帧、帧间隔。
数据帧根据仲裁段长度不同分为标准帧(2.0A)和扩展帧(2.0B),
https://img2022.cnblogs.com/blog/3005905/202210/3005905-20221028123608281-1204335996.png
帧起始(SOF)  +  仲裁场(ID+RTR)  +  控制场 (IDE+r0+DLC)  +  数据段(DATA)  +  CRC段(CRC+del)  +  ACK段(ACK+del )  +  帧结束(EOF)
帧起始:报文的起始位,由1个显性位组成。总线空闲时,发送节点发送帧起始,其他接收节点同步于该帧起始位。
仲裁场:由 11位标识符(ID) + 1位远程发送请求位(RTR)组成的。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。
控制场:由 1个标识符扩展位(IDE) + 1个保留位 (ro) + 4位数据长度(DLC)组成的。标识符扩展位指出是标准帧还是扩展帧。保留位为将来扩展使用。四位的数据长度位用来指明数据场中数据的长度,数据场范围为0~8个字节。
数据段:由 最高8字节(64bit )组成的,长度取决于控制场的DLC位。
CRC段:由 15位的CRC校验码 + 1位CRC界定符(del) 组成的。在CRC校验码之后有一个CRC界定符,它为隐性位,主要作用是把CRC校验码与后面的ACK段隔开。
ACK段:由 确认位(ACK) + 1位ACK界定符(del) 组成的。ACK在发送节点发送时,为隐性位。当接收节点正确接收到报文时,对其用显性位覆盖。DEL界定符同样为隐性位,用于把ACK段与后面的帧结束隔开。
帧结束:由7个连续的隐形位组成。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。
https://img2022.cnblogs.com/blog/3005905/202210/3005905-20221028150909976-1803668710.png    https://img2022.cnblogs.com/blog/3005905/202210/3005905-20221028152018656-879757121.png
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
CAN的报文规则

1、多路载波侦听,网络上所有节点以多点接入的方式连接在同一根总线上,且发送数据是广播式。网络上各个节点在发送数据前都要检测总线上是否有数据传输:若网络上有数据,暂时不发送数据,待网络空闲时再发;若网络上无数据,立即发送准备好的数据。
2、冲突检测,节点在发送数据时,要不停的检测发送的数据,确定是否与其他节点数据发送冲突,如果有冲突,则保证优先级高的报文先发送。
3、非破坏性仲裁机制,通过ID仲裁,ID数值越小,报文优先级越高。由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。
https://img2022.cnblogs.com/blog/3005905/202210/3005905-20221028140755988-1924189046.png                      https://pic4.zhimg.com/v2-e4c9ad9a8c5b34ba681ec38d8bd52273_b.jpg
 
4、发送低优先级报文的节点退出仲裁后,在下次总线空闲时自动重发报文。
https://pic3.zhimg.com/v2-8104ad24d159a86a97f0d94073ac1bde_b.jpg
 
5、高优先级的报文不能中断低优先级报文的发送。
https://img2022.cnblogs.com/blog/3005905/202210/3005905-20221028152342287-1164001493.png
 
6、报文接收过滤:CAN控制器大多具有根据ID过滤报文的功能,即只接收某些ID的报文。节点对接收到的报文进行过滤:比较消息ID与选择器(Accepter)中和接受过滤相关位是否相同。如果相同,接收;如果不相同,则过滤。
 
https://pic3.zhimg.com/v2-0ca55eba0f3810257980a86377635012_b.jpg
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
CAN的错误帧

CAN-bus的错误类型共有5种:CRC错误、格式错误、应答错误、位发送错误、位填充错误。

[*]CRC错误:发送节点计算的CRC校验值与接收到的CRC不同。
[*]格式错误:传输的数据帧格式与任何一种合法的帧格式不符。
[*]应答错误:发送节点在应答阶段没有收到应答信号。
[*]位发送错误:发送节点在发送时发现总线电平与发送电平不同。
[*]位填充错误。通信线缆上传输的信号不符合位填充规则。
 
当出现5种错误类型之一时,发送或接收节点将发送错误帧。
为防止自身由于某些原因导致无法正常接收的节点一直发送错误帧,干扰其他节点通信,CAN-bus规定了节点的3种状态及其行为
https://img2022.cnblogs.com/blog/3005905/202210/3005905-20221028162925481-525452611.png          https://img2022.cnblogs.com/blog/3005905/202210/3005905-20221028162937171-1582957841.png
 ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
CAN的过载帧与帧间隔

...
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
CAN的同步

...
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: CAN总线简介