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.

[参考译文] TCAN4550:如何为 TCAN4550启用 TX 事件 FIFO

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/832549/tcan4550-how-to-enable-tx-event-fifo-for-the-tcan4550

器件型号:TCAN4550

您好!

我已经成功使 TCAN 器件能够实现一个简单的回显程序、当我通过总线发送一个 CAN 帧时、TCAN 将接收它、复制它、更改帧 ID、然后将复制的帧发送回总线上。 这很好。

尚未解决的问题是、在复制的帧回传到总线上后、我从未看到任何 TX 事件被放置在 TX 事件 FIFO 中的迹象。 在我的中断处理程序中、我从未看到任何 TX 事件标志被置位(TEFL、TEff、TEFW、TEFN、TFE)、当我读取 TX 事件 FIFO 状态寄存器时、它总是读取值0。
我在中断处理程序中一直看到 TC 中断标志、我认为这表示回传 CAN 帧的成功传输、我只是不明白为什么我在 FIFO 中没有收到任何 TX 事件。

一些背景:

所有中断处理都在任务的上下文中发生:当 nINT 发出中断信号时、MCU 的中断处理程序会设置一个标志、指示任务解除阻断。 当任务运行时、它执行所有 SPI 交互并处理 TCAN 中断标志。

TCAN 配置为:
5 SID 过滤器
5个 RX 缓冲器
5个配置为"队列"的 TX 缓冲器元件
RX FIFO 0包含17个单元
TX 事件 FIFO 包含5个单元

启动时、我启用以下中断:
TEFNE、RF0NE、DRXE

我还尝试启用 TCE、但这对接收任何 TX 事件没有影响
我还尝试为每个单独的 TX 缓冲区启用中断、但在获取 TX 事件方面仍然没有成功

是否缺少需要启用 TX 事件 FIFO 的配置步骤? 有什么想法说明为什么我从未看到任何已创建的中断、也从未收到指示新 TX 事件已准备就绪的中断?

谢谢!

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

    尊敬的 Dustin:

    在每个 TX 缓冲器元件中、为了将该缓冲器的传输记录到事件 FIFO 中、需要将标头(在消息标记之后的字1中)中的"EFC"位设置为1。  此位是否在您的应用中设置?  为了便于参考、您可能需要查看我们的软件用户指南的表15中定义的 TX 缓冲区元素字段:

    http://www.ti.com/lit/ug/sllu270/sllu270.pdf

    此致、
    最大

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

    尊敬的 Max:

    感谢您的建议、这正是我所遗漏的!

    快速跟进问题。 博世用户手册中规定,从 TX 事件 FIFO 读取时,读取 Get 索引后,应将 Get 索引乘以2,然后将其添加到 TX 事件 FIFO 的起始地址,从而计算相关的起始地址。
    您能确认乘以2是正确的吗?
    由于 TX 事件元素大小为8字节、我本应该将 Get 索引乘以8、类似于 RX FIFO Get 索引乘以 Rx 元素大小(以字节为单位)的方式。 我假设这意味着 TX 事件 FIFO 会获得每字索引、而不是像 RX FIFO 这样的每字节索引、这是正确的吗?

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

    尊敬的 Dustin:

    我认为您正确的做法是、您需要将 Get 索引乘以8、这与 RX FIFO 类似。  TCAN4550的所有内容都是基于字且具有字节地址的、因此您需要计算该字节地址。  我不熟悉您参考的 MCAN 手册中的特定章节或措辞、但我也与我们有关该器件的固件专家进行了交谈、他认为您需要将其与 RX FIFO 处理相同、但他并未真正使用过该器件。 如果您发现这不正确、我们将更仔细地查找您。

    此致、

    Jonathan