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.

[参考译文] TMS320F28P650DK:如何配置 CAN 滤波器

Guru**** 2549850 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1293534/tms320f28p650dk-how-to-configure-can-filter

器件型号:TMS320F28P650DK

大家好、

客户有问题需要您的帮助:

配置为 CAN 标准帧过滤,如图所示,修改了 main 函数的 can_setupMessageObject()函数,但使用 CAN 工具多次发送消息,尝试了所有类型的 ID, 然后可以接收消息(LED1将闪烁)、检查寄存器、但 MSK 的值未修改。
我最初的目的是仅接收具有0x607 ID 的消息、并且其他消息被过滤。 如何修改配置?

谢谢。此致、

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

    尊敬的 Ben:

    对不起 Ben ,我看不到一个图,但不管怎样,在函数  CAN_setupMessageObject()中,一定要使用标志 CAN_MSG_OBJ_USE_ID_FILTER 作为标准 ID。  将消息 ID 设置为0x607、将屏蔽值设置为0x1FFFFFFF。  这应该只允许接收 ID 为0x607的消息。  掩码位位置的"0"值将忽略该位置的屏蔽、但"1"表示该位位置用于滤波。  

    关于屏蔽值的一个重要说明是它存储在 CAN_IFxMSK 寄存器中并被放置在位[28:0]中。  如果使用标准 ID、则掩码信息将使用11个最高有效位[28:18]。  为了进行说明、假设您希望允许接收从0x600到0x60F 的消息 ID、屏蔽值应为0x1FC3FFFF。  对于标准 ID、CAN_IFxMSK 掩码位置[28:18]中的二进制值为111 1111 0000 (忽略消息 ID 的4个 LSB)、但当存储在屏蔽位位置[28:0]时、 掩码 值 将变为 0x1FC3FFFF。

    希望这对您有所帮助。

    此致、

    约瑟夫