ZLG嵌入式笔记 | CAN丢帧很常见,你知道有哪些原因吗?(下)

B站影视 电影资讯 2025-03-27 14:37 1

摘要:CAN总线在汽车和工业领域广泛应用,但通信问题可能影响其稳定性。本文探讨总线速率错误、电源不稳定和线程处理不当三大常见问题,分析原因并提供解决方法,助力优化通信可靠性。

CAN总线在汽车和工业领域广泛应用,但通信问题可能影响其稳定性。本文探讨总线速率错误、电源不稳定和线程处理不当三大常见问题,分析原因并提供解决方法,助力优化通信可靠性。

总线速率设置错误

当总线速率设置错误时,可能会导致节点在接收消息时无法正确同步和解析,从而造成丢帧问题。

图1 总线速率设置错误CAN总线速率是指在CAN总线上传输数据的速率,它是CAN通信中的一个重要参数。总线速率的设置直接影响着节点之间消息的传输效率和可靠性。如果总线速率设置错误,可能导致节点无法正确接收消息。这是因为节点在接收消息时需要根据正确的总线速率进行同步,如果速率设置错误,节点将无法正确同步消息的位时钟,导致消息无法正确解析,从而造成丢帧问题。

正确的总线速率设置是确保CAN通信稳定和可靠的关键因素之一。因此,对于总线速率设置错误可能导致的丢帧问题,需要对总线速率进行仔细的规划和设置。在设置总线速率时,需要考虑总线物理层特性、总线长度、总线负载等因素,确保速率设置与实际应用环境匹配。同时,对于不同的CAN控制器和总线标准(如CAN 2.0、CANFD等),也需要根据其规范进行正确的速率设置。


电源稳定性问题

电源稳定性对于CAN总线系统的稳定运行至关重要。电源不稳定可能导致节点的工作频率波动,电压波动等问题,这可能会影响节点的正常工作,包括消息发送和接收。不稳定的电源可能导致节点无法稳定地发送或接收消息,从而引发丢帧问题。图1 电源稳定性问题电源噪声可能会通过电源线传播到节点,影响节点的正常工作。这种噪声可能导致消息发送时的干扰,或者影响节点对消息的正确接收和解析,进而导致丢帧问题。为了减少电源问题带来的丢帧,可以采取一些措施来确保良好的电源稳定性:

使用稳定的电源:选择高品质、稳定的电源设备,确保节点供电稳定。

添加电源滤波器:在节点的电源线上添加电源滤波器,可以有效地减少电源噪声对节点的影响。

确保良好的接地:良好的接地设计可以帮助减少电源问题对节点的影响,确保电源稳定性。

电源线路隔离:对于对电源稳定性要求较高的节点,可以考虑使用电源隔离设备,将其与其他电源线路隔离开,减少电源波动对节点的影响。


线程处理失当

这是一个真实案例。使用CAN0收数据,在压力⼤的情况下,接收会缺帧,但是用ifconfig can0看, err和drop数量都为零。最初程序CAN收发都在一个线程里,后来将收和发分别放在不同线程中,问题消失。线程处理失当可能导致数据丢失,这可能是由于线程优先级设置不当,或者线程竞争条件导致的。当数据处理线程的优先级设置不当时,可能会导致其他高优先级的线程抢占资源,从而导致数据处理线程无法及时响应,造成数据丢失。这种情况下,需要仔细评估每个线程的优先级,并确保数据处理线程具有足够高的优先级,以确保数据的及时处理。

另一方面,线程竞争条件也可能导致数据丢失。例如,多个线程同时访问共享资源而没有正确的同步机制,可能导致数据处理不一致或丢失。这可能需要通过使用互斥锁、信号量或其他同步机制来确保对共享资源的访问是线程安全的,从而避免数据丢失的问题。ZLG致远电子CAN设备的二次开发函数库dll均是线程安全的,有互斥锁。

来源:ZLG致远电子

相关推荐