尊敬的 Peter:
你好。
我设法通过 SPI 与它可靠地通信、初始化工作正常、但在状态寄存器中、我经常会遇到 CAN 错误。 如果我读取 h0820寄存器、我会得到一个 CAN 静默错误。
我已将 CAN 器件连接到 CAN 总线、我正在积极尝试进行通信、但仍没有改进。
我用示波器测量了 CAN 总线、我可以看到、一旦我连接收发器、CAN 总线就会进入空闲模式(CANH 和 CANL 均为2、45V)。
我的问题如下:我设法使 TCAN 进入正常模式(我可以使用0x0800寄存器验证这一点)。 初始化半秒后、SDO 线上的第一个字节为0x00、表示没有错误。 之后、该字节变为0xA0、表示全局错误和 CAN 错误。 读取0x0820寄存器后、我可以确定 CAN 错误是 CANSLNT 错误、表示 CAN 总线上没有任何内容。 我尝试了多种解决方案、但没有成功。
在评估板上、我们尝试从矢量连接多个 CAN 外壳器件、所有器件都运行多种不同的独木舟设置(当然不是同时连接。 如果您在独木舟模拟中打开 KL15、则 CAN 总线上应存在数据。 通过观察 CAN 案例上的 CAN-H 和 CAN-L 引脚可以确认这一点。 一旦我将 TCAN 器件连接到已经激活的 CAN 总线、CAN-H 和 CAN-L 都变为2、46V (通常这意味着 CAN 空闲)。 在整个过程中、我们会不断地为 IC 获取相同的 CANSLNT 误差。 即使我仍然尝试执行上电复位、我们也会得到相同的错误。 器件永远不会进入睡眠模式。
我还尝试将数据发送到 CAN 总线、但我们仍然得到相同的 CAN 静默错误、总线上没有任何内容。 以下是根据数字发现器件提供的 SPI 总线数据:
数据:61 | A0、88 | 00、34 | 00、04 | 00、01 | 00、 A4 | 00、00 | 00、00 | 00、00 | 00、28 | 00、 00 | 00、00 | 00、00 | 00、00 | 00、0B | 00、 CA | 00、00 | 00、00 | 00、00 | 00、00 | 00、
在整个过程中、CAN 总线上仍然没有数据。
遗憾的是、我无法再得到任何进一步的结果、我们似乎得到了相同的 CANSLNT 错误。 您对如何解决此问题有什么想法吗?
我认为 CAN H 和 CAN L 之间的120欧姆电阻器可能存在问题。该电阻器放置在评估板上(R50和 R51串联)。 我尝试移除 J11和 J14以断开这些电阻器、并在那里手动放置一个电阻器、但没有任何变化。
我尝试了很多东西、这在这个线程 TCAN4550EVM 中说过:发送 CAN 消息时出现问题。 我尝试恢复到演示代码、但仍然执行 CAN 静音错误、而 CAN 总线上没有任何内容。 我尝试了一个建议包含此代码的解决方案、以禁用 CAN 无提示错误的可能性:
AHB_WRITE_32 (0x000C、0xFFFFFFF);//删除所有中断标志
AHB_WRITE_32 (0x0830、0xFFFFFFFF);//禁用 CANSLNT 中断
AHB_WRITE_32 (0x0820、0x00100400);//删除 CANSLNT 中断标志
这确实删除了 CAN 静音标志、但我仍然无法向 CAN 总线发送任何内容。 在该主题中,Erik 说,修复 AHB_READ_32()函数后,效果会更好,但我测试了它,它对我来说是有效的。
您对我们如何取得进展有什么想法吗?
(我在 CAN 总线上仍然有一个矢量 CAN 大小写、并且 CANH 和 CANL 之间有120欧姆的电阻器)
请保持安全。
此致、
乔塞尔