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.
大家好、
我的客户正在测试 CANBUS 传输功能、并发现以下问题。
每 20ms 发送一系列连续 CAN ID、有时其中一个 CAN ID 出错、此 CAN ID 数据与上一个相同。
例如:客户通过 SPI 发送0x02160801,0x02160802,0x021608003,0x02160804,0x02160805,但捕获 CANBUS 数据,则日期变为 0x02160801,0x02160802,0x021608003,0x02160803,0x02160805。
客户使用 SPI"TCAN4x5x_MCAN_WriteTXBuffer()"发送正确的 CAN ID、但 CANBUS 中的数据错误、如下所示。
(左侧是对数数据、右侧是在 CANBUS 差分线路上捕获的 CANBUS 数据)
国家团队提供命令和我们可以尝试的任何实验?
非常感谢。
Vincent Chent
文森特
CAN 总线波形正确还是不正确时、是否可以捕获它们? 中断寄存器(0x0820)是否可以在传输前和传输后读取?
此致、
Eric Hackett
尊敬的 Eric:
由于它是一个数据传输序列、客户很难捕获错误的波形之一。 我们将继续尝试。
还有两个问题。
1. 在 tcan4551接收数据时,是否会更改引脚电平以通知 MCU?
我们目前正在关注 TI 的演示,使用轮询寄存器来检查新数据,但这会占用太多的 CPU 时间。
2. tcan4551是否具有关闭自动恢复功能的硬件总线? 如何启用它?
非常感谢。
陈文森
文森特
明白了、让我知道客户是否也可以读取中断寄存器。
1.是的、用户可以将 GPO1或 GPO2指定为 MCAN 中断、以便在收到消息时切换。 对此有几个步骤、让我们以使用 GPO1的示例为例。 在寄存器0x0800中、可以写入位11:10以配置 GPO1的工作方式。 向这些位写入01会将 GPO1引脚配置为 MCAN_INT 1输出。 配置后、用户需要分配哪个中断将是 MCAN_INT1。 这是通过写入寄存器0x1058来完成的。 通过向该寄存器中的任何位写入1、用户将分配哪个中断将作为 MCAN_INT1输出。 FIFO 中新消息的中断、FIFO 满、水印已到达等都在该寄存器中、因此对于这种特殊情况、用户可能希望将新消息中断分配给 MCAN_INT1。 完成此操作后、用户将需要通过向寄存器0x105C 中的位1写入1来启用 MCAN_INT1。
2.作为 Bosch MCAN 定义的一部分,此功能始终处于打开状态,并且始终处于启用状态。 可以使用协议状态寄存器0x1044并查看 LEC 位来检查其状态。 Bit0ERROR 指示在总线关闭自动恢复功能期间发送11个隐性位。
此致、
Eric Hackett
尊敬的 Eric:
客户在使用此器件方面取得了一些进展、并且以下问题很少、您能否帮助评论此器件?
我的器件现在处于脱离总线状态、我们想询问以下问题:
非常感谢。
陈文森