CAN总线之CAN的基本概念

[复制链接]
841|4
手机看帖
扫描二维码
随时随地手机跟帖
tomyoct|  楼主 | 2019-3-31 11:06 | 显示全部楼层 |阅读模式
一、CAN总线电平的显性和隐性
CAN包括CAN_H和CAN_L两条线,使用的是差分信号,在隐形的时候,两条线的电压相同,压差为0。当压差超过一定的阈值的时候,总线的状态就变为显性,假设在总线上挂了2个器件1,2.器件1将总线设为显性,而同时器件2将总线设为隐形。最终总线的状态会呈现为显性。所以当总线上的所有器件都为隐形时,总线的状态才为隐形。如果有一个器件为显性,则总线为显性。CAN总线的仲裁也是按照这个原理,当总线状态与自身状态不一致时会进入监听状态。

使用特权

评论回复
tomyoct|  楼主 | 2019-3-31 11:07 | 显示全部楼层
二、CAN总线仲裁

当总线上的几个器件同时发送数据的时候,CAN总线必须决定哪个器件可以发送,而其他的器件必须等待。冲突裁决是CAN协议最重要的一个特性,也是CAN总线做的最漂亮的地方,用很小的成本就解决了这个问题。

总线上的每一个CAN器件都会有一个唯一的ID。ID的大小决定了器件的优先级。ID越小优先级越高。如果几个器件同时发送数据,ID小的优先发送。以下图为例,总线上有A,B,C三个器件。A首先发送数据。当总线上有器件发送数据时,其他器件只能处于监听模式,所以B,C虽然有发送数据的需求但是只能等待A发送结束。当A发送结束之后,B,C同时发送,但是B的ID更小,B优先发送。B发送结束之后C才可以发送;
249945ca02ede0fed8.png

使用特权

评论回复
tomyoct|  楼主 | 2019-3-31 11:08 | 显示全部楼层
详细的总裁过程为:

CAN总线控制器在发送数据的同时监控总线电平,如果电平不同,则停止发送并做其他处理。如果该位位于仲裁段,则退出总线竞争;如果位于其他段,则产生错误事件。
440925ca02f07323f1.png
帧ID越小,优先级越高。由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。

使用特权

评论回复
LM莫| | 2019-3-31 11:30 | 显示全部楼层
支持下,谢谢分享!

使用特权

评论回复
Creas_Tall| | 2019-3-31 14:42 | 显示全部楼层
不错,支持下!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

232

帖子

0

粉丝