STM32CAN协议——帧的标准格式和扩展格式与优先级的关系

一、CAN数据帧的标准格式和扩展格式

我们知道CAN总线上的数据帧都可以配置一个ID号,其可以为11位(标准ID格式)或者29位(扩展ID格式),这也是数据帧的标准格式扩展格式的区别所在。

这个ID在CAN优先级中起着重要的作用,它决定了数据帧发送的优先级。对于优先级高的信息,可以给他打包上一个高优先级的ID,使它能够及时的发送出去。

 

RTR:用于区分此帧是数据帧还是遥控帧,显性电平(逻辑0)表示数据帧,隐性电平(逻辑1)表示遥控帧。

    数据帧:包含了我们要传输的数据的帧,用于往总线上发送数据。

    遥控帧:请求其它节点发出与本遥控帧具有相同ID号的数据帧。
    比如:在某一个时刻,节点A向总线发送了一个ID号为0x01的遥控帧,那么就意味着节点A请求总线上的其他节点发送ID号为I0x01的数据帧。
假如节点B能够发出ID号为0x01的数据帧,那么节点B就会在收到节点A发出的遥控帧之后,立刻向总线上发送ID号为0x01的数据帧。

SRR:只存在于扩展格式的帧当中,用于代替标准帧中此位置的RTR位,置为隐性电平即可。

IDE:用于区别标准格式还是扩展格式的数据帧,显性电平表示标准格式(标准格式的SRR封装在控制段中),隐性电平表示扩展格式。

二、总线如何根据ID号来仲裁报文的优先级

CAN总线有个特点是如果总线上同时出现显性电平(逻辑0)和隐性电平(逻辑1),总线的状态会被置为显性电平。

假设现在有两个节点同时发送报文(如下图),总线仲裁的过程如下:

1、开始阶段两个节点发送的电平一样,所以他们一起处于发送状态。
2、到了某一时间,节点1发送了隐性电平,节点2发送的是显性电平,这时由于上面介绍的CAN总线的特点,节点2竞争成功。
3、节点1随之失去总线的占有权,转为接收状态,节点2持续处于发送状态。

猜你喜欢

转载自www.cnblogs.com/Irvingcode/p/11815668.html
今日推荐