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.

[参考译文] TCAN4550EVM:禁用中断后 nINT 仍会执行操作

Guru**** 2663045 points

Other Parts Discussed in Thread: TCAN4550EVM

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1578464/tcan4550evm-nint-still-action-after-disable-interrupt

器件型号:TCAN4550EVM


您好的团队、

我的客户正在测试 TCAN4550EVM。

它们使用 API TCAN4x5x_InterruptEnable Device_Configure (&0) 来禁用所有中断、但 nINT 仍会执行操作。 它们读取的寄存器 0820h 和 0830h 并非全部为 0。

您能解释一下为什么该 API 无法禁用中断吗?

image.png

谢谢、

Severi

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

    尊敬的 Severi:

    nINT 引脚是寄存器 0x0820 和 0x0824 中设置的所有“已启用“位的逻辑或。  器件中断启用寄存器 (0x0830) 只能禁用中断寄存器 (0x0820) 中的某些位、使 nINT 引脚电压发生变化。  

    寄存器 0x0820 和 0x0830 中的位之间存在一对一的相关性。  不能禁用寄存器 0x0820 中任何具有相应 RSVD 名称的位、以免导致 nINT 引脚发生更改。

    要清除任何设置的中断位、您需要向设置的位写入“1"。“。  向寄存器写入 0xFFFF 将有效地清除任何置 1 的位。   

    请注意、寄存器 0x0824 是 MCAN 中断寄存器 0x1050 的只读副本、因此若要清除寄存器 0x0824 中的任何置位、需要向寄存器 0x1050 中的置位写入“1"。“。

    如果在寄存器 0x0820 中设置了 SPI 错误 (SPIERR) 位、则需要清除状态寄存器 0x000C 中报告 SPI 错误的位。   

    一旦您清除寄存器 0x000C、0x0820 和 0x0824/0x1050 中的所有设置位、nINT 引脚应变为高电平。

    此致、

    Jonathan

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

    尊敬的 Jonathan:

    根据您的回复、 我能否理解、当前导致 nINT 引脚触发的原因是 RSVD 位 显示在 0x0830 寄存器中并且无法设置、并且 0x0820 寄存器中存在有意义的标志位、例如 SPIERR 和 CANSLNT 等? CANSLNT 无法清除?

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

    是、可以通过向寄存器 0x0820 中的位写入“1"来“来清除 CANSLNT。  

    如果您想防止 CANSLNT 位导致 nINT 引脚拉至低电平、也可以将寄存器 0x0830 中的 CANSLNT 位设置为“0",“,以、以禁止 CANSLNT 标志生成硬件中断。  该位仍将在寄存器 0x0820 中设置、但不会导致 nINT 引脚拉至低电平。

    此致、

    Jonathan

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

    感谢您的解释。 但是、我还注意到 CANSLNT 标志将触发 CANERR 和 GLOBALERR。 这两个标志存在于 0x0820 中、但不存在于 0x0830 寄存器中。 因此、这两个标志保持启用状态。 与 CANSLNT、CANERR 和 GLOBALERR 一起将 nINT 引脚拉至低电平。  如何从根本上解决 CANSLNT 的问题?

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

    为了防止 CANSLNT 导致 nINT 引脚拉至低电平、您只需将寄存器 0x0830 的 CANSLNT 位设置为 0。  (0x0830[10]= 0)。

    CANSLNT、CANERR 和 GLOBALERR 位仍将在寄存器 0x0820 中设置、但由于寄存器 0x0830 中的 CANSLNT 位已被禁用、nINT 引脚将不会被拉低。

    但是、其他仍启用的位将导致 nINT 引脚拉至低电平。

    此致、

    Jonathan