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.

[参考译文] AM2632:如何在 AM263x MCAL 中设置 CAN ID 过滤器

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1508596/am2632-how-to-set-can-id-filter-in-am263x-mcal

器件型号:AM2632

工具/软件:

您好、专家、

我代表我的客户询问此问题。

客户尝试使用 AM263x MCAL 10.01.00中的 can_app 与外部 CAN 器件通信、can_loopback_enable 设置为关闭。 可以按预期接收从 AM263x 发送的 CAN 帧。 但是、AM263x 无法接收来自外部器件的 CAN 帧发送。 通过调试、我们发现如果将 CAN ID 设置为0xC1 、则 AM263x 可以接收该 ID、因为 Can_Hw FilterType 设置为通过 CAN ID 0x40、0x41、0xBE ~ 0xC3传递帧。

客户需要接收 ID 为 0x480 ~ 0x4F0的 CAN 帧、下面是他在 EB 中的配置。

CanHandleType  :BASIC
CanHwObjectCount :2 (bitmask is enabled only with CanHwObjectCount > 1)
CanHwFilterCode:0x4f0
CanHwFilterMask:  0xf80

但是、无法接收 ID 为0x480 ~ 0x4F0的 CAN 帧。

请帮助分享在 EB 中配置 CAN ID 过滤器的方法和指南。

谢谢。

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

    QJ 正在与 Fan 一起研究这一点

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

    尊敬的 Fan:

    您是否要将 ID=0x40、0x41和0xBE~0xC3的消息存储到一个邮箱中?  每个邮箱可以有多个过滤器/掩码。

    Static Can_Hw FilterType Set_Can 配置 HardwareObject_0_CanHwFilter_0 =

      0x40U、       /*CanHwFilterCode*/
      0x1FFFFFFF、/*过滤器掩码*/
    };

    Static Can_Hw FilterType  Set_Can 配置 HardwareObject_0_CanHwFilter_1 =

      0x41U、       /*CanHwFilterCode*/
      0x1FFFFFFF、/*过滤器掩码*/
    };

    Static Can_Hw FilterType  Set_Can 配置 HardwareObject_0_CanHwFilter_2 =

      0xBEU、       /*CanHwFilterCode*/
      0x1FFFFFFF、/*过滤器掩码*/
    };

    Static Can_Hw FilterType  Set_Can 配置 HardwareObject_0_CanHwFilter_3 =

      0xBFU、       /*CanHwFilterCode*/
      0x1FFFFFFF、/*过滤器掩码*/
    };

    Static Can_Hw FilterType  Set_Can 配置 HardwareObject_0_CanHwFilter_4 =

      0xC3、       /*CanHwFilterCode*/
      0x1FFFFFFC、/*过滤器掩码*/
    };

    然后

    Static Can_Hw FilterType *CanConfig Set_Can HardwareObject_0_HwFilterConfigList[]=

      &CanConfig. Set_Can 硬件 Object_0_CanHwFilter_0、

      &CanConfig. Set_Can 硬件 Object_0_CanHwFilter_1、

      &CanConfig. Set_Can 硬件对象_0_CanHwFilter_2、

      &CanConfig. Set_Can 硬件 Object_0_CanHwFilter_3、

      &CanConfigu Set_Can 硬件 Object_0_CanHwFilter_4、
    };

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

    尊敬的 Qingjun:

    感谢您的答复。

    使用 CAN_APP 中的默认滤波器设置、只能  接收 ID 为0x40、0x41、0xBE ~ 0xC3的 CAN 帧。 客户希望接收 ID 为0x480 ~ 0x4F0的 CAN 帧。  

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

    接收 ID 0x480~0x4F0 (标准11位 ID)

    请使用过滤器=0x480

    且 MASK = 0x78F

    过滤器: 1  0     0 1  0 0 0 0 0 0            0  0

    掩码: 1 1       1 1  0 0 0       1  1  1 1   

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

    掩码中的0对应于"无关"、1表示该位必须与滤波器中的值匹配。

    因此、传入消息 ID 的位[10:7]必须为 b1001

          传入 msg ID 的位[3:0]必须为 b0000

    传入 msg 的位[6:4]可以是任何组合  

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

    尊敬的 Qingjun:

    如前所述、我们对掩码中位设置的预期行为有相同的了解、但测试结果不符合预期。

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

    尊敬的 Fan:

    我正在处理此示例、但我没有使用范围滤波器。  

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

    离线处理客户(Webex 和消息)。

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

    此问题无法重现、 CAN 经典滤波的预期功能正常工作。

    以下是更多详细信息:

    #1。 硬件对象配置:确保 CanHwObjectCount 大于1、以使 CAN 传统筛选正常工作。 当 CanHwObjectCount = 1时、硬件对象用作专用消息缓冲区。

    #2. CAN 滤波器配置:要 根据对传统 CAN 滤波的了解将0x480传递到0x7FF ID 范围、请使用代码0x480和掩码0x400

    注意:我们还针对 E2E 中给出的精确范围进行了测试、测试结果符合预期

    #3. 当我们尝试使用0x480到0x7FF 范围内的任何 ID 发送 CAN 帧时、我们能够使用 CAN_APP 示例成功接收数据。

    #4. 我们与 Fan 进行了调试会话、他最终也按预期工作。 他将与客户进行调试、并尝试使其也适用于客户的应用。