在日常工作中,我們經(jīng)常收到客戶的反饋,他們表示 CAN 卡無法正常通訊,這給工作帶來了諸多不便。今天,就讓我們深入探討一下導(dǎo)致 CAN 卡通訊失敗的常見原因,以及相應(yīng)的解決方法。
? 單個 CAN 設(shè)備發(fā)送失敗
有些客戶反映,即使只有一個 CAN 口在發(fā)送數(shù)據(jù),且總線都未連接,仍然會出現(xiàn)發(fā)送失敗的情況。這可能令人感到困惑,因為按照常理,只要發(fā)送端正常工作,似乎不應(yīng)該出現(xiàn)這種問題。
然而,這正是 CAN 總線的獨(dú)特之處。與常見的 232、485 總線不同,CAN 總線的收發(fā)器具備自我監(jiān)測和糾錯機(jī)制,無需額外的程序輔助。當(dāng)單個設(shè)備發(fā)送數(shù)據(jù)時,發(fā)送失敗的原因在于 CAN 收發(fā)器的 ACK 應(yīng)答機(jī)制。在 CAN 控制器發(fā)送完數(shù)據(jù)的 crc 校驗碼后,它會檢測“ack 位”是否呈現(xiàn)顯性狀態(tài)。這個 ACK 位必須由接收設(shè)備將電壓差拉高至顯性,否則發(fā)送端會認(rèn)為發(fā)送失敗。
這里有一個關(guān)鍵點(diǎn)需要特別注意:如果接收數(shù)據(jù)的 CAN 卡被設(shè)置為只聽模式,那么它不會做出 ACK 回應(yīng),這同樣會導(dǎo)致發(fā)送失敗。因此,在排查此類問題時,務(wù)必檢查接收端的設(shè)置,確保其處于正常工作模式,能夠正確回應(yīng) ACK 信號。
?兩個 CAN 設(shè)備對接但發(fā)送失敗
還有一種常見的情況是,兩個 CAN 設(shè)備都已正確對接,且波特率設(shè)置一致,但仍然無法正常發(fā)送數(shù)據(jù)。這種情況多發(fā)生在客戶使用高波特率且總線較長時,尤其是沒有使用終端電阻或僅使用了一個終端電阻的情況下。此時,如果使用示波器進(jìn)行分析,會發(fā)現(xiàn)波形出現(xiàn)振鈴現(xiàn)象,即波形不再呈現(xiàn)規(guī)整的矩形電信號上下波動。
這是由于總線較長時,末端缺乏設(shè)備消耗電能,導(dǎo)致信號反射形成浪涌??梢詫⒖偩€想象成一條水管,當(dāng)水流到達(dá)末端而無處可去時,就會產(chǎn)生回流。而通過在兩個終端各添加一個 120 歐姆的電阻來消耗電能,就能有效消除這種浪涌現(xiàn)象,從而使通訊恢復(fù)正常。
?四個關(guān)鍵要點(diǎn)
綜上所述,要確保 CAN 通訊成功,需要重點(diǎn)關(guān)注以下四個要點(diǎn):
1. 接線正確:這是最基本的要求,只有確保所有線路連接無誤,才能為正常通訊提供基礎(chǔ)保障。
2. 波特率一致:兩個 CAN 設(shè)備的波特率必須保持一致,否則會導(dǎo)致數(shù)據(jù)傳輸混亂,無法正確解讀。
3. 對端設(shè)備有 ACK 響應(yīng):如前文所述,ACK 應(yīng)答機(jī)制對于 CAN 通訊至關(guān)重要,接收端必須能夠正確回應(yīng) ACK 信號,才能保證發(fā)送端確認(rèn)數(shù)據(jù)已成功送達(dá)。
4. 終端電阻匹配:在長距離的 CAN 總線中,終端電阻的匹配對于信號的穩(wěn)定傳輸起著關(guān)鍵作用。
合理配置終端電阻,可以有效避免信號反射和浪涌問題,確保通訊的可靠性。通過以上分析和解決方法,相信能夠幫助大家更好地理解和解決 CAN 卡通訊失敗的問題。
在實際工作中,只要嚴(yán)格按照這四個要點(diǎn)進(jìn)行檢查和配置,就能大大提高 CAN 通訊的成功率,避免因通訊故障而影響工作進(jìn)度。
高性能以太網(wǎng)轉(zhuǎn)CAN FD設(shè)備
CANFDNET-800U |
|
CANFD與車載以太網(wǎng)
黑白名單模式 靈活連接擴(kuò)展 |