CAN总线的仲裁机制

来源:互联网 发布:淘宝的等级划分 编辑:程序博客网 时间:2024/04/30 07:07

1.名词

    多主机:在王总线上发送数据时,发送节点并不会指定有那个节点来接收,而是由接收节点自己过滤和选择是否接受该数据,所以发送数据为广播形式的。

    回读:每个节点往总线上发送数据的同时会同时读取总线上的数据,并与自己发送的数据作对比。

    线与:只有总线上所有节点发出的数据都为1时,总线状态才为1,只要有一个节点发送0,则总线上的状态为0。如果一个节点发送了1,而总线状态为0,节点在回读的时候发现总线上的电平与自己发送的不一致,则节点会采取相应措施,比如退出仲裁或者报错等。

    仲裁:仲裁是通过比较数据标识符的大小来进行的,标识符小的获得仲裁,大的则退出仲裁(通过线与来轻松解释)。

2.位仲裁

    在总线空闲态,最先开始发送消息的节点获得发送权。多个节点同时开始发送时,各发送节点从仲裁段的第一位开始进行仲裁,连续输出显性电平最多的节点可继续发送。

3.数据帧和远程帧的优先级

    具有相同标识符的数据帧和远程帧在总线上竞争时,RTR位为显性位的数据帧具有优先权,可继续发送。

    注意:所有未获得总线的节点都成为具有最高优先权报文的接收节点,并且不会在总线在此空闲前发送报文。

4.标准帧和扩展帧的优先级

    标准帧与具有相同ID(前11位)的扩展帧的仲裁是通过标准帧的RTR+IDE和扩展帧的SRR+IDE来实现的。

    SRR只能为隐性,如果标准帧为数据帧(RTR为显性),则再次就可仲裁出结果。

                                     如果标准帧为远程帧(RTR为隐性),则需要进一步比较IDE,扩展帧中IDE只能为隐性,而标准帧只能为显性,则在此可仲裁出结果。