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.
工具与软件:
团队成员、您好!
我们正在使用 TCAN4551芯片。 为此、我们集成了从 Git hub ("github.com/.../mbed-tcan455x")下载的示例代码。 我们能够在发生中断时接收 CAN 消息、并发送 CAN 消息。
现在、我们来看看水印用例。 为此、我们启用了"mcan_ie. RF0WE = 1;"并 为"MRAMConfiguration.Rx0NumElements"提供了32个值。 执行此配置后、我们 无法获得水线中断(我们已发送多条 CAN 消息、直到达到水线)。
您能否告诉我们这是否是使用水印的正确方法? 请为我们提供同样的指导。
感谢你的帮助。
Amit、您好!
我假设 MRAMConfiguration 也是如此。 您正在使用的代码中的 Rx0NumElements 会将寄存器 h10A0的 F0S 字段中的 Rx FIFO 0大小设置为32个元素。 您还需要在此寄存器的 F0WM 字段中设置水线位。 默认情况下、水线位设置为零、这将禁用中断、即使已在中断寄存器中启用该位也是如此。
如果尚未执行此操作、请查看以下文档以了解有关如何配置和使用 TCAN4551的更多信息。
TCAN45xx 软件用户指南 (链接)
M_CAN 用户手册 (链接)
此致、
Jonathan
Jonathan、您好!
现在、我们能够获得水线中断、我们要在接收到中断时读取 RX FIFO 0。 您能帮助我们如何读取 RX FIFO 0吗?
Amit、您好!
我建议查看的第3.4.2节 M_CAN 用户手册 (链接)。
通常、您需要读取 RX FIFO 0状态寄存器(0x10A4)来获取填充级别(是 FIFO 中新元素的数量)和 Get 索引(是 FIFO 中第一条或最旧消息的索引号)。
然后、用户需要计算与 Get 索引编号对应的缓冲区的 MRAM 地址、以便可以从存储器中读取消息。
如果 FIFO 中有多条消息、你可以在确认之前读取所有消息、如果你愿意、一次只读取一条消息。
完成从存储器读取消息后、您需要确认消息缓冲器已被读取、以便器件可以释放它们以接收新消息。 这是通过将最后一条读取消息的索引号写入 RX FIFO 0确认寄存器(0x10A8)来完成的。
使用 FIFO、您必须始终按接收顺序读取它们、以便可以正确维护 Get 索引值和 Put 索引值。
此致、
Jonathan