CAN的通信协议基于如下5条基本规则进行通信协调:
1)总线访问
CAN是共享媒体的总线,对媒体的访问机制类似于以太网的媒体访问机制,即采用载波监听多路访问(Carrier Sense Multiple Access, CSMA)的方式。CAN控制器只能在总线空闲时开始发送,并采用硬同步,所有CAN控制器同步都位于帧起始的前沿。为避免异步时钟因累计误差而错位,CAN总线在硬同步后,还应在满足一定条件的跳变下进行重新同步。
2)非破坏性的位仲裁方式
CAN总线是由两条导线构成的,总线上的状态(信号)由两条导线上的电压决定,当处于隐性状态(即隐性电平)时,两条导线上的电压为0V;当处于显性状态(即显性电平)时,两条导线上的电压不低于。
当总线空闲时呈隐形电平,此时任何一个节点都可以向总线发送一个显性电平作为一个帧的开始。如果有两个或两个以上的节点同时发送,就会产生总线冲突。CAN总线解决总线冲突的办法比以太网的CSMA/CD方法有很大的改进。
3)编码/解码
帧起始域、仲裁域、控制域、数据域和CRC序列均使用位填充技术进行编码。在CAN总线中,每连续5个同状态的电平插入一位与它相补的电平,还原时每5个同状态的电平后的相补电平删除,从而保证了数据的透明。
4)出错标注
当检测到位错误、填充错误、形式错误或应答错误时,检测出错条件的CAN控制器将发送一个出错标志。
5)超载标注
一些CAN控制器会发送一个或多个超载帧以延迟下一个数据帧或远程帧的发送。
CAN协议包括OSI参考模型的传输层、数据链路层、物理层。