This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LS1227:可以使用多个 CAN 消息框接收数据(滤波)、如何区分哪个消息框可以接收数据?

Guru**** 2747405 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1049609/tms570ls1227-can-receives-data-using-multiple-can-message-boxes-filtering-how-to-distinguish-which-can-message-box-received-it

器件型号:TMS570LS1227

大家好、

使用 HALCG 软件配置后、是否可以中断从消息框接收数据、客户想知道如何区分消息框可以过滤接收到的数据?

中断接收代码如下:

void canMessageNotification (canbase_t *节点、uint32 MessageBox)

/*在用户代码开始和用户代码结束之间输入用户代码。 *
/*用户代码开始(15)*/
如果(节点== canREG1)

while (!canIsRxMessageArrived (canREG1、canMESSAGE_BOX5))

canGetData (canREG1、canMESSAGE_BOX5、CAN1_Rx_DATA);//复制到 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;

/*节点2 -接收完成*/
如果(节点== canREG2)

while (!canIsRxMessageArrived (canREG2、canMESSAGE_BOX1));///等待 CAN2接收数据接收完成
canGetData (canREG2、canMESSAGE_BOX1、Rx_PTR);//复制到 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++;
如果(num > 8)
num = 0;
RX_PTR += 8;
CAN2_Rx_FLAG = 1;

上面的代码不能识别由多个滤波器过滤的 CAN 数据、并且需要一个函数来使 CAN 消息框过滤接收到的数据中断响应、以区分中断中的 CAN 消息框。

请帮您检查此问题吗?

谢谢。

此致、

樱桃

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Cherry、

    1.设计 CAN 消息的软件时,需要配置消息框的接受过滤,以接收带有预定义消息 ID 的消息。 接收到的消息将存储 到指定的消息对象中。

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

    此器件支持64个邮箱。 对具有不同 ID 的邮件使用一个邮箱不是一个好主意。