一口气从零读懂CAN总线。
zhuanlan.zhihu.com 2017-12-22
上一篇文章讲了CAN总线的历史、标准、物理层,现在接着介绍CAN总线数据链路层,和
CAN总线同步机制。
在SPI通信中,片选、时钟信号、数据输入及数据输出这四个信号都有单独的信号线。而
CAN使用的是两条差分信号线,只能表达一个信号。简洁的物理层决定了CAN必然要配上一套更
为复杂的协议。如何用一个信号通道实现同样甚至更强大的功能,答案就是对数据或操作命令进
行打包。
通信机制
多主机(Multi-Master)
安全敏感的应用(如汽车动力)对通信系统的可靠性要求很高。将总线能否正常工作归结到
单一节点是非常危险的,比较合理的方案是对总线接入的去中心化,即每个节点都有接入总线的
能力。这也是CAN总线采用多主控(Multi-Master)线性拓扑结构的原因。
在CAN总线上,每个节点都有往总线上发送消息的能力,而消息的发送不必遵从任何预先设
定的时序,通信是事件驱动的。只有当有新的信息传递时,CAN总线才处于忙碌的状态,这使得
节点接入总线速度非常快。CAN总线理论最高数据传输速率为1Mbps,对于异步事件反应迅速,
基本对于ms级别的实时应用没有任何问题。
寻址机制
不同于其它类型的总线,CAN总线不设定节点的地址,而是通过消息的标识符(Identifier)
来区别消息。这种机制虽然会增加消息的复杂度(增加标识符),但是节点在此情况下可以无需
了解其他节点的状况,而相互间独立工作。在总线上增加节点时仅需关注消息类型,而非系统上
其他节点的状况。这种以消息标识符寻址的方式,让总线上增加节点变得更加灵活。
总线访问CSMA/CD+AMP
CAN总线通信原理可简单描述为多路载波侦听+基于消息优先级的冲突检测和非破坏性的仲
裁机制(CSMA/CD+AMP)。CSMA(CarrieSense Multiple Access)指的是所有节点必须都
等到总线处于空闲状态时才能往总线上发送消息;CD+AMP(CollisionDetection +
Arbitration on Message Priority)指的是如果多个节点往总线上发送消息时,具备最高优先级
的消息获得总线。
评论0