CAN总线(Controller Area Network)是一种用于车辆、工业自动化和其他领域的高可靠性、实时性强的串行通信协议。它允许多个微控制器和设备在没有主机计算机的情况下相互通信。
CAN总线最初由德国BOSCH公司在1980年代初期为汽车内部通信而开发。1993年,ISO发布了CAN总线标准(ISO 11898),包括数据链路层协议和物理层协议。
ISO 11898-1:定义数据链路层协议。
ISO 11898-2:定义高速CAN总线物理层协议,最高数据传输速率为1Mbps。推荐使用线形拓扑,适用于实时性要求高的场合。
ISO 11898-3:定义低速CAN总线物理层协议,数据传输速率在40Kbps到125Kbps之间。也称为容错CAN,能够在一根信号线失效时继续通信,适用于实时性要求较低的场合。
CAN总线特点:
多主控制:CAN总线支持多个主设备同时存在于网络上,没有主从之分,设备根据消息的优先级进行通信。
差分信号:使用两根线(CAN_H和CAN_L)传输差分信号,提高了抗电磁干扰的能力。
非破坏性仲裁:在消息传输过程中,如果发生冲突,优先级高的消息将被传输,低优先级的消息将等待重传。
错误检测与处理:具有强大的错误检测和处理能力,包括CRC校验、位错误检查等。
灵活的拓扑结构:支持多种网络拓扑结构,如线形、星形、树形和环形。
在CAN总线上,逻辑“0”和“1”之间显著的电压差是总线可靠通信的保证。参照上面的描述,CAN总线上两种电平状态分别为:
显性(Dominant ): 0
隐性(Recessive ): 1
CAN总线的信号电平具有线与特性,线与特性是CAN总线仲裁的电路基础,即显性电平(0)总是会掩盖隐性电平(1),如果不同节点同时发送显性和隐性电平,总线上表现出显性电平(0),只有在总线上所有节点发送的都是隐性电平(1)时,总线才表现为隐性。
显性电平:逻辑0,高速CAN中CAN_H端向5V,CAN_L端向0V。
隐性电平:逻辑1,不驱动任何一端。
高速CAN和低速CAN总线在物理层信号电平上定义有所不同:
高速CAN,定义 CANH 和 CANL 电压相同(CANH = CANL = 2.5V)时为逻辑“1”,CANH和CANL 电压相差 2V(CANH = 3.5V, CANL = 1.5V)时为逻辑“0”。
高速CAN收发器在共模电压范围内(-12V ~ 12V),将CANH和CANL电压相差大于0.9V 解释为显性状态(Dominant),而将CANH和CANL电压相差小于0.5V 解释为为隐性状态(Recessive)。收发器内部有迟滞电路可以降低干扰。
低速CAN,定义CANH和CANL电压相差 5V (CANH =0V, CANL = 5V)时为逻辑“1”,相差 2.2V (CANH = 3.6V, CANL = 1.4V)时为逻辑“0”。
高速CAN信号电平( ISO 11898-2)
低速CAN信号电平( ISO 11898-3)
CAN的错误处理机制:
CRC错误:通过计算和校验数据的CRC值来检测错误。
位错误:在传输过程中实时检测比特错误。
错误帧:当检测到错误时,发送错误帧以请求重传。
总结
CAN总线以其高可靠性、实时性和灵活性,在多个领域得到了广泛应用。随着技术的发展,CAN总线也在不断演进,例如BOSCH发布的CAN FD(Flexible Data-Rate)标准,进一步提高了数据传输速率,满足了更高带宽需求的应用场景。
审核编辑:刘清
-
微控制器
+关注
关注
48文章
7487浏览量
151020 -
CAN总线
+关注
关注
145文章
1936浏览量
130621 -
SoC芯片
+关注
关注
1文章
608浏览量
34864 -
串行通信
+关注
关注
4文章
566浏览量
35282 -
数字信号电平
+关注
关注
0文章
9浏览量
7170
原文标题:SoC芯片的CAN总线详解(一)
文章出处:【微信号:全栈芯片工程师,微信公众号:全栈芯片工程师】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论