简述CAN通信协议-02(数据帧)

数据帧


仲裁场

标准格式中的数据帧

拓展格式中的数据帧

仲裁场解决的问题:如果2 个或2 个以上的单元同时开始传送报文,那么就会有总线访问冲突,那么仲裁机制就是用来根据标识符优先级来一个一个的去掉低级别的数据。

如图所示,节点 A 和节点B 的标识符的第10、9、8 位电平相同,因此两个节点侦听到的信息和它们发出的信息相同。第7位节点B发出一个“1”,但从节点上接收到的消息却是“0”。

为什么呢,因为A 节点同时发出显性位,让总线也变成显性了,也就是0。节点B 会退出发送处于单纯监听方式而不发送数据;节点A 成功发送仲裁位从而获得总线的控制权,继而发送全部消息。

总线中的信号持续跟踪最后获得总线控制权发出的报文,本例中节点A的报文将被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪个节点被传送前,报文的起始部分已经在网络中传输了,因此具有高优先级的节点的数据传输没有任何延时。

在获得总线控制权的节点发送数据过程中,其他节点成为报文的接收节点,并且不会在总线再次空闲之前发送报文,在这逐位的比较中,最终节点B 因为第七位的偏差丢掉了总线。从此单纯监听,江山就拱手让给了节点A 了。这就是仲裁机制。

标准格式下,仲裁场由11 位识别符和RTR 位组成。

但在扩展格式里,包括29 位识别符、SRR 位、IDE 位、RTR 位。

RTR 位,Remote Tranmission Request BIT 全称为远程发送请求位。它在数据帧里必须为显性0 ,但在远程帧里为隐性1

SRR 位,替代远程请求位,SRR 是一隐性位,也就是1,它在扩展格式的标准帧RTR 位位置,那么标准帧怪不得优先于扩展帧了,因为在传输完11 位标识符之后(扩展帧的后18 位在最后发送,先发送11 位标识符),轮到标准帧的RTR 位和扩展帧的SRR 位了。这时候,标准帧的RTR 为显性0,而扩展帧SRR 为隐性1,这样,总线自然就被标准帧占据。

CAN 总线协议设计者,肯定是设计了数据帧优先于远程帧。

所以IDE(Identifier Extension Bit),全称识别符扩展位,它属于扩展格式的仲裁场。

对于标准格式,IDE位属于控制场;对于扩展格式,IDE位属于仲裁场

IDE位,在标准格式的IDE位为显性0,而扩展格式的IDE位为隐性1

控制场

控制场由6个位组成。

标准格式里的帧包括数据长度代码、IDE位(为显性位0)及保留位r0。

扩展格式里的帧包括数据长度代码和两个保留位:r1和r0。

其保留位必须发送为显性,但是接收器认可“显性”和“隐性”位的任何组合。

数据长度代码(标准格式以及扩展格式)DLC,如下表所示

数据长度代码指示了数据场里的字节数量。其中:d—“显性”, r—“隐性”,数据帧允许的数据字节数为{0,1,...,7,8}。其他的数值不允许使用。

数据场

数据场由数据帧里的发送数据组成。它可以为0~8个字节,每字节包含了8个位,首先发送最高有效(MSB)。

循环冗余码CRC场

CRC场包括CRC序列(CRC Sequence),其后是CRC界定符(CRC Delimiter),结构如图:

生成 CRC 码的基本原理:

任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。

例如:代码1010111 对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1 对应的代码101111。

参考一下下面的例题,自已再领悟一下吧!已知信息位为1101,生成多项式G(x)= x3+x+1,求CRC 码。

要传输的信息序列为1101,在末尾添加所给多项式的最高次阶个0,如本题为x^3,则添加3个0,变为:1101000;

由多项式G(X)=X3+X+1,得其阶数为1的二进制编码为:1011;1101000对1011进行模二除法,所得到的余数即为校验码,把校验码添加在原数据尾部即为所求的编码,则实际发送的数据序列为1101001。校验码计算过程如图所示:

模二除法

应答场(ACK Field)

应答场长度为2个位,包含应答间隙(ACK Slot)和应答界定符(ACK Delimiter),如图所示。在ACK场(应答场)里,发送节点发送两个“隐性”位。

当接收器正确地接收到有效的报文,接收器就会在应答间隙(ACK Slot)期间向发送器发送一“显性”位以示应答。

每一个数据帧和远程帧均由一标志序列界定。这个标志序列由7个“隐性”位组成。

PS(对CAN总线协议的初步理解):收发设备用CAN总线协议传输每一帧数据是通过交互的过程完成的,以发数据帧为例,发送设备先将一帧数据的SOF、仲裁场、控制场、数据场、CRC场发送,然后等待接收设备发送应答信号,发送设备接收到应答信号后发送帧结尾,完成一帧数据的发送过程。

猜你喜欢

转载自blog.csdn.net/qq_39478139/article/details/107456553
今日推荐