
上QQ阅读APP看书,第一时间看更新
2-36 CAN总线数据传输的优先级别是怎样规定的
因为CAN总线采用串行数据传输方式,如果有多个模块同时需要发出信号,那么在总线上一定会发生数据冲突。每一条数据帧都有它的优先级。当有多个模块试图发送信息时,它们自己的接收器为信息优先级进行仲裁,当其他模块发送的信息优先级高于自己控制器发送信息时,通知自己发送器停止发送,整个控制器进入接收状态。
如图2-20所示,在A、B、C三个模块同时发送的数据帧中有11位的状态域,这11位二进制中前7位既是发送信息的控制器标志符,同时又表示了它的优先级,即从前往后数,前面的零越多,优先级越高。而后4位则是这个控制器发送不同信息的编号,如发动机模块既要发送转速信号,又要发送水温等信号,则后4位就有所不同。
图2-20 CAN总线数据的优先级别
如图2-21所示,由于模块A的状态域在比较中先出现了1,模块A先退出。
图2-21 模块A失去优先权
如图2-22所示,由于模块B的状态域在继续比较中先出现了1,模块B先退出。
图2-22 模块B失去优先权
如图2-23所示,经过比较,模块C有更高的优先权,其数据帧先首先在网络上传输,模块A和B将在稍后传输。
图2-23 模块C发送成功