1、关键词
1.1、Module、Controller、buffer、FIFO....
TC397中有4个module,一个module有4个node, 一个node表示一个就是一个controller,
至于为什么一个module有四个node而不是3个、5个或者其他,暂时不清楚,TBD。
buffer是用来存放CAN帧的,也叫 dedicated buffer,大小可配,最大为18 words(32 bit)
如今的CAN Controller基本都支持FD,故以FD的特性为基础
这一帧数据在TC397中被称之为一个element, 常规说的配置CAN FD数据长度为64byte指的只是数据段,一个element除了包含数据信息还有ID、BRS等信息,
如下图:R0 R1为控制信息,R2及以后为数据,CANFD最长支持64Byte,故一个element最大长度:
length = R0 + R1 + 64byte ÷ 4 = 18 words
一个R代表一个word
FIFO是由buffer组成的,最大范围由芯片特性确定,一般Tx FIFO最多为32个buffer 组成,Rx FIFO最多由64个buffer组成。
TC397还提供Tx Queue的方式,Queue是FIFO机制的一种,两者都是一种缓存空间也就是说可以将一段缓存空间配置成FIFO或者Queue(当然前提是需要硬件底层支持)
1.2、Tx Buffer、Tx FIFO、Tx Queue特性
用多个Tx Buffer发送数据时,优先级小的会先发,buffer的优先级通过CAN ID进行比较
ID越小优先级越高
FIFO则是先进先出,没有优先级区分,不建议使用,会发生优先级反转,如果优先级低的先进,就会阻塞优先级高的无法第一时间发送出去
Queue则是根据先后顺序进行存放,发送时和buffer一样,有优先级机制,优先级高的先发,若优先级相同,根据buffer Id号判断,小的先发
Note:EB 配置时,如果配置为FIFO,实际是指Queue这种类型
也是因为Queue是通过buffer组成,所以也具有了优先级 这种机制。FIFO也是buffe组成,为何不直接使用优先级机制,感觉是为了区分,机制使能就是Queue,不使能就是Queue,更加灵活。
至于使用:可以参考CAN底层驱动Mailbox配置技术要点全解析_chscan_rx_std_mailbox-CSDN博客
1.3、Autosar CAN driver
下图为官方文档描述:
其中CAN hardware Unit 对应上文提到的Moude
Controller也就是Node
Autosar中还有一下概念:
Hardware Objects: 即buffer
HOH:Hardware Objects Handle ,一个HOH可以对应为一个Hardware Objects,即FULL CAN,也可以对应多个,即BASIC CAN。
HTH:将HOH作为发送使用
HRH:将HOH作为接收使用
2、配置参数对应
[ECUC_Can_00320] CanIndex:即module的ID号
[ECUC_Can_00320] CanControllerId:这个ID是逻辑ID号,并不是芯片上某个CAN node的实际ID号,比如CanControllerId = 0,对应的node id可以是0 也可以是1 也可以是2。
[ECUC_Can_00485]CanFdPaddingValue:是指如果发送FD数据的时候,配置为64byte但实际数据不够64bye,会根据该项配置的数据进行填充。
其他项感觉容易理解,可直接参考规范
附录:参考文档
AUTOSAR_SWS_CANDriver R22-11
Infineon-AURIX_TC3xx_Part2-UserManual-v01_00-EN