作者 | 海角
出品 | 焉知
前言:
說(shuō)到CAN協(xié)議,大家都會(huì)想起幀結(jié)構(gòu)這類的,很多時(shí)候局限于片面認(rèn)知,沒(méi)有一個(gè)完整思路,所以我想通過(guò)從ISO11898協(xié)議出發(fā),深入了解其到電路板實(shí)現(xiàn)的全過(guò)程。最后匯總幾種常用方案,助你更好地理解和應(yīng)用這一重要通信標(biāo)準(zhǔn)在實(shí)際電路設(shè)計(jì)中的實(shí)現(xiàn)。
概要:
ISO11898標(biāo)準(zhǔn)作為控制器局域網(wǎng)(CAN)通信的重要規(guī)范,為眾多領(lǐng)域的電子設(shè)備間通信提供了堅(jiān)實(shí)的基礎(chǔ)。本文將帶領(lǐng)讀者深入了解 ISO11898 標(biāo)準(zhǔn)的內(nèi)容,并結(jié)合實(shí)際工程中的做法,詳細(xì)闡述如何進(jìn)行基于該標(biāo)準(zhǔn)的電路設(shè)計(jì),以實(shí)現(xiàn)穩(wěn)定、高效的電子通信系統(tǒng)。
ISO11898標(biāo)準(zhǔn)的背景和意義
Controller Area Network (CAN) 總線是一種高效的串行通信網(wǎng)絡(luò),最初由德國(guó)Bosch公司在1980年代末期開(kāi)發(fā),旨在滿足汽車(chē)行業(yè)中對(duì)可靠性和實(shí)時(shí)性的需求。
ISO11898 標(biāo)準(zhǔn)的出現(xiàn),旨在規(guī)范 CAN 總線的物理層和數(shù)據(jù)鏈路層,確保不同廠家生產(chǎn)的設(shè)備能夠相互兼容、穩(wěn)定通信,為實(shí)現(xiàn)復(fù)雜電子系統(tǒng)的協(xié)同工作提供了有力保障。
ISO11898標(biāo)準(zhǔn)分類與主要內(nèi)容
ISO 11898-1:數(shù)據(jù)鏈路層規(guī)范
ISO 11898-2:高速物理層規(guī)范
ISO 11898-3:低速容錯(cuò)物理層規(guī)范
ISO 11898-4:時(shí)間觸發(fā)通信協(xié)議 (TTP/C)
ISO 11898-5:低功耗模式
ISO 11898-6:CAN FD物理層規(guī)范
1、ISO 11898-1:數(shù)據(jù)鏈路層規(guī)范
消息格式:CAN消息分為標(biāo)準(zhǔn)幀和擴(kuò)展幀。標(biāo)準(zhǔn)幀的標(biāo)識(shí)符長(zhǎng)度為11位,擴(kuò)展幀的標(biāo)識(shí)符長(zhǎng)度為29位。每條消息包含多個(gè)字段,如仲裁段、控制段、數(shù)據(jù)段、CRC段、應(yīng)答段和結(jié)束段。
錯(cuò)誤檢測(cè)與處理:CAN總線采用多種錯(cuò)誤檢測(cè)機(jī)制,如循環(huán)冗余校驗(yàn)(CRC)、位填充和應(yīng)答錯(cuò)誤檢測(cè)。一旦檢測(cè)到錯(cuò)誤,節(jié)點(diǎn)會(huì)發(fā)送錯(cuò)誤標(biāo)志,并重新發(fā)送消息。
仲裁機(jī)制:當(dāng)多個(gè)節(jié)點(diǎn)同時(shí)嘗試發(fā)送消息時(shí),CAN總線采用位仲裁機(jī)制。較低的標(biāo)識(shí)符值具有更高的優(yōu)先級(jí),從而確保高優(yōu)先級(jí)的消息優(yōu)先傳輸。
2、ISO 11898-2:高速物理層規(guī)范
傳輸速率:ISO 11898-2規(guī)定了CAN總線的高速物理層,適用于傳輸速率高達(dá)1 Mbit/s的應(yīng)用。常見(jiàn)的傳輸速率包括125 kbit/s、250 kbit/s、500 kbit/s和1 Mbit/s。
電氣特性:CAN總線采用差分信號(hào)傳輸,兩條信號(hào)線分別為CAN_H和CAN_L。差分電壓范圍為0V至5V,邏輯電平定義為顯性位(0V)和隱性位(2.5V)。
3、ISO 11898-3:低速容錯(cuò)物理層規(guī)范
傳輸速率:ISO 11898-3適用于傳輸速率低于125 kbit/s的場(chǎng)合,常見(jiàn)的傳輸速率包括10 kbit/s、20 kbit/s和50 kbit/s。
容錯(cuò)機(jī)制:低速容錯(cuò)物理層具有更好的抗干擾能力和更長(zhǎng)的傳輸距離,適用于惡劣環(huán)境下的應(yīng)用。
4、ISO 11898-4:時(shí)間觸發(fā)通信協(xié)議 (TTP/C)
時(shí)間觸發(fā)機(jī)制:TTP/C協(xié)議是一種時(shí)間觸發(fā)的通信協(xié)議,適用于需要嚴(yán)格時(shí)間同步的應(yīng)用,如分布式控制系統(tǒng)。
5、ISO 11898-5:低功耗模式
低功耗設(shè)計(jì):ISO 11898-5規(guī)范了CAN總線的低功耗模式,適用于電池供電或低功耗應(yīng)用。低功耗模式下,節(jié)點(diǎn)可以進(jìn)入休眠狀態(tài),降低功耗。
6、ISO 11898-6:CAN FD物理層規(guī)范
靈活數(shù)據(jù)速率:CAN FD(Flexible Data-rate)協(xié)議允許在同一網(wǎng)絡(luò)中使用不同的數(shù)據(jù)速率,提高了通信效率和帶寬。CAN FD支持的最高數(shù)據(jù)速率為5 Mbit/s。
CAN總線的基本原理
CAN總線采用多主結(jié)構(gòu),所有節(jié)點(diǎn)都可以主動(dòng)發(fā)送消息。節(jié)點(diǎn)之間通過(guò)共享總線進(jìn)行通信,無(wú)需中央控制器。這種結(jié)構(gòu)使得CAN總線具有高度的可靠性和靈活性。
物理層規(guī)范
它定義了 CAN 總線的物理介質(zhì)特性,包括傳輸介質(zhì)(如雙絞線)的電氣特性。例如,對(duì)于高速 CAN(最高速率可達(dá) 1Mbps),規(guī)定了總線信號(hào)的電平范圍,隱性電平(邏輯 1)和顯性電平(邏輯 0)的具體電壓值。在高速 CAN 中,隱性電平通常為 2.5V 左右,顯性電平在 0 - 1.5V 之間,這種電平的定義使得總線上的節(jié)點(diǎn)能夠準(zhǔn)確地識(shí)別 “0” 和 “1” 信號(hào)。
同時(shí),該標(biāo)準(zhǔn)還規(guī)定了總線的拓?fù)浣Y(jié)構(gòu)(如線性拓?fù)洌┖徒K端匹配方式。終端匹配電阻的作用是為了減少信號(hào)反射,確保信號(hào)傳輸?shù)馁|(zhì)量。一般在總線的兩端會(huì)各接一個(gè) 120Ω 左右的終端匹配電阻。
數(shù)據(jù)鏈路層規(guī)范
規(guī)定了 CAN 數(shù)據(jù)幀的格式。CAN 數(shù)據(jù)幀由幀起始、仲裁場(chǎng)、控制場(chǎng)、數(shù)據(jù)場(chǎng)、CRC 場(chǎng)、ACK 場(chǎng)和幀結(jié)束等部分組成。仲裁場(chǎng)用于確定數(shù)據(jù)優(yōu)先級(jí),當(dāng)多個(gè)節(jié)點(diǎn)同時(shí)向總線發(fā)送數(shù)據(jù)時(shí),通過(guò)對(duì)仲裁場(chǎng)的比較,優(yōu)先級(jí)高的節(jié)點(diǎn)的數(shù)據(jù)可以優(yōu)先發(fā)送。例如,在汽車(chē)的電子控制系統(tǒng)中,如果發(fā)動(dòng)機(jī)控制單元和車(chē)身穩(wěn)定控制單元同時(shí)需要發(fā)送數(shù)據(jù),根據(jù)其數(shù)據(jù)幀仲裁場(chǎng)的設(shè)置,優(yōu)先級(jí)高的單元(如發(fā)動(dòng)機(jī)控制單元可能因?yàn)槠鋵?duì)車(chē)輛運(yùn)行的關(guān)鍵作用而被賦予較高優(yōu)先級(jí))的數(shù)據(jù)會(huì)先在總線上傳輸。
數(shù)據(jù)鏈路層還定義了錯(cuò)誤檢測(cè)和處理機(jī)制。例如,通過(guò)循環(huán)冗余校驗(yàn)(CRC)字段來(lái)檢測(cè)數(shù)據(jù)傳輸過(guò)程中的錯(cuò)誤。如果接收節(jié)點(diǎn)計(jì)算的 CRC 值與發(fā)送節(jié)點(diǎn)發(fā)送的 CRC 值不一致,則表明數(shù)據(jù)傳輸出現(xiàn)錯(cuò)誤,接收節(jié)點(diǎn)會(huì)丟棄該數(shù)據(jù)幀,并可以根據(jù)情況要求發(fā)送節(jié)點(diǎn)重新發(fā)送數(shù)據(jù)。
1、CAN消息分為標(biāo)準(zhǔn)幀和擴(kuò)展幀
標(biāo)準(zhǔn)幀:標(biāo)識(shí)符長(zhǎng)度為11位,最大數(shù)據(jù)長(zhǎng)度為8字節(jié)。
擴(kuò)展幀:標(biāo)識(shí)符長(zhǎng)度為29位,最大數(shù)據(jù)長(zhǎng)度為8字節(jié)。
每條消息包含多個(gè)字段:
起始位:表示消息的開(kāi)始。
仲裁段:包含標(biāo)識(shí)符和遠(yuǎn)程傳輸請(qǐng)求位(RTR)。
控制段:包含數(shù)據(jù)長(zhǎng)度碼(DLC)。
數(shù)據(jù)段:包含實(shí)際數(shù)據(jù)。
CRC段:包含循環(huán)冗余校驗(yàn)碼。
應(yīng)答段:包含應(yīng)答位(ACK)和應(yīng)答分隔位(ACK delimiter)。
結(jié)束段:表示消息的結(jié)束。
2、仲裁機(jī)制
當(dāng)多個(gè)節(jié)點(diǎn)同時(shí)嘗試發(fā)送消息時(shí),CAN總線采用位仲裁機(jī)制。較低的標(biāo)識(shí)符值具有更高的優(yōu)先級(jí),從而確保高優(yōu)先級(jí)的消息優(yōu)先傳輸。位仲裁機(jī)制通過(guò)逐位比較標(biāo)識(shí)符來(lái)實(shí)現(xiàn),直到找到不同的位為止。
3、錯(cuò)誤檢測(cè)與處理
CAN總線采用多種錯(cuò)誤檢測(cè)機(jī)制,如循環(huán)冗余校驗(yàn)(CRC)、位填充和應(yīng)答錯(cuò)誤檢測(cè)。一旦檢測(cè)到錯(cuò)誤,節(jié)點(diǎn)會(huì)發(fā)送錯(cuò)誤標(biāo)志,并重新發(fā)送消息。常見(jiàn)的錯(cuò)誤類型包括位錯(cuò)誤、填充錯(cuò)誤、CRC錯(cuò)誤和應(yīng)答錯(cuò)誤。
4、重同步
位重同步是指在傳輸過(guò)程中,節(jié)點(diǎn)通過(guò)調(diào)整時(shí)鐘頻率來(lái)保持同步。位重同步機(jī)制確保了數(shù)據(jù)的正確傳輸,即使在網(wǎng)絡(luò)中存在時(shí)鐘偏差的情況下也能正常工作。
需求分析與重要參數(shù)
傳輸速率:根據(jù)應(yīng)用需求選擇合適的傳輸速率,如125 kbit/s、250 kbit/s、500 kbit/s或1 Mbit/s。
可靠性:確保電路具有高可靠性和抗干擾能力。
功耗:對(duì)于電池供電或低功耗應(yīng)用,選擇低功耗的CAN芯片。
兼容性:選擇與 ISO11898 標(biāo)準(zhǔn)兼容的微控制器,確保能夠正確實(shí)現(xiàn) CAN 通信功能。
成本:在滿足性能要求的前提下,盡量降低成本。
開(kāi)發(fā)工具和生態(tài)系統(tǒng):選擇具有豐富開(kāi)發(fā)工具和良好生態(tài)系統(tǒng)的微控制器,便于開(kāi)發(fā)和調(diào)試。
選擇CAN芯片
CAN控制器:常見(jiàn)的CAN控制器芯片包括NXP的MCP2515、STM32的內(nèi)置CAN控制器等。這些芯片提供了基本的CAN通信功能,如消息過(guò)濾、緩沖、錯(cuò)誤檢測(cè)等。
CAN收發(fā)器:常見(jiàn)的CAN收發(fā)器芯片包括NXP的TJA1050、Texas Instruments的SN65HVD230等。這些芯片將CAN控制器的邏輯信號(hào)轉(zhuǎn)換為物理層信號(hào),確保信號(hào)的完整性和可靠性。
集成CAN模塊:集成CAN模塊將CAN控制器和收發(fā)器集成在一個(gè)芯片中,簡(jiǎn)化設(shè)計(jì)和降低成本。常見(jiàn)的集成CAN模塊包括Microchip的MCP2562FD、Texas Instruments的TCAN1042-Q1等。
硬件設(shè)計(jì)
電源設(shè)計(jì):確保電源的穩(wěn)定性和可靠性。使用穩(wěn)壓器和濾波電容來(lái)穩(wěn)定電源電壓,防止電源波動(dòng)影響電路性能。
信號(hào)完整性:信號(hào)線的布線應(yīng)盡量短直,避免信號(hào)反射和干擾。使用終端電阻(通常為120Ω)來(lái)匹配傳輸線的特性阻抗,減少信號(hào)反射。
濾波與保護(hù):使用濾波器和保護(hù)電路來(lái)提高系統(tǒng)的抗干擾能力。常見(jiàn)的濾波器包括RC濾波器和LC濾波器,保護(hù)電路包括TVS二極管和保險(xiǎn)絲。
軟件設(shè)計(jì)
初始化:初始化CAN控制器,設(shè)置傳輸速率、工作模式和中斷使能。例如,在使用STM32微控制器時(shí),可以通過(guò)HAL庫(kù)函數(shù)來(lái)初始化CAN控制器。
消息發(fā)送與接收:編寫(xiě)代碼實(shí)現(xiàn)消息的發(fā)送和接收。發(fā)送消息時(shí),將數(shù)據(jù)寫(xiě)入CAN控制器的發(fā)送緩沖區(qū),并啟動(dòng)發(fā)送過(guò)程。接收消息時(shí),讀取CAN控制器的接收緩沖區(qū),并處理接收到的數(shù)據(jù)。
錯(cuò)誤處理:在軟件中實(shí)現(xiàn)錯(cuò)誤檢測(cè)和處理。常見(jiàn)的錯(cuò)誤類型包括位錯(cuò)誤、填充錯(cuò)誤、CRC錯(cuò)誤和應(yīng)答錯(cuò)誤。一旦檢測(cè)到錯(cuò)誤,可以采取相應(yīng)的措施,如重新發(fā)送消息或重啟CAN控制器。
測(cè)試與調(diào)試
測(cè)試工具:常用的CAN總線測(cè)試工具包括CAN分析儀和示波器。CAN分析儀可以捕獲和解析CAN消息,幫助調(diào)試通信問(wèn)題。示波器可以觀察信號(hào)波形,檢查信號(hào)質(zhì)量和時(shí)序關(guān)系。
調(diào)試技巧:在調(diào)試CAN電路時(shí),可以使用以下技巧:
逐步調(diào)試:逐步檢查每個(gè)環(huán)節(jié),確保每個(gè)部分都能正常工作。
使用示波器:使用示波器觀察信號(hào)波形,檢查信號(hào)質(zhì)量和時(shí)序關(guān)系。
檢查電源:確保電源電壓穩(wěn)定,沒(méi)有波動(dòng)。
檢查接地:確保電路的接地良好,沒(méi)有噪聲干擾。
檢查終端電阻:確保終端電阻正確安裝,沒(méi)有損壞。
常用解決方案與應(yīng)用案例
1、汽車(chē)電子控制系統(tǒng)
系統(tǒng)架構(gòu):汽車(chē)電子控制系統(tǒng)由多個(gè) ECU 組成,包括發(fā)動(dòng)機(jī)控制單元(ECU)、變速器控制單元(TCU)、車(chē)身控制單元(BCU)、防抱死制動(dòng)系統(tǒng)(ABS)等,這些 ECU 通過(guò) CAN 總線進(jìn)行通信。例如,發(fā)動(dòng)機(jī) ECU 將發(fā)動(dòng)機(jī)的轉(zhuǎn)速、溫度、油壓等實(shí)時(shí)數(shù)據(jù)發(fā)送給 BCU,BCU 根據(jù)這些信息控制儀表盤(pán)上的指示燈和顯示屏,向駕駛員展示車(chē)輛狀態(tài)信息。
電路設(shè)計(jì)細(xì)節(jié)
微控制器和 CAN 收發(fā)器選擇:在發(fā)動(dòng)機(jī) ECU 中,選擇高性能的 MCU(如英飛凌的 TC275),因其具有強(qiáng)大的處理能力和豐富的外設(shè)資源,能夠同時(shí)處理多個(gè)傳感器的數(shù)據(jù)采集和 CAN 通信任務(wù)。與之搭配的 CAN 收發(fā)器(如 TJA1040),其具有良好的抗干擾能力,適合汽車(chē)內(nèi)部復(fù)雜的電磁環(huán)境。
總線保護(hù)電路:在 CAN 總線接口處,安裝 TVS 二極管(如 SMBJ6.5CA)用于過(guò)壓保護(hù),防止車(chē)輛在啟動(dòng)、停止過(guò)程中產(chǎn)生的浪涌電壓對(duì)電路造成損壞。同時(shí),串聯(lián) PPTC(如 1206L050)進(jìn)行過(guò)流保護(hù),確保在總線短路時(shí)保護(hù)其他設(shè)備。靜電保護(hù)采用 ESD 保護(hù)器件(如 PESD2CAN),防止靜電對(duì)電路的損害。
電源管理:采用線性穩(wěn)壓電源芯片(如 LM2940)為 MCU 和 CAN 收發(fā)器提供穩(wěn)定的電源。為了防止不同電子設(shè)備之間的電源干擾,在部分關(guān)鍵 ECU 的電源輸入處采用隔離電源模塊(如 B0505S - 1W)進(jìn)行電源隔離。在車(chē)輛處于停車(chē)狀態(tài)且某些 ECU 不需要工作時(shí),通過(guò)軟件控制將 MCU 和 CAN 收發(fā)器設(shè)置為低功耗模式,以降低車(chē)輛電瓶的耗電量。
測(cè)試與驗(yàn)證:在汽車(chē)電子控制系統(tǒng)開(kāi)發(fā)過(guò)程中,進(jìn)行功能測(cè)試、可靠性測(cè)試和電磁兼容性(EMC)測(cè)試。功能測(cè)試主要檢查各個(gè) ECU 之間的 CAN 通信是否正常,數(shù)據(jù)傳輸是否準(zhǔn)確??煽啃詼y(cè)試包括高溫、低溫、振動(dòng)等環(huán)境試驗(yàn),模擬汽車(chē)在各種惡劣路況和氣候條件下的工作情況,確保電路在極端環(huán)境下仍能正常通信。EMC 測(cè)試用于評(píng)估電路對(duì)電磁干擾的抵抗能力和自身產(chǎn)生電磁干擾的程度,確保系統(tǒng)符合汽車(chē)行業(yè)的電磁兼容性標(biāo)準(zhǔn)。
2、工業(yè)自動(dòng)化生產(chǎn)線
系統(tǒng)需求分析:工業(yè)自動(dòng)化生產(chǎn)線需要對(duì)各種生產(chǎn)設(shè)備進(jìn)行實(shí)時(shí)監(jiān)控和控制,CAN 總線通信需要滿足長(zhǎng)距離、高可靠性和抗干擾性的要求。例如,在一條自動(dòng)化包裝生產(chǎn)線上,需要將包裝機(jī)、輸送機(jī)、貼標(biāo)機(jī)等設(shè)備的狀態(tài)信息通過(guò) CAN 總線傳輸?shù)街醒肟刂葡到y(tǒng),同時(shí)中央控制系統(tǒng)要能夠向這些設(shè)備發(fā)送控制指令。
電路設(shè)計(jì)方案
微控制器和 CAN 收發(fā)器選型:根據(jù)生產(chǎn)線的復(fù)雜程度和通信需求,選擇合適的 MCU(如西門(mén)子的 S7 - 1200 系列 PLC 中的 CPU 模塊),其具備強(qiáng)大的工業(yè)通信能力和豐富的控制功能。搭配高性能的 CAN 收發(fā)器(如 SN65HVD234),該收發(fā)器具有較遠(yuǎn)的傳輸距離(可達(dá) 10km 以上)和較強(qiáng)的抗干擾能力,能夠滿足長(zhǎng)距離通信和復(fù)雜工業(yè)環(huán)境的要求。
總線拓?fù)浣Y(jié)構(gòu)設(shè)計(jì):考慮生產(chǎn)線的布局和設(shè)備分布情況,采用線性拓?fù)浣Y(jié)構(gòu)為主的總線設(shè)計(jì)。在總線上適當(dāng)位置設(shè)置中繼器,用于增強(qiáng)信號(hào)強(qiáng)度和延長(zhǎng)通信距離。例如,在距離較長(zhǎng)的輸送機(jī)兩端設(shè)置中繼器,確保 CAN 信號(hào)能夠穩(wěn)定傳輸。
保護(hù)電路和電源管理:在總線保護(hù)電路方面,采用 TVS 二極管(如 P6KE18CA)進(jìn)行過(guò)壓保護(hù),PPTC(如 250V2A)進(jìn)行過(guò)流保護(hù),同時(shí)在每個(gè)設(shè)備的 CAN 接口處安裝 ESD 保護(hù)器件(如 USBLC6 - 2SC6)。電源管理上,使用開(kāi)關(guān)穩(wěn)壓電源為設(shè)備提供穩(wěn)定的電源,對(duì)于需要電源隔離的設(shè)備,采用隔離電源模塊(如 ISO - EM - 3K3 - S)。通過(guò)合理的電源管理策略,如分時(shí)供電和設(shè)備休眠控制,降低整個(gè)生產(chǎn)線的能耗。
實(shí)際應(yīng)用效果:通過(guò)采用上述 CAN 通信電路設(shè)計(jì)方案,自動(dòng)化生產(chǎn)線的設(shè)備之間通信更加穩(wěn)定可靠,減少了因通信故障導(dǎo)致的生產(chǎn)中斷次數(shù)。長(zhǎng)距離通信能力使得生產(chǎn)線的布局更加靈活,能夠適應(yīng)不同規(guī)模的生產(chǎn)場(chǎng)地。同時(shí),良好的抗干擾能力和電源管理措施,提高了整個(gè)生產(chǎn)線的工作效率和能源利用率。
①標(biāo)準(zhǔn)文檔
-
ISO 11898-1:2015 - Road vehicles — Controller area network (CAN) — Part 1: Data link layer and physical signaling
-
ISO 11898-2:2016 - Road vehicles — Controller area network (CAN) — Part 2: High-speed medium access unit
-
ISO 11898-3:2006 - Road vehicles — Controller area network (CAN) — Part 3: Low-speed, fault-tolerant, passive medium access unit
-
ISO 11898-4:2004 - Road vehicles — Controller area network (CAN) — Part 4: Time-triggered communication
-
ISO 11898-5:2007 - Road vehicles — Controller area network (CAN) — Part 5: Low-power mode