CAN 总线诞生于上世纪 80 年代,有助于在车辆内进行可靠的电子通信。本文将深入探讨 CAN 总线的基本原理、架构、协议、应用和局限性。
简介
控制器局域网(CAN)总线由博世于 20 世纪 80 年代开发,是工业和汽车应用中常用的通信协议。它的开发旨在改善电子控制单元(ECU)之间的数据交换,从而提高汽车系统的效率。1993 年,CAN 被纳入国际标准通信系统 ISO 11898,应用于工业和汽车领域。
它是一种基于报文的协议,最初设计用于汽车内的多路复用电气布线,以节省铜缆,但也用于许多其他场合。对于业余爱好者来说,CAN 总线可能看起来令人困惑或复杂,但其核心原理却是简单明了的。
从汽车音响到防抱死制动系统,CAN 总线是一种允许汽车系统和设备相互通信的通信方法。CAN 总线是在对等 ECU 和其他设备之间交换指令的媒介。
CAN 总线的基本原理
控制器局域网(CAN)总线的运行原理是分散式联网,即网络上的所有节点(或设备)在传输数据的能力上都是平等的。这有别于由中央主设备控制通信的传统网络模式。
CAN 总线数据传输
在 CAN 网络中,任何节点都可以在总线空闲时传输数据。数据以帧的形式发送,其中包含传输的信息以及用于错误检查和识别的附加数据。
CAN 总线按照 "广播 "原则运行 ,即所有节点都能接收到所有传输信息。然后,每个节点根据 CAN 帧中的标识符决定是忽略数据还是接受数据。该标识符不是源地址或目的地址,而是表示报文内容的标签。这意味着同一报文可由多个节点接收和处理,这在汽车应用中尤其有用,因为在汽车应用中,多个系统可能需要相同的数据。这也意味着,特定节点无法根据地址向特定节点发送信息。
CAN 总线系统中的数据传输基于差分双线接口(取代了复杂的线束和连接器),从而增强了在汽车电气噪声环境中的抗噪能力。CAN-High (CANH) 和 CAN-Low (CANL) 两根线传输互补信号。当节点传输显性(0)信号时,CAN-High 的电压电平高于 CAN-Low。反之,当传输隐性(1)信号时,CAN-High 和 CAN-Low 处于同一电压电平。
数据以帧为单位传输,帧由多个字段组成。其中最重要的是标识符字段和数据字段。标识符字段包含报文的标识符,接收节点用它来决定是否接受报文。数据字段包含实际传输的数据,在标准 CAN 中最多为 8 字节,在 CAN FD(灵活数据速率)中最多为 64 字节。
数据帧中各个字段的意义如下:
CAN 总线中的数据传输受带冲突检测的载波侦听多路访问 (CSMA/CD)原理的控制。这意味着每个节点都会监视总线(载波侦听)并在总线空闲时进行传输(多路访问)。如果两个节点同时传输(冲突),则标识符值较低的节点继续传输,而另一个节点停止传输。这是因为显性位会覆盖总线上的隐性位,并且较低的标识符(较低的数值)在 CAN 帧的开头具有更多的显性位。这种机制确保首先传输最高优先级的消息(具有较低标识符的消息)。
错误检测和处理
CAN 总线系统的主要特点之一是其高效的错误检测和处理能力。该系统包含五种错误检测方法,每种方法都旨在确保数据传输的完整性,具体讨论如下:
比特监控:CAN 网络系统中的每个传输节点在传输过程中都会监控总线的状态。如果总线状态与预期状态不符,节点就会知道发生了错误。
帧校验序列(FCS):该字段包含一个循环冗余校验(CRC)值,该值根据帧中的数据计算得出。每个接收节点计算自己的 CRC 值,并与接收到的 FCS 进行比较。如果两个值不匹配,节点就会知道发生了错误。
确认检查:每个帧都包含一个 ACK 时隙,所有其他节点都要在这个时隙中发送一个显性比特,以确认收到该帧。如果发送节点在 ACK 时隙中没有检测到主位,它就知道发生了错误。
帧格式检查:每个帧都有特定的格式,包括预期显性位和隐性位的特定位置。如果节点检测到违反此格式的情况,就知道发生了错误。
错误帧:当节点使用上述任何一种方法检测到错误时,它会传输一个特殊的错误帧,提醒所有其他节点注意该错误。这会导致所有节点丢弃当前帧,等待重新传输正确的帧。
检测到错误时,检测到错误的节点会自动重新传输帧。这种情况一直持续到无错传输帧为止。如果节点检测到太多错误,它就会进入错误被动状态,此时它只监听总线而不传输。如果错误继续发生,节点将进入总线关闭状态,与总线断开连接。这种机制可确保故障节点不会中断总线上的通信。
2024-09-29 09:55
2024-09-29 09:54
2024-09-29 09:53
2024-09-26 07:39
2024-09-24 09:37
2024-09-24 09:37
2024-09-24 09:33
2024-09-23 09:43
2024-09-19 09:34
2024-09-18 09:07