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:关于 RF0N Rx FIFO 0 新消息的混淆

Guru**** 2587345 points
Other Parts Discussed in Thread: TCAN4550

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1540774/tcan4550-confusion-about-rf0n-rx-fifo-0-new-message

器件型号:TCAN4550


工具/软件:

大家好、我看到  MCAN 中断(地址= h0824)和 中断寄存器(地址= h1050)寄存器中都存在一个 RF0N 位。 两者之间有什么区别? 确认 FIFO 0 后是否需要将两者都清零(设置为 1)? 我使用的是 TI 提供的驱动程序、它不在寄存器映射中包含 h0824 寄存器。 我知道这个驱动程序可能不是完美的,但它仍然关心我。

有人能帮我对数据表中有关 h0824 的以下段落进行解码吗?

“8.6.3 中断/诊断标志和使能标志寄存器:16'h0820/0824 和 16'h0830

该寄存器块提供器件的所有中断标志。 由于 M-CAN 中断标志 16'h0824 在 16'h1050 MCAN 寄存器说明一节中进行了描述、此处将显示该标志、但需要前往 16'h1050 进行说明。 16h'0830 是启用中断以触发 16'h0820 的中断。'

谢谢!

-迈克

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

    尊敬的 Mike:

    寄存器 0x0824 是寄存器 0x1050 的只读副本、与寄存器 0x0820 中的其他器件(非 MCAN)中断位相邻。  

    通过将 MCAN 中断寄存器的只读副本放置在器件中断寄存器旁边、可以在单次 SPI 读取中读取两个寄存器和所有中断位、并将长度字段设置为 2、从而提高效率并减少读取中断寄存器所需的时间。

    MCAN 中断位可以从 0x0824 或 0x1050 读取、但只能通过向寄存器 0x1050 中的位写入“1"来“来清除。

    作为进一步解码可帮助您全面了解寄存器映射、我要指出的是、有三组具有不同地址范围的寄存器。

    寄存器的第一个范围 (0x0000 - 0x000C) 针对器件 ID 和 SPI 接口 FIFO。  这些寄存器不需要晶体或高速 (20MHz 或 40MHz) 时钟、并且只需要 SPI 时钟来返回值。

    第二类寄存器 (0x0800 - 0x083C) 是器件配置和不属于 MCAN 的中断标志。

    第三个寄存器 (0x1000 - 0x10FC) 直接来自由 Bosch 开发和许可的 MCAN IP。  这些寄存器与 Bosch 的 IP 相同、但有一个例外、即已将 0x1000 的偏移量添加到每个寄存器地址。  例如、TCAN4550 中的 MCAN 控制寄存器在 Bosch 文档(如)中的地址为 0x1018、但地址为 0x018 M_CAN 用户手册 (链接)

    如您所见、MCAN 中断寄存器 0x1050 位于 MCAN 寄存器块的中间、需要进行 2 次单独的 SPI 读取才能读取器件相关中断和 MCAN 中断、而无需在寄存器 0x0824 中提供 MCAN 中断的只读副本。

    用户只能根据需要使用寄存器 0x1050、因为这是唯一一个可以清除任何设置的中断位的寄存器。  但是、如果您轮询中断寄存器且 SPI 效率是一个问题、则在单个读取事务中读取 0x0820 和 0x0824 比对寄存器 0x0820 和 0x1050 进行两次单独读取更高效。

    此致、

    Jonathan