1:帧类型的区分
1,1标准对于帧类型的划分
ISO11898-1中将数据链路层的帧(准确的来说是DDL中的MAC子层帧),分为两种大格式(传统Class帧 和CAN_FD帧),划分依据是,帧结构的不同。
而两个大类同时又可以根据帧结构的不同(主要判断是ID的位数不同)同时可以划分为两个小类
base标准类和Extend和拓展类
(*1)CBFF(class base frame format)传统基础帧格式(根据功能(即相关标志位),又可分为远程请求帧,和数据帧)
(*2)CEFF(Class extend frame format)传统拓展帧格式根据功能(即相关标志位),又可分为远程请求帧,和数据帧)
(*3)FBFF(FD base frame format)FD帧的基础格式(FD格式没有远程帧)
(*4)FEFF(FD extend frame format)FD帧的拓展格式(FD格式没有远程帧)
1.2四种帧类型的仲裁场范围
(1.2.1)CBFF(class base frame format):
仲裁场范围 11bit 的ID+RTR。
这表明了:
(*1.1)CBFF类型的帧,当ID相同时,数据帧的优先级(因为RTR=0,是显性)>远程帧(因为RTR=1,是隐性)。
(*1.2)当CBFF远程帧ID,优先级>CBFF数据帧时,远程帧的优先级还是高
(*1.3)CBFF种的IDE是始终要保持显现=0,不参与仲裁
(1.2.2)CEFF(Class extend frame format):
仲裁场范围=前 11bit 的ID+SRR+IDE+扩展的11bit标志符+RTR
*1)ID前相同,CEFF数据帧优先级>CEFF远程请求帧。
*2)所有CEFF类型帧中SRR,IDE均需要=1,参与仲裁但是意义不大
(1.2.3)FBFF(FD base frame format):
仲裁段:11bit ID+RRS,因为CANfd,不在支持远程帧,所以RRS一直会维持在显性,
(1.2.4)FEFF(FD extend frame format)
仲裁段:11bit ID+SRR(始终保持显性)+IDE(始终保持隐性)+18bit ID+RRS(由于没有远程帧,此位也保持显现)
1*)至于为什么 SRR也要保留一个位给它,且始终维持显现状态,这是为了兼容其他类型的帧,后面会详细简绍
段落小结
总结下来,就是传统帧,仲裁段总是从11bit ID开始,到RTR,中间不间断
CAN_FD帧,仲裁段总是从11bit ID开始,到RRS,中间不间断
2:不同帧类型之间的仲裁优先级关系
2.1 CBFF与CEFF优先级的比较
前11bit ID相同的,传统标准数据帧与传统拓展数据帧+传统扩展远程帧,仲裁先开始11bit ID比较,相同,则继续比较 RTR位与SRR位,传统数据帧RTR位为显现0,传统拓展数据帧SRR始终=1。仲裁结束,相同前11 bit 的ID情况下,传统数据帧的优先级更高。
注意,上述情况下,是不需要仲裁到IDE位的。在IDE的前一位,就分出优先级了。
传统标准远程帧,与传统拓展数据帧+传统扩展远程帧的优先级,此时传统标准远程帧的RTR=1,SRR=1,于是比较下一位,传统标准远程帧的IDE=0,传统拓展数据帧+传统扩展远程帧的IDE=1。
此时,传统标准远程帧的优先级更高
段落小结:
总结如下;前11bitID相同情况下。
传统标准数据帧 > 传统标准远程帧 > 传统拓展数据帧 > 传统扩展远程帧
2.2 FBFF与FEFF之间的优先级关系
当前11bit 的ID相同时,就会比较RRS和SRR,此两个标志位,因为CAN_FD中没有远程帧,FBFF,RRS=0, SRR=1
段落小结:
FBFF数据帧> >FEFF数据帧
引言:
关于标准帧和CANFD帧的优先级关系(前提是系统兼容传统CAN和CANfd,主要看收发器如TJA1445就兼容CAN和CAN_FD).
那么,如何判断相同ID(至少是前11bit ID相同情况下),传统CAN和CANFD的优先级关系?
因为上文我们已经理清楚了,传统CAN(四种类型,传统标准数据帧 > 传统标准远程帧 > 传统拓展数据帧 > 传统扩展远程帧)和CAN_FD(FBFF数据帧> >FEFF数据帧)。故我们只要比较传统帧中的最低优先级,和CAN_FD的最高优先级
2.3 传统扩展远程帧与FBFF数据帧的优先级
因为SRR=1,RRS=0,所以,当前11bit ID相同时,CAN_FD标准帧优先级更高。
那接下来,比较FEFF与,传统扩展远程帧优先级关系
可以看到,当ID相同时,一直仲裁到仲裁到CEFF最后一位,FEFF中的RRS=0,传统扩展远程帧 RTR为=1,故FEFF优先>传统扩展远程帧
再比较FBFF与传统拓展数据帧之间的优先级
当ID相同时,RRS>SRR,故FBFF优先级>传统拓展数据帧
FEFF与传统拓展数据帧优先级
此时又有一个新的概念,仲裁段的概念,本身是为了兼容传统CAN和CAN_FD对,CAN_FD的仲裁段做出了,适当延伸。图17中标注的不是很清楚,其实是拓展到res,位的。
于是当总线上FEFF与传统拓展数据帧参与仲裁,FDF位之前的位全部相同,此时CEFF帧仲裁段结束,进入控制段,CEFF以为自己已经赢得仲裁,按照格式继续发送数据。但是FEFF此时还没有结束仲裁,他继续参与仲裁,FDF=01(固定的),此时CEFF的FDF(也就是之前的很多老资料中提及的R1保留位)固定=0.
故得出结论:CEFF数据帧优先级>FEFF
本段小结:
目前能确定的仲裁优先级:FBFF>CEFF数据帧>FEFF>CEFF远程帧.
2.4 FBFF与CBFF远程帧之间的优先级关系
当高bit ID相同时 RRS=0,CBFF是远程帧时RTR=1,
结论FBFF优先级>CBFF远程帧>CEFF数据帧>FEFF>CEFF远程帧
2.5,最后一步王者的较量 FBFF与CBFF的优先级
可以看到FBFF仲裁到FDF位时,仲裁失败,退出总线竞争
总的结论:
CBFF数据帧>FBFF>CBFF远程帧>CEFF数据帧>FEFF>CEFF远程帧