在日常工作中,我们经常收到客户的反馈,他们表示 CAN 卡无法正常通讯,这给工作带来了诸多不便。今天,就让我们深入探讨一下导致 CAN 卡通讯失败的常见原因,以及相应的解决方法。
单个 CAN 设备发送失败有些客户反映,即使只有一个 CAN 口在发送数据,且总线都未连接,仍然会出现发送失败的情况。这可能令人感到困惑,因为按照常理,只要发送端正常工作,似乎不应该出现这种问题。然而,这正是 CAN 总线的独特之处。与常见的 232、485 总线不同,CAN 总线的收发器具备自我监测和纠错机制,无需额外的程序辅助。当单个设备发送数据时,发送失败的原因在于 CAN 收发器的 ACK 应答机制。在 CAN 控制器发送完数据的 crc 校验码后,它会检测“ack 位”是否呈现显性状态。这个 ACK 位必须由接收设备将电压差拉高至显性,否则发送端会认为发送失败。这里有一个关键点需要特别注意:如果接收数据的 CAN 卡被设置为只听模式,那么它不会做出 ACK 回应,这同样会导致发送失败。因此,在排查此类问题时,务必检查接收端的设置,确保其处于正常工作模式,能够正确回应 ACK 信号。
两个 CAN 设备对接但发送失败还有一种常见的情况是,两个 CAN 设备都已正确对接,且波特率设置一致,但仍然无法正常发送数据。这种情况多发生在客户使用高波特率且总线较长时,尤其是没有使用终端电阻或仅使用了一个终端电阻的情况下。此时,如果使用示波器进行分析,会发现波形出现振铃现象,即波形不再呈现规整的矩形电信号上下波动。这是由于总线较长时,末端缺乏设备消耗电能,导致信号反射形成浪涌。可以将总线想象成一条水管,当水流到达末端而无处可去时,就会产生回流。而通过在两个终端各添加一个 120 欧姆的电阻来消耗电能,就能有效消除这种浪涌现象,从而使通讯恢复正常。
四个关键要点综上所述,要确保 CAN 通讯成功,需要重点关注以下四个要点:1. 接线正确:这是最基本的要求,只有确保所有线路连接无误,才能为正常通讯提供基础保障。2. 波特率一致:两个 CAN 设备的波特率必须保持一致,否则会导致数据传输混乱,无法正确解读。3. 对端设备有 ACK 响应:如前文所述,ACK 应答机制对于 CAN 通讯至关重要,接收端必须能够正确回应 ACK 信号,才能保证发送端确认数据已成功送达。4. 终端电阻匹配:在长距离的 CAN 总线中,终端电阻的匹配对于信号的稳定传输起着关键作用。合理配置终端电阻,可以有效避免信号反射和浪涌问题,确保通讯的可靠性。通过以上分析和解决方法,相信能够帮助大家更好地理解和解决 CAN 卡通讯失败的问题。在实际工作中,只要严格按照这四个要点进行检查和配置,就能大大提高 CAN 通讯的成功率,避免因通讯故障而影响工作进度。 | 高性能以太网转CAN FD设备 CANFDNET-800U |
|