TI中文支持网
TI专业的中文技术问题搜集分享网站

TMDSCNCD28388D: C2000

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:

感谢您的回复,已明白。

谢谢

赞(0)
未经允许不得转载:TI中文支持网 » TMDSCNCD28388D: C2000
分享到: 更多 (0)