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.

[参考译文] TMS320F28075:CAN 滤波器功能

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1196716/tms320f28075-can-filter-function

器件型号:TMS320F28075
主题中讨论的其他器件:C2000WARE

大家好、

客户存在一个问题需要您的帮助:

1.本手册下图中的结构是什么意思? 这不是寄存器配置位对吗? 如何将这些位与特定寄存器匹配? 例如 MsgVal、我可以在哪个寄存器中将其设置为0或1?  

2.掩码的使用。

根据我的理解、需要首先启用掩码功能、即上表中的 UMASK 位需要设置为1、然后根据 MSGID 位数(11位或29位)设置滤波器配置位。  

假设发送的 MSGID 为0x0003 (即最后两个位为1)和0X0007 (即最后三个位为1)  

如果未启用 Mask 函数,则 CAN 网络节点的 CAN_setupMessageObject()函数的第三个输入参数配置为0x0003。 由于屏蔽功能未启用、该节点仍在同时接收两条 MSGID 为0x0003和0x0007的消息。 因此、接受的消息 ID 数据集(0x0003)不是有用的信息、不确定这种理解是否正确?  

TI 的当前例程为单次发出/接收、但接收端具有显式 MSGID 集(与传输的 MSGID 一致)。 由于屏蔽函数被置位或者由于发送接收的 MSGID 是一致的、所以不清楚在这种情况下接收端是否能够接收数据。  

在上面的示例中、如果你只想接受 MSGID 0X0003的数据、我应该将接收 MSGID 消息配置为0x0003并启用掩码并将 msgIDMask 设置为完全0XFFFFFFFF 吗?  

据了解、如果您希望接收节点的某个位与其 MSGID 中的相应位密切匹配、则必须启用屏蔽并且相应位必须设置为1、对吗?

3.CAN_setupMessageObject()函数在当前 TI 例程中用于配置 CAN,但在哪里可以实现启用掩码函数?  

您可以帮助检查此案例吗?

谢谢、此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="534511" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1196716/tms320f28075-can-filter-function ]1. 该结构在手册的下图中意味着什么? [/报价]

    结构指的是报文对象的结构。

    [引用 userid="534511" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1196716/tms320f28075-can-filter-function "]这不是正确的寄存器配置位?

    它不直接对应于寄存器。 但是、该图中的每个"单元格"对应于某些寄存器中的位组。

    [引用 userid="534511" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1196716/tms320f28075-can-filter-function ]'如何将这些位与特定寄存器匹配? 例如 MsgVal、我可以在哪个寄存器中将其设置为0或1?  [/报价]

    MsgVal 是 IFxARB 寄存器的一部分。

    [引用 userid="534511" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1196716/tms320f28075-can-filter-function ]2. 掩码的使用。[/quot]

    请参阅 www.ti.com/lit/SPRACE5中的说明 、如果您仍有疑问、请告知我。

    [引用 userid="534511" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1196716/tms320f28075-can-filter-function ]3. CAN_setupMessageObject()函数在当前的 TI 例程中用于配置 CAN,但在哪里可以实现启用掩码函数?  [/报价]

    它作为参数在 CAN_setupMessageObject()函数中传递。

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

    您好、Haresh、

    客户还有几个问题:

    灰色字段具有专用寄存器、其他字段如何? Mtxd 和 MDir 对数据过滤有影响、它们是否需要配置? 但它们不是灰色字段、那么如何更改它们的值呢?

    我可以说、如果邮箱想要接收消息、如果启用了屏蔽、Mtxd、MDir 和 msgIDMask 会产生影响、并且应该满足它们的要求吗?

    此致、

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

    Ben、

       我将只能在下周早些时候作出答复。  

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

    您好、Haresh、

    我是否可以知道有任何更新?

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="534511" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1196716/tms320f28075-can-filter-function ]\n 我的理解是需要先启用 Mask 函数、即在上表中、umask 位需要设置为1、 然后、需要根据 MSGID 位数(11位或29位)设置滤波器配置位。[/quot]

    正确。

    [引用 userid="534511" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1196716/tms320f28075-can-filter-function 如果未启用 Mask 函数,则 CAN 网络节点的 CAN_setupMessageObject()函数的第三个输入参数配置为0x0003。 由于屏蔽功能未启用、该节点仍在同时接收两条 MSGID 为0x0003和0x0007的消息。 因此、接受的消息 ID 数据集(0x0003)不是有用的信息、不确定这种理解是否正确?  [/报价]

    如果屏蔽函数未被启用、那么发送的 MSGID 必须与接收报文对象的 ID 完全匹配。 例如,如果将接收报文对象的 ID 配置为0x0003,则只会接收 ID 为0x0003的报文。 节点不会接收 ID 为0x0007 (或除0x0003之外的任何 ID)的消息。

    [引用 userid="534511" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1196716/tms320f28075-can-filter-function ]TI 的当前例程是单次发出/接收、但接收端具有显式 MSGID 集(与传输的 MSGID 一致)。 由于屏蔽函数被置位或者由于发送接收的 MSGID 是一致的、所以不清楚在这种情况下接收端是否能够接收数据。  [/报价]

    它真的很简单。 如果不使用掩码、ID 必须与位匹配。 如果要在同一接收消息对象中接收不同的 ID,则必须进行掩码过滤。  请看 C:\ti\c2000\C2000Ware_4_02_00_00\driverlib\f2807x\examples\CPU1\CAN\ CAN_EX10_mask.c 示例:

    报文对象的 ID 配置为0x1F9FFFFA。 掩码过滤器配置为0x1F000000。 这意味着将收到 ID 为0x1Fxxxxxx 的任何消息。 xxxxxx 表示"无关"位;它们可以是任何值。 如果要接收所有 ID、只需使掩码值为0x00000000即可。

    [引用 userid="534511" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1196716/tms320f28075-can-filter-function 在上面的示例中,如果只想接受 MSGID 0X0003的数据,我是否应该将接收 MSGID 消息配置为0x0003并启用掩码并将 msgIDMask 设置为 Full 0XFFFFFFFF?  [/报价]

    如果您只想接受 MSGID 0x0003的数据、 只需将接收 MSGID 消息配置为0x0003、但不启用掩码。 您可以为相同的功能配置掩码、但不需要。 换言之,仅当您希望在同一接收消息对象中接收一组 ID 时,才配置掩码。  

    [引用 userid="534511" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1196716/tms320f28075-can-filter-function "]可以理解,如果您希望接收节点的某个位与 MSGID 中的相应位完全匹配,则必须启用掩码并将相应位设置为1,对吗?

    请看上面的答案、如果不清楚、请告诉我。

    [引用 userid="534511" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1196716/tms320f28075-can-filter-function/4512587 #4512587]灰色 字段具有专用寄存器,其他字段又如何? Mtxd 和 MDir 对数据过滤有影响、它们是否需要配置? 但它们不是灰色字段、那么如何更改其值?

    MXtd 和 MDir 是 CAN_IFxMASK 寄存器的一部分。 其他位是 CAN_IFxARB、 CAN_IF1MCTL、 CAN_IF1DATA 和 CAN_IF1DATB 寄存器的一部分。 您可以通过对 IFX 寄存器进行编程来更改它们的值。 请参阅 C2000ware 示例。

    [引用 userid="534511" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1196716/tms320f28075-can-filter-function/4512587 #4512587"]我能不能说,如果邮箱想要接收消息,如果启用了掩码,Mtxd、MDir 和 msgIDMask 会影响并应满足其要求?

    正确。 我在 www.ti.com/lit/SPRACE5的表2-1和2-2中对此进行了总结。