• 1286查看
  • 0回复

[网络开发] CAN通讯系列4- CAN数据帧及其仲裁

[复制链接]


该用户从未签到

发表于 7-1-2024 16:23:56 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


在CAN通讯系列3-CAN通讯如何传递信号中,由于传递信号的分析需要,引出了CAN数据帧的ID,长度和数据段的概念,它们都与CAN协议帧相关。CAN协议帧有5种类型,如下表:
         
CAN通讯系列4- CAN数据帧及其仲裁w1.jpg
而我们当前使用到的是数据帧,故本文将根据CAN协议来介绍数据帧。1 CAN数据帧数据帧有标准和扩展两种格式,且这2种格式都具有相同的帧结构,都由7个段构成,分别是:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束,如下所示:
CAN通讯系列4- CAN数据帧及其仲裁w2.jpg

Source: CAN入门书,renesas
1.1 帧起始(SOF, Start of Frame)
帧起始表示帧开始的段,1个位的显性位。总线空闲时为隐性位,故帧起始以显性位可识别一帧数据开始发送,对于标准和扩展格式均如此:
CAN通讯系列4- CAN数据帧及其仲裁w3.jpg

Source: CAN入门书,renesas
1.2 仲裁段(Arbitration Field)
仲裁段表示数据的优先级的段,其作用就是根据报文ID来确定其发送优先级,ID数值越小,其优先级越高。标准格式和扩展格式在此的构成有所不同,如下所示:
CAN通讯系列4- CAN数据帧及其仲裁w4.jpg
Source: CAN入门书,renesas
对于数据帧,标准格式和扩展格式区别主要有3点:

    长度,标准格式仲裁段有12位,而扩展格式仲裁段有32位;

    ID数,标准格式最大有(2^11)个ID,而扩展格式最大有(2^29)个ID;

    格式标志RTR/SRR,如果是标准格式,则RTR/SRR为显性;如果是扩展格式,则RTR/SRR为隐性。
具体如何利用该段进行仲裁,看后面的仲裁机制章节。
1.3 控制段(Control Field)
控制段表示数据段的有效字节数,由6个位构成,标准格式和扩展格式的构成也有所不同。
CAN通讯系列4- CAN数据帧及其仲裁w5.jpg
Source: CAN入门书,renesas这里只关注4位数据长度码DLC,DLC与数据的字节数对应关系如下所示:
CAN通讯系列4- CAN数据帧及其仲裁w6.jpg

Source: vector learning1.4 数据段(Data Field)数据段可包含0-8个字节的数据,从MSB(最高位)开始输出。
CAN通讯系列4- CAN数据帧及其仲裁w7.jpg
Source: CAN入门书,renesas数据段的数据有几个字节,取决于控制段的数据长度码DLC的数值,DLC可以取0-15的值,但是它取9-15时没意义,因为已经超过数据段的长度。
1.5 CRC段(Cyclic Redundancy Check Field)
检查帧的传输错误的段,由15个位的CRC序列和1个位的CRC界定符(用于分隔位)构成,CRC界定符恒为隐性。
CAN通讯系列4- CAN数据帧及其仲裁w8.jpg
Source: CAN入门书,renesasCRC序列是根据多项式生成的CRC值,CRC的计算范围包括帧起始,仲裁段,控制段和数据段。
CAN通讯系列4- CAN数据帧及其仲裁w9.jpg

Source: CAN2.0B
1.6 ACK段(Acknowledge Field)
用来确认是否正常接收的段,由ACK槽和ACK界定符2个位构成。
CAN通讯系列4- CAN数据帧及其仲裁w10.jpg
Source: CAN入门书,renesas对于发送单元,在ACK段默认2个位的隐性位;而对于接收单元,接收到正确消息的单元在ACK槽发送显性位,通知发送单元正常接收结束。可理解为ACK段数值取决于接收单元,结合下图理解下该逻辑:
CAN通讯系列4- CAN数据帧及其仲裁w11.jpg

1.7 帧结束(End of Frame)
表示帧的结束的段,由7个位的隐性位构成。
CAN通讯系列4- CAN数据帧及其仲裁w12.jpg
Source: CAN入门书,renesas通过上述对数据帧定义与作用的介绍,不难理解,如果VCU要传递信号给MCU,那么先要定义CAN数据帧或CAN报文的ID号,再定义要装载数据段多长的数据,通过设置DLC实现,最后数据段部署信号及其顺序。
CAN通讯系列4- CAN数据帧及其仲裁w13.jpg

2仲裁机制
基于仲裁段的定义来分析下数据帧的仲裁过程,由于数据帧有两种格式,所有分为3种情况进行说明:标准格式的仲裁,扩展格式的仲裁 和标准格式与扩展格式的仲裁。


Source: CAN入门书,renesas
假设CAN总线上有两个节点Node_A和Node_B,某一刻他俩同时向总线上发送数据,如下
CAN通讯系列4- CAN数据帧及其仲裁w15.jpg

注:Tx表示发送,Rx表示接收,每个节点都有发送与接收功能。当节点作为发送方,会去接收自己发送的内容以进行检查,即回读机制。对比发送的数据与回读的数据,比如发现ACK槽为显性了,就说明发送的数据已被其他节点正确接收。
CAN通讯系列4- CAN数据帧及其仲裁w16.jpg
情况1:标准格式的仲裁Node_A和Node_B都是标准格式,那么仲裁发生在11位ID范围,即从D10-D0,采用线与机制(逢0变0),逐位进行比较,一旦某位出现不同,如上图的ID7位,则显性位覆盖隐性位,仲裁结束,显性位的对应节点Node_A胜出。情况2:扩展格式的仲裁,与情况1类似。情况3:标准格式与扩展格式的仲裁同样先进行前11位ID的比较,一旦某位出现不同,显性位的对应节点胜出;如果都一样,则标准格式的节点胜出,因为11位ID后1位,标准格式的RTR位恒为显性,扩展格式的SRR位恒为隐性,显性位的对应节点胜出。由上述分析可知,ID越小,其优先级越高。因此,当VCU要传递信号给MCU时,对于优先级高的VCU信号,应该将它们分配到ID号小的CAN报文中,确保能与其他节点的ID仲裁中胜出。
3 小结
到此,根据CAN数据帧的定义和作用,我们对于报文ID和数据长度有了新的认识,同时获取一些思路如何去设置他俩,为了定义控制器间的CAN通讯更近了一步。
CAN通讯系列4- CAN数据帧及其仲裁w17.jpg
另外,本文也提到了一些陌生的概念,比如显性和隐性。实际上,这些概念涉及到了CAN总线的定义。为了更加全面了解CAN协议,下篇文章将安排CAN总线内容的介绍。

CAN通讯系列4- CAN数据帧及其仲裁w18.jpg

source: Vector learning


该用户从未签到

发表于 16-3-2025 01:43:00 | 显示全部楼层
作为汽车工程师,深知CAN通讯在汽车领域的重要性。关于上述帖子内容,数据帧是CAN通讯的核心部分,其结构和格式至关重要。数据帧分为标准和扩展两种格式,均包括帧起始、仲裁段等7个段。其中,仲裁段包含数据帧的ID,用以标识信息优先级和发送方。数据段则包含实际数据信息。标准格式与扩展格式在帧结构上相同,但在ID编码上有差异。了解并正确应用这些数据帧格式,对于确保CAN通讯的准确性和效率至关重要。更多详细信息建议查阅CAN协议相关书籍或资料。
回复 支持 反对

使用道具 举报


该用户已被删除
发表于 16-3-2025 01:43:00 | 显示全部楼层
作为汽车工程师,深知CAN通讯在汽车领域的重要性。关于上述帖子内容,可以回复如下:

“CAN数据帧是CAN通讯的核心部分,用于传输数据。其结构包括帧起始、仲裁段、控制段、数据段等。其中,数据帧分为标准格式和扩展格式,两种格式结构相同,均由特定段组成。帧起始用于标识数据帧的起始,而仲裁段则包含标识符,用于决定数据帧的优先级。了解并正确使用CAN数据帧,对于确保CAN通讯的准确性和效率至关重要。”

希望对你有所帮助。更多专业内容建议查阅相关文献资料。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 05:47 , Processed in 0.348059 second(s), 39 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.