![819d36ed4673601997b196d211ca9e2f.png](https://i-blog.csdnimg.cn/blog_migrate/ad833ed65bed5d6ddb8350d4ebc3333b.jpeg)
一、定义
CAN总线,即控制器局域网总线,是一种用于实时应用的串行通讯协议总线。
它可以使用双绞线、同轴电缆或光纤来传输信号,因其高性能、高可靠性和高实时性等特点,已经成为了世界上应用最广泛的现场总线之一。
CAN总线最高传输速率可达1Mbps(通信距离最长40m),如果降低传输速率,其直接通信的最远距离可达10km(速率5Kbps以下),其总线上的节点数可达110个。
二、工作原理
1. CAN总线没有主从节点之分,所有CAN总线上的节点都是地位等价的。
当CAN总线上的一个节点发送数据时,它以报文的形式广播给网络中的而所有节点;这样对于每个节点来说,无论数据是否发给自己,都对其进行接收。
CAN总线每组报文开头的11位字符为标识符,定义了报文的优先级。
在同一个总线中,标识符是唯一的,不可能有两个节点发送具有相同标识符的报文。
接收节点也会根据标识符来判断是否接收这帧信息,一般称这项技术为报文滤波技术。
3. CAN总线接收节点可以通过远程数据请求发送远程帧请求发送节点发送相应的数据,回应节点传送的数据帧与请求数据的远程帧具有相同的标识符。
4. CAN总线的优先权由发送数据报文中的标识符决定报文占用总线的优先权;标识符越小,优先权越高。
5. CAN总线的仲裁机制:只要总线空闲,任何节点都可以向总线发送报文。
如果有两个或两个以上的节点同时发送报文,就会引起总线访问碰撞。通过使用标识符逐位仲裁可以解决这个碰撞问题。而当具有相同标识符的数据帧和远程帧同时发送时,数据帧优先于远程帧。
6. 目前CAN总线通信协议仅仅包括OSI七层互联参考模型中的数据链路层和物理层。
三、物理层
1. CAN总线物理层主要采用两个差分传输信号线组成CAN总线网络,分别为CANH和CANL,所有CAN总线上的节点都可以连接到这两条差分信号传输网络上进行通信。
2. CAN节点一般由两部分组成:CAN收发器、CAN控制器。
CAN收发器负责将CAN控制器的TTL或CMOS的电平信号转换为CAN差分模拟电平信号进行数据传输;也将CAN的差分模拟电平信号转换为TTL/CMOS的电平信号送到CAN控制器,以实现完整的双向通信。
CAN控制器负责解析来自CAN收发器送来的数据,也将用户的数据传送到CAN收发器并发送出去;CAN控制器一般具备数据帧的解析与解码,数据屏蔽与滤波,数据帧的打包与封装等功能,是与用户交互的端口。
下图是一般的CAN节点的构造电路图。
![46ca4d07675aec182672e6b289506929.png](https://i-blog.csdnimg.cn/blog_migrate/1efa287bf4378a4419a12934aaaa2e37.png)
3. CAN总线物理层标准:CAN协议经过ISO标准化后有ISO11898标准(高速CAN)和ISO11519-2标准(低速CAN)两种,这两种标准的数据链路层是一样的,但是物理层不同。
4. CAN总线显性与隐性:CAN2.0规范定义了两种互补的逻辑数值:显性和隐性。同时传送显性和隐性位时,总线呈现显性状态;同时传送显性状态位时,总线呈现显性状态;同时传送隐性状态位时,总线呈现隐性状态。显性数值表示逻辑0,隐性数值表示逻辑1。