正常模式:CAN 總線的 “核心通信狀態(tài)”
正常模式是 CAN 節(jié)點最主要的工作模式,也是 CAN 總線實現(xiàn) “多節(jié)點實時通信” 的基礎(chǔ)。在該模式下,CAN 控制器具備完整的 “發(fā)送 - 接收 - 仲裁 - 錯誤處理” 能力:既能主動發(fā)送數(shù)據(jù)幀、遠程幀,也能接收總線上的所有幀;在多節(jié)點同時發(fā)送時,通過 “非破壞性位仲裁” 機制(顯性位優(yōu)先于隱性位)決定發(fā)送優(yōu)先級,避免總線沖突;同時通過 “位錯誤”“填充錯誤”“CRC 錯誤” 等檢測機制,實時監(jiān)控通信質(zhì)量,若發(fā)現(xiàn)錯誤則發(fā)送錯誤幀,并更新錯誤計數(shù)器。正常模式的核心目標是 “高效、可靠地完成數(shù)據(jù)交互”,是汽車 ECU、工業(yè)傳感器、智能設(shè)備等節(jié)點的默認工作模式。
(一)正常模式的技術(shù)細節(jié):仲裁與錯誤處理的閉環(huán)
正常模式下,CAN 控制器的工作流程可分為 “發(fā)送流程” 與 “接收流程”,兩者均依賴總線的 “顯性位(Dominant Bit,邏輯 0)” 與 “隱性位(Recessive Bit,邏輯 1)” 交互規(guī)則。
在發(fā)送流程中,節(jié)點首先檢查總線狀態(tài):若總線為隱性位(空閑),則開始發(fā)送幀起始位(顯性位);若總線為顯性位(其他節(jié)點正在發(fā)送),則監(jiān)聽總線,參與仲裁。仲裁階段,發(fā)送節(jié)點將自己的標識符(ID)位與總線位逐位比較:若發(fā)送的是顯性位,而總線位為隱性位,說明存在更高優(yōu)先級節(jié)點(ID 更小的節(jié)點,因 CAN ID 越小優(yōu)先級越高),則立即停止發(fā)送,轉(zhuǎn)為接收狀態(tài);若所有位比較一致,則繼續(xù)發(fā)送后續(xù)字段(控制場、數(shù)據(jù)場、CRC 場等)。這種仲裁機制的 “非破壞性” 體現(xiàn)在:優(yōu)先級最高的節(jié)點能持續(xù)發(fā)送,無需重新發(fā)送,確保通信的實時性 —— 例如,汽車的 “剎車信號幀”(ID=0x001)優(yōu)先級高于 “車窗控制幀”(ID=0x100),緊急剎車時,剎車信號能優(yōu)先占用總線,避免延遲導致安全風險。
在接收流程中,節(jié)點始終監(jiān)聽總線,當檢測到幀起始位時,開始同步總線時鐘,逐位接收幀字段。接收過程中,控制器會實時進行錯誤檢測:若接收位與總線位不一致(位錯誤)、連續(xù) 5 個相同位未插入填充位(填充錯誤)、CRC 校驗不匹配(CRC 錯誤),則立即發(fā)送 “錯誤幀”(6 個顯性位的錯誤標志 + 8 個隱性位的錯誤界定符),并根據(jù)錯誤類型更新錯誤計數(shù)器(如位錯誤會使 TEC 或 REC 加 8)。若接收幀的 ID 與自身 “驗收濾波器” 配置匹配(如掩碼濾波后的 ID 一致),則將數(shù)據(jù)存入接收緩沖區(qū),同時置位 “接收完成標志”,通知 MCU 讀取數(shù)據(jù);若不匹配,則忽略該幀,不占用 MCU 資源。這種 “過濾 - 接收 - 錯誤處理” 的流程,確保節(jié)點僅接收所需數(shù)據(jù),同時對總線錯誤做出快速響應(yīng)。
(二)正常模式的應(yīng)用場景:從汽車到工業(yè)的實時通信
正常模式是 CAN 系統(tǒng)的 “默認工作狀態(tài)”,所有需要主動參與總線通信的節(jié)點均運行在此模式下。在汽車電子中,發(fā)動機 ECU、ABS 控制器、車身控制模塊(BCM)等核心節(jié)點均工作在正常模式:發(fā)動機 ECU 每 10ms 發(fā)送一次 “轉(zhuǎn)速 - 水溫 - 油壓” 數(shù)據(jù)幀,ABS 控制器在檢測到車輪抱死時發(fā)送 “剎車控制幀”,BCM 接收 “車門開關(guān)幀” 并發(fā)送 “車燈控制幀”,各節(jié)點通過正常模式下的仲裁機制,確保緊急信號(如 ABS 幀)優(yōu)先傳輸,非緊急信號(如車窗控制幀)有序排隊。
在工業(yè)控制中,PLC、伺服驅(qū)動器、傳感器節(jié)點也以正常模式為主:溫度傳感器每 50ms 發(fā)送一次 “溫度數(shù)據(jù)幀”,PLC 接收后發(fā)送 “電機調(diào)速幀” 至伺服驅(qū)動器,伺服驅(qū)動器根據(jù)指令調(diào)整轉(zhuǎn)速。正常模式下的錯誤處理機制在此場景中尤為重要 —— 若傳感器與 PLC 之間的總線出現(xiàn)短路(導致連續(xù)位錯誤),傳感器的 TEC 會快速增長,當 TEC 超過 96 時,控制器會進入 “錯誤主動模式”(Error Active Mode),發(fā)送主動錯誤幀提醒其他節(jié)點;若錯誤持續(xù),TEC 超過 255,則切換至總線離線模式,避免故障傳感器持續(xù)發(fā)送錯誤幀,干擾工業(yè)生產(chǎn)線的正常通信。





