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 的邮件,我们不建议您使用一个邮箱。