低速收发问题 解析 TJA1050限制因素 (低速收发问题解决方案)

本人在使用 STM32F103C8T6 微控制器和 TJA1050 CAN 收发器进行双机通信时,发现了一个问题。在中高速(几十到几百千比特率)下,收发情况正常。但是,当速率低于 12 千比特率时,终端显示发送成功,但实际两终端无法相互收发。

原理图如下所示:

其中,J2 为跳线插针,J3 为通信接口,CAN_TX 和 CAN_RX 分别连接到 STM32 的 PA11 和 PA12 引脚。

希望有经验的大神能够提供一些指教,帮助我解决这个问题。

可能的原因

通过分析和查询相关资料,我怀疑以下原因可能导致了这个问题:
  • TJA1050 的时序设置不正确
  • STM32 的 CAN 外设寄存器配置不当
  • CAN 总线上的干扰或噪声
  • 硬件接线或焊接问题

解决建议

为了解决这个问题,我建议按照以下步骤进行排查和调试:

1. 检查 TJA1050 的时序设置

确认 TJA1050 的时序设置符合 CAN 协议规范,尤其是波特率和同步跳变时序 (SJW)。 可以使用 CAN 分析器或示波器来检查 CAN 总线上的波形,以验证时序是否正确。

2. 检查 STM32 的 CAN 外设寄存器配置

确认 CAN 外设寄存器的配置符合 CAN 协议规范,包括波特率、模式、过滤器和中断使能。 使用 STM32 的 CAN 外设库或 HAL 函数来配置外设寄存器。 可以使用调试器或日志来验证寄存器的配置是否正确。

3. 排除干扰或噪声的影响

检查 CAN 总线的走线是否合理,避免出现并行走线或与其他高速信号线靠近的情况。 加装电容和电阻等滤波元件,以抑制 CAN 总线上的噪声和干扰。 使用屏蔽电缆或双绞线来传输 CAN 总线信号。

4. 检查硬件接线或焊接问题

用万用表或示波器检查 TJA1050 和 STM32 的引脚连接是否正确。 仔细检查 PCB 板上的焊接点,确保没有虚焊或短路。 可以尝试使用示波器来监测 CAN 总线上的信号,以验证硬件连接是否正常。

其他建议

除了以上建议之外,还有一些其他措施可以帮助解决低速 CAN 通信问题: 使用双端终端电阻(120Ω)来匹配 CAN 总线的阻抗。 确保 CAN 总线上的节点数不超过最大值(例如,对于 TJA1050 来说,最大节点数为 110)。 如果可能,尝试使用较高的 CAN 总线电压(例如,5V 或更高的电压),以提高信号的噪声容限。 考虑使用 CAN 总线协议分析仪或示波器来进一步分析 CAN 总线上的信号,以识别潜在的问题。

总结

解决低速 CAN 通信问题是一个系统性的过程,需要仔细检查和调试。通过按照上述建议,可以逐步排查和解决问题,确保 CAN 总线在低速条件下也能可靠通信。

本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论