十、发送方式与过滤方式
1、广播发送及规则
我们以小组讨论现场为例来说明CAN总线广播发送规则:
1)一个房间代表同一路CAN总线,每一个小组代表一个CAN Node,每一个小组成员发言代表发送一帧CAN报文,对所有的小组成员进行编号,代表一个CAN报文的ID
2)所有小组成员都可以发言(多主的基于优先级的总线访问),如果想要发言,先报个人编号,然后进行发言。
3)如果两个人同时报个人编号,则个人编号较小的人先发言,编号较大的人停止发言并听编号小的人发言完毕,然后再开始发言(非破坏性的总线仲裁机制)
4)如果发言的人说的话其他小组未听清,则需要发言人重复发言(报文自动重发)。
5)如果发言的小组长时间说话别的小组无法听清,则将发言小组禁言一段时间(CAN busoff),时间结束后,则可以再次进行发言(BusOFF恢复)(故障码机制)
6)房间内的每个小组成员都可以随时离开,也可以随时进入房间加入交流(配置灵活)
7)位填充:如果CAN总线发送的报文出现连续重复的报文需要插入相反的位进行填充,本条未想到适合举例方法,只能以这种方法描述了。
2、报文过滤
MASK:1 1 1 0 1 0 0 0 1 1 0
ID: 0 1 0 0 1 1 0 1 0 0 0
Code: 0 1 0 x 1 x x x 0 0 x
一下子看这个可能会有点懵,如果mask为1,则总线上报文ID的位与Mask对应为相同才会接收,否则不接收;如果mask为0,则总线上的报文ID在该位任意值都接收;我们来举个例子可能大家就比较清楚的知道是如何实现过滤的了。
1)假如一个节点配置的Mask为0x7FF,则该节点将会接收总线上报文ID为0x7FF的报文。如果其他报文设置mask为0x7FF,则该节点仅接收它自身相同的报文。
2)假如一个节点配置的Mask为0x7F0,则该节点将会最多接收总线上报文ID为0x7F0 - 0x7FF的报文。
通过上面这2个例子,不知道大家能够有一点明白呢?
3、标识符定义 (ID)
1)标识符是唯一的,它描述了数据的特定含义,也决定了报文的优先级
2)标识符数值越小,优先级越高
3)最高优先级的报文在总线仲裁的过程中获得总线访问权
4)低优先级报文在下一个总线空闲自动重发
4、位填充
位填充是为了提供足够的跳变沿口
填充位出现在5个连续的相同极性的位之后
填充位与其前面的位极性相反
其实说到底也是为了保证通信的准确性,如果长时间没有跳变沿,那么接收方和发送方的同步性就有很大可能变差,这样就有可能导致后续通信信号的错乱,因此才会在出现连续5个相同记性的位之后,就插入一个极性相反的位,更好的去保证通信双方的准确性。
5、常见的国际标准文件
ISO11898
11898-1 数据链路层和物理信令
11898-2 高速媒体访问单元(物理层)
11898-3 低速、容错、介质相关接口(物理层)
11898-5 具有低功耗模式的高速介质访问单元(物理层)
6、显性位与隐性位
在CAN网络中实现通信顺畅(尤其是总线访问、故障指示和应答)的基本前提是总线显性电平和总线隐性电平之间存在明显差别。总线显性电平对应于逻辑“0”,总线隐性电平对应于逻辑“1”。
显性电平优先级高于隐性电平。当不同CAN节点同时发送显性和隐性总线电平时,CAN总线将呈现显性总线电平。只有当所有CAN节点都发送隐性电平时,CAN总线才呈现隐性总线电平。
0:显性位
1:隐性位
注意:这里和我们的常识刚好相反,一般我们认为显性是1,隐性是0,但是在CAN这里正好反过来记就好了。
接收时将物理信号转换成逻辑信号,收发器将差分电平信号转换为逻辑信号。 CAN-bus使用两根电缆进行信号传输,分别为CAN_High和CAN-Low(简称CAN_H和CAN_L)。CAN收发器根据两根电缆之间的电压差来判断总线电平,这种传输方式称为“差分传输”。电缆上的电平信号只有两种可能,分别为显性电平(代表逻辑0)和隐形电平(代表逻辑1)
7、CAN总线的线与机制
总线上可能有两种逻辑状态:
1 = recessive
0 = dominant
总线传输特点:
1) 一旦一个节点传输一个显性位(零),总线就处于显性状态;
2)仅当所有节点传输隐性位(个)时,总线处于隐性状态。
8、总线仲裁
总线访问机制
载波侦听和带冲突检测协议的多路访问(CSMA/CD)
CAN报文的优先级由标识符值决定
1)标识符的数值在系统设计的初始阶段分配
2)不同节点不允许发送相同ID报文(远程帧除外)
3)标识符数值越小,优先级越高。
4)总线冲突通过非破坏性位序列仲裁解决
总线仲裁示例: