Part Number:TMDSCNCD28388D
我想请教一下,我需要通过28388D的CAN给外界发送数据。要求发出的每一包数据都必须带有一个CAN ID,每个包的CAN ID必须不同。
想实现上面这个功能,该如何在您提供的例程中,修改和添加代码呢?(网上查了一下,大部分都是对不同ID报文的数据的接收文章)
特来请教
谢谢
Green Deng:
以can_ex3_external_transmit.c为例,可以在CAN_setupMessageObject函数中更改每次发送的ID。
也可以看一下这个帖子中的说明:https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/937628/tms320f28377d-using-one-mailbox-for-multiple-transmit-messages
,
@vince:
感谢您的回复
我看一下您发的链接
,
@vince:
在图中这个位置,可以设置一个变量,让他每发送一条8字节的数据后,循环加1
或者
按照您分享的链接中,利用定义,写成下面这种代码,用来发送带有不同CAN ID的数据
#define TX_MSG_OBJ_ID1 0x66
#define TX_MSG_OBJ_ID2 0x68
#define TX_MSG_OBJ_ID3 0x96
………
CAN_setupMessageObject(CANA_BASE, TX_MSG_OBJ_ID1, 0x95555555,CAN_MSG_FRAME_EXT, CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS, MSG_DATA_LENGTH);
CAN_setupMessageObject(CANA_BASE, TX_MSG_OBJ_ID2, 0x95555555,CAN_MSG_FRAME_EXT, CAN_MSG_OBJ_TYPE_TX, 0,CAN_MSG_OBJ_NO_FLAGS, MSG_DATA_LENGTH);
CAN_setupMessageObject(CANA_BASE, TX_MSG_OBJ_ID3, 0x95555555,CAN_MSG_FRAME_EXT, CAN_MSG_OBJ_TYPE_TX, 0,CAN_MSG_OBJ_NO_FLAGS, MSG_DATA_LENGTH);
我的理解是对的吗?
请教
,
@vince:
然后,每次CAN发送数据的时候。
代码如下所示:
#define TX_MSG_OBJ_ID1 0x66
#define TX_MSG_OBJ_ID2 0x68
#define TX_MSG_OBJ_ID3 0x96
………
CAN_setupMessageObject(CANA_BASE, TX_MSG_OBJ_ID1, 0x95555555,CAN_MSG_FRAME_EXT, CAN_MSG_OBJ_TYPE_TX, 0,CAN_MSG_OBJ_NO_FLAGS, MSG_DATA_LENGTH);
CAN_setupMessageObject(CANA_BASE, TX_MSG_OBJ_ID2, 0x95555555,CAN_MSG_FRAME_EXT, CAN_MSG_OBJ_TYPE_TX, 0,CAN_MSG_OBJ_NO_FLAGS, MSG_DATA_LENGTH);
CAN_setupMessageObject(CANA_BASE, TX_MSG_OBJ_ID3, 0x95555555,CAN_MSG_FRAME_EXT, CAN_MSG_OBJ_TYPE_TX, 0,CAN_MSG_OBJ_NO_FLAGS, MSG_DATA_LENGTH);
………….
for(i = 0; i < TXCOUNT; i++)
{
CAN_sendMessage(CANA_BASE, TX_MSG_OBJ_ID1, MSG_DATA_LENGTH,txMsgData);
CAN_sendMessage(CANA_BASE, TX_MSG_OBJ_ID2, MSG_DATA_LENGTH,txMsgData);
CAN_sendMessage(CANA_BASE, TX_MSG_OBJ_ID3, MSG_DATA_LENGTH,txMsgData);
…………
}
是这样吗?
特来请教
谢谢!
,
Green Deng:
没仔细看例程,看了一下,从这里开始回答有误了。
一般所说的CAN ID是指的MSGID (Message Identifier),在DCAN中也被称为ARBITRATION ID。
如果要每次发送的ID都是不同的,那么需要在CAN_setupMessageObject中更改Message Identifier,也就是函数中的0x95555555这个值。
可以通过定义一个变量来替代0x95555555,然后在CAN_setupMessageObject中更新这个变量来更改消息ID。
,
@vince:
感谢您的回复,已明白。
谢谢