CAN發(fā)送器(下)
仲裁成功的節(jié)點獲得總線控制權后,將依次發(fā)送數(shù)據(jù)幀的控制場、數(shù)據(jù)場、CRC場、ACK場和幀結束。控制場中的數(shù)據(jù)長度碼(DLC)明確了數(shù)據(jù)場中包含的字節(jié)數(shù)(0-8字節(jié)),確保接收節(jié)點能夠正確解析數(shù)據(jù)長度;數(shù)據(jù)場是有效數(shù)據(jù)的載體,按照字節(jié)順序依次發(fā)送;CRC場包含了對幀起始到數(shù)據(jù)場的循環(huán)冗余校驗碼,用于接收節(jié)點檢測數(shù)據(jù)傳輸過程中是否出現(xiàn)錯誤;ACK場則用于接收節(jié)點確認數(shù)據(jù)接收成功——當接收節(jié)點正確接收到數(shù)據(jù)幀(無CRC錯誤)后,會在ACK位期間發(fā)送一個顯性電平作為應答,發(fā)送節(jié)點檢測到這一顯性電平后,確認數(shù)據(jù)已被至少一個節(jié)點成功接收;最后,幀結束由7個隱性電平位組成,用于告知總線上的所有節(jié)點本次數(shù)據(jù)發(fā)送完成,總線即將恢復空閑狀態(tài)。
在整個發(fā)送過程中,CAN控制器還會進行實時的錯誤檢測與處理,以保障數(shù)據(jù)傳輸?shù)目煽啃浴?刂破鲿O(jiān)測發(fā)送的每一位信號,若出現(xiàn)位錯誤(自身發(fā)送與總線電平不一致,且非仲裁階段)、CRC錯誤(接收節(jié)點反饋CRC校驗失?。┗?span>ACK錯誤(未檢測到接收節(jié)點的應答信號)等情況,發(fā)送節(jié)點會立即發(fā)送錯誤標志(由6個顯性電平位組成),通知總線上的其他節(jié)點本次傳輸出現(xiàn)異常。隨后,發(fā)送節(jié)點會根據(jù)錯誤類型決定是否重發(fā):對于暫時性錯誤(如偶然的電磁干擾),節(jié)點會在總線恢復空閑后重新發(fā)送數(shù)據(jù)幀;若錯誤持續(xù)出現(xiàn)(如總線故障),節(jié)點會按照CAN協(xié)議的錯誤管理規(guī)則,逐步從主動錯誤狀態(tài)切換到被動錯誤狀態(tài),最終可能進入總線關閉狀態(tài),避免持續(xù)影響整個網(wǎng)絡的運行。
當數(shù)據(jù)幀的幀結束位發(fā)送完成后,發(fā)送節(jié)點的CAN控制器會再次監(jiān)測總線電平,確認總線是否恢復隱性電平,同時釋放總線控制權。此時,發(fā)送流程基本完成,節(jié)點回到空閑狀態(tài),等待下一次數(shù)據(jù)發(fā)送請求。整個過程從數(shù)據(jù)封裝、總線監(jiān)測、仲裁競爭,到數(shù)據(jù)傳輸、錯誤處理和總線釋放,形成了一個閉環(huán)的工作流程,既保證了多個節(jié)點共享總線的有序性,又通過嚴格的錯誤檢測機制保障了數(shù)據(jù)傳輸?shù)目煽啃浴?span>
CAN發(fā)送流程的設計充分體現(xiàn)了實時性與可靠性的平衡,其非破壞性仲裁機制使得高優(yōu)先級數(shù)據(jù)能夠快速獲得總線控制權,滿足工業(yè)控制、汽車電子等場景對實時響應的需求;而多層次的錯誤檢測與重發(fā)機制,則有效抵御了傳輸過程中的干擾和故障,確保數(shù)據(jù)傳輸?shù)臏蚀_性。正是這一系列嚴謹?shù)牧鞒淘O計,使得CAN總線在復雜的多節(jié)點通信場景中始終保持穩(wěn)定高效的運行狀態(tài),成為嵌入式系統(tǒng)中不可或缺的通信解決方案。





