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演示代码的驱动程序库迁移到了目标平台、然后尝试发送与 TCAN4550EVM 示例相同的数据。 但遇到了一些问题。 问题如下所述、您能给我一些建议吗?
1) 1)我尝试调用 TCAN4x5x_MCAN_WriteTXBuffer()和 TCAN4x5x_MCAN_TransmitBufferContents()来将数据写入 TX FIFO 并发送。
2) 2) 虽然可以进行操作并发送数据、但逻辑分析仪似乎认为内容错误、并且将重复发送相同的内容。
尊敬的 Hermes:
您在此处重点介绍的 SPI 事务是将信息加载到 MRAM 中的软件。 MRAM 的2KB 从地址0x8000开始、用于存储所有滤波器元件、缓冲器和 FIFO 的信息。 在这种情况下、您要将信息加载到 TX 缓冲区0中、该缓冲区在 MRAM 中的地址0x8174中配置。 这一切看起来都很好。
这里的 CAN 数据看起来也不错、直到我们在 CAN 帧的末尾看到错误帧(长显性低电平周期)。 如果这个错误帧由 TCAN4550驱动、我们应该能够读取 MCAN 中断(h0824)。 如果总线上有其他一些有源 CAN 节点、它也可能是生成错误帧的节点。 如果是这种情况、我们必须询问它以了解它识别了什么错误。 在任一种情况下、TCAN4550的配置之一是在发送尝试失败时自动尝试重新发送。 请告诉我这是否不可取、我可以帮助您重新配置此设置。 否则、我们可以专注于解决错误本身。
让我知道您还能找到什么。
此致、
Eric Schott
尊敬的 Eric:
感谢您的建议。 在我的测试中、总线上没有其他有效的 CAN 节点、只连接到我使用的逻辑分析仪。 此外、我在发送数据后尝试读取中断寄存器、其值为0x11810000。
此致、
吴爱尔姆斯
尊敬的 Hermes:
感谢您完成额外的测试。 看起来、TCAN4550多次尝试发送此错误、以至于它进入了错误被动模式(EP)并且停止了在 CAN 总线上生成错误帧。 另一个在这里被卡住的中断是数据阶段的协议错误(PED)中断。 这是合理的、因为错误帧出现在之前的照片中。
这里我怀疑 CAN 总线上的模拟信号在数据阶段(数据速率更快的 FD 阶段)无法跟上。 是否可以使用示波器捕获 CANH 和 CANL 信号、以便我们可以看到信号线的模拟行为?
此外、如需更多信息、我们可以读取协议状态寄存器(h1044)以查看最后报告的错误代码(LEC)是什么。 这将告诉我们在这种情况下 CAN 控制器可以识别的协议错误。
此致、
Eric Schott
尊敬的 Eric:
我尝试使用示波器捕获 CANH 和 CANL 信号、并读取值为0x0013037F 或0x0013036F 的寄存器 h1044。 LEC 位域的值保持为7。
此致、
吴爱尔姆斯
尊敬的 Hermes:
此处数据阶段(LEC)中的最后一个错误代码的值为3、表示存在 ACK 错误。 当 CAN 总线上的任何其他节点未确认传输时、就会发生这种情况。 当控制器确定传输未成功完成时、它会自动尝试重新传输消息。 这就是您看到 CAN 总线上出现重复消息的原因。 要禁用自动重发送、请设置控制寄存器 h1018[6]中的禁用自动重发送(DAR)位。
为了避免这种误差、应该在 CAN 线路上放置另一个有源节点、以便它能够在 CAN 帧的 ACK 阶段驱动一个显性节点。
此致、
Eric Schott
尊敬的 Eric:
由于目前只有1个 EVM、为了验证发送的内容、我 将首先禁用自动重传、并在获取另一个 EVM 后再次测试。 感谢 你的帮助。
此致、
吴爱尔姆斯