Part Number: TMS320F28075
Other Parts Discussed in Thread: C2000WARE

CAN通信里,有多个名词,且在不同的地方表述不同,有点困惑,请教下:

1.以28075为例,该芯片有2个完全相同的CAN模块,分别是CANA和CANB。每次CAN模块都有32个邮箱,mailbox,也被称为message object。在使用的时候,这32个邮箱都需要对其进行编号,编号范围从0~31(如果不连续设置,比如设置一个邮箱编号为33,那就是错误的?)。不知道这个理解是否正确?

2.有多种不同的identifier,比如CAN identifier、message identifier,又有简写,如CAN ID、MID,不知道这俩是否是前面俩的简写?另外,还出现了MSGID、MsgVal、 messager object ID、 messager object ID number、邮箱标识符、报文标识符等,这些该如何区分呢?是否identifer、ID、标识符这三者是一个意思?

3.顺着上面的内容,是否每个节点设备需要一个ID、每个节点设备需要ID、每个节点ID的邮箱需要ID、每个节点邮箱发送的报文需要ID?

3.CAN模块里有两个优先级比较:当同一时刻,多个不同节点的设备向总线发送数据,这个时候就会使用报文标识符来判断优先级;当同一个设备需要传输多个数据时,那就根据邮箱编号来判断优先级。不知道这样理解是否正确?

4.目前的例程里,主要是用CANA发送一个固定Message Identifier的数据,接收是用CANB来接收相同 Message Identifier的数据。这样因为Message Identifier是相同的,就相对比较简单。但在实际应用中,需要传输多个不同类型的变量数据,那么自然需要为每一个数据设置独特的Message Identifier。这个时候对于接收方来说,应该是需要通过Message Identifier来判断收到的数据是什么变量,这种多Message Identifier来传输多个数据的设置怎么弄吗?目前有例程可以参考吗?

5.CAN_setupMessageObject函数用来设置哪个邮箱发送哪个MSGID的数据,那如何实现同一个邮箱发送多个不同MSGID的数据呢?连续使用多个CAN_setupMessageObject函数不会导致前面的被后面的覆盖吗?

CAN_setupMessageObject(CANB_BASE, RX_MSG_OBJ_ID, 0x95555555,
CAN_MSG_FRAME_EXT, CAN_MSG_OBJ_TYPE_RX, 0,
CAN_MSG_OBJ_RX_INT_ENABLE, MSG_DATA_LENGTH);

以28075为例,该芯片有2个完全相同的CAN模块,分别是CANA和CANB。每次CAN模块都有32个邮箱,mailbox,也被称为message object。在使用的时候,这32个邮箱都需要对其进行编号,编号范围从0~31(如果不连续设置,比如设置一个邮箱编号为33,那就是错误的?)。不知道这个理解是否正确?