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.
尊敬的 TI 专家:
我总共有15条 Rx 消息、我目前正在按需(非 循环)发送到 ECU、其中11条消息已正确接收、 MCAN0_CFG_IR 的第19位(DRX)正在设置中、 但是、当我发送其余4条消息时、ISR 被触发、但 DRX 位未设置、而位7 (RF1L)正在设置。
我不使用 Rx 缓冲器而 是 RX FIFO、因此对我来说有点奇怪。 如果我需要检查其他内容、可以有人指导我。
谢谢
Bikash
很抱歉、对于前一条消息中的拼写错误、我正在使用 Rx 缓冲器进行消息接收
您好、Bikash、
AM263x TRM (spruj17a.pdf)第13.4.1.4.7.3节"专用 Rx 缓冲器"中介绍了专用 Rx 缓冲器的 RX 处理。
请参阅第13.4.1.4.7.3.1节 Rx 缓冲区处理中描述的 Rx 处理要求。
RX 缓冲区处理包括以下步骤:
AM263x MCU+SDK 在不同的用例中包含一个 MCAN 驱动程序和多个用于 MCAN 的示例程序。
这里有一个使用 Rx 缓冲器的 MCAN 回路示例: https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/08_03_01_06/exports/docs/api_guide_am263x/EXAMPLES_DRIVERS_MCAN_LOOPBACK_INTERRUPT.html
还有一个针对 AM64x 使用 Rx 缓冲器的外部回送示例、您可以在此处查看: https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/08_03_00_18/exports/docs/api_guide_am64x/EXAMPLES_DRIVERS_MCAN_EXTERNAL_LOOPBACK_INTERRUPT.html
此致、
弗兰克
您好、Frank、
感谢您的意见、我将按照您提到的步骤进行操作。
我 所面临的问题是、有时甚至可以在 CAN 总线上看到 Rx 消息、寄存器 MCAN_IR [3或7和8]被设置而不是位19。
位8 (高优先级报文) 在哪种情况下应置位的任何想法?
另外,我关于 bit3和 bit7 (RF0L、RF1L)的假设只有在我使用 Rx FIFO 时才应置位。
BR
Bikash
您好、Bikash、
您是编写自己的驱动程序还是在 MCU+SDK 中使用 MCAN 驱动程序? 我强烈建议您查看我共享的 SDK 示例代码、因为它遵循 TRM 在 Rx 缓冲模式下进行 Rx 处理。
我在 TRM 的12.4.1.4.7.1验收滤波部分中注意到这一点:
根据滤波器元件的配置(请参阅第12.4.1.4.x 节"消息 RAM "中的 SFEC/EFEC)、如果滤波器匹配、则执行以下操作之一:
您的滤波器配置可能出错。
此致、
弗兰克
您好、Frank、
感谢您的参与。
是的、我正在尝试借助 MCU+SDK 示例编写标准化 CAN 驱动程序。
我从 MCU+SDK 8.03.01.05中的示例中引用了缓冲区处理
正如您正确地指出的、我的验收滤波器配置中有一个错误、很少有 Rxbuffers 没有按照我的配置使用我没有禁用它们、这些滤波器元素中的默认值似乎导致了这种意外行为。
现在、我添加了下面显示的用于滤波器初始化的突出显示部分、这解决了问题。
修改后 、MCAN_IR[19 DRX]始终设置为成功接收。
BR
Bikash