您好!
我一直在处理 TCAN4550的驱动程序代码、并且能够成功地在 CAN 总线上发送和接收数据包(已通过 CAN 转 USB 工具验证)。
到目前为止、通过轮询针对 RF0N/RF1N 标志位的 m_CAN 中断寄存器(0x1050)来接收数据。
当我尝试使用 nINT 中断引脚而不是轮询数据时、会发生这个问题。 当发送或接收数据时、我始终从 nINT 引脚获得中断、当我读取中断状态寄存器(0x820)时、我始终得到值0x4A0、即标志 CANSLNT、CANERR、GLOBALERR。 我已经尝试设置 SWE_DIS 位并从状态寄存器(0x0800)禁用看门狗、但我仍然继续获取 CANSLNT 中断。
一些观察结果:
接收 CANSLNT 中断时、即使 m_CAN 中断寄存器(0x1050)中的 RF0N/RF1N 位已更改、同一寄存器(0x820)中的 m_CAN_INT 位也不会置位。
2、CANSLNT 中断在发送一个 TX 包和接收一个 Rx 包后都触发。 清除中断对解决该问题没有帮助、下次接收数据时、中断仍会触发。
如果我禁用 CANSLNT 中断、那么在接收到数据时根本不会获得中断。 我已验证数据仍能正确接收到 Rx FIFO 中、但未设置任何 m_CAN 错误。
4、一些可能需要关注的寄存器状态:(每次读取中断寄存器时、都会将其清除)
-初始化之后、发送数据之前:
地址0x0800:0x00000000
地址0x1044:0x0000070F
地址0x1050:0x00000000
-发送数据后(这是触发中断后的状态)
地址0x0800:0x0000040A
地址0x1044:0x00000708
地址0x1050:0x00011000
-接收数据后 (这是触发中断后的状态)
地址0x0800:0x0000040A
地址0x1044:0x00000708
地址0x1050:0x00010001
如何避免这些 CANSLNT 中断? 是否有任何必须配置的设置我错过了?
提前感谢!








