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

TMS570LS1227: CAN用多个CAN Message box(过滤)接收数据,如何区别是哪个CAN Message box接收到的?

Part Number:TMS570LS1227

使用HALCG软件配置完成后,CAN中断接收Message box的数据如何区分是哪一个CAN Message box过滤接收的数据?

中断接收代码如下:

void canMessageNotification(canBASE_t *node, uint32 messageBox)
{
/* enter user code between the USER CODE BEGIN and USER CODE END. */
/* USER CODE BEGIN (15) */
if (node == canREG1)
{
while (!canIsRxMessageArrived(canREG1, canMESSAGE_BOX5))
;
canGetData(canREG1, canMESSAGE_BOX5, CAN1_Rx_data); /* copy to RAM */
CAN1_ID_data[0] = canGetID(canREG1, canMESSAGE_BOX5)>>0;
CAN1_ID_data[1] = canGetID(canREG1, canMESSAGE_BOX5)>>8;
CAN1_ID_data[2] = canGetID(canREG1, canMESSAGE_BOX5)>>16;
CAN1_ID_data[3] = canGetID(canREG1, canMESSAGE_BOX5)>>24;

CAN1_Rx_flag=1;
}

/* node 2 – receive complete */
if (node == canREG2)
{
while (!canIsRxMessageArrived(canREG2, canMESSAGE_BOX1)); ///等待CAN2接收数据接收完成
canGetData(canREG2, canMESSAGE_BOX1, rx_ptr); /* copy to RAM */
CAN2_ID_data[1] = canGetID(canREG2, canMESSAGE_BOX1)>>0; //获取帧ID第一个字节
CAN2_ID_data[2] = canGetID(canREG2, canMESSAGE_BOX1)>>8; //获取帧ID第二个字节
CAN2_ID_data[3] = canGetID(canREG2, canMESSAGE_BOX1)>>16; //获取帧ID第三个字节
CAN2_ID_data[4] = canGetID(canREG2, canMESSAGE_BOX1)>>24; //获取帧ID第四个字节

num++;
if (num > 8)
num = 0;
rx_ptr += 8;
CAN2_Rx_flag=1;
}
}

上述代码接收多个过滤器过滤的CAN数据就无法识别了,需要一个获取CAN Message box过滤接收的数据中断响应的函数,来区分哪个CAN Message box进中断。

Cherry Zhou:

您好我们已收到您的问题并反馈,如有答复将尽快回复您。谢谢!

,

Cherry Zhou:

1. 当您为 CAN Message设计 SW 时,您需要配置messa box的接受滤波以接收带有预定义消息 ID 的消息。 接收到的消息将存储到指定的消息对象中。

2. 如果您将接收过滤器配置为接受所有传入消息 (ID 掩码被清除) ,那么可以将具有不同 ID 的接受消息复制到邮件框中。 此外您需要读取消息 ID。

该器件支持 64 个邮箱。 对于具有不同 ID 的邮件,我们不建议您使用一个邮箱。

赞(0)
未经允许不得转载:TI中文支持网 » TMS570LS1227: CAN用多个CAN Message box(过滤)接收数据,如何区别是哪个CAN Message box接收到的?
分享到: 更多 (0)