基于MCP2502X/05X的CAN總線節(jié)點設(shè)計
1 引言
CAN總線以其成本低廉、通信實時性好、糾錯能力強等優(yōu)點廣泛應(yīng)用于汽車工業(yè)、電力系統(tǒng)變電站自動化、智能大廈等系統(tǒng)。J1939協(xié)議是SEA于1998年提出的,主要應(yīng)用于運輸、農(nóng)林機車、船舶等大型交通工具。Microchip公司推出的MCP2502X/2505X CAN I/O系列擴展器可獨立作為CAN擴展節(jié)點,通過配置實現(xiàn)不同的CAN協(xié)議。本文以J1939為通信協(xié)議,基于該器件設(shè)計CAN擴展節(jié)點,方便實現(xiàn)汽車的前端測控功能,并且與整個車載CAN網(wǎng)絡(luò)相連。
2 MCP2502X/05X CAN I/O擴展器簡介
MCP2502X/5X器件可作為CAN系統(tǒng)的I/O擴展器使用,支持CANV2.0B Active,可在原始數(shù)據(jù)與CAN報文之間進行協(xié)議轉(zhuǎn)換,總線速率最大可達1 Mb/s。MCP2502X/5X器件具有多個外設(shè),包括數(shù)字I/O、4通道10位A/D轉(zhuǎn)換器和能夠在引腳狀態(tài)變化時自動發(fā)送報文的PWM輸出,包括超過預(yù)設(shè)門限值的模擬輸入,提供1個屏蔽寄存器和2個接收過濾器,使得在設(shè)計系統(tǒng)時與器件響應(yīng)標(biāo)識符相關(guān)部分具有最大限度的靈活性。該器件也可配置為在任何時候發(fā)生一個或多個錯誤時,能夠自動發(fā)送唯一報文??稍诜且资源鎯ζ髦袑ζ骷M行預(yù)編程,這樣器件在配置過程可默認(rèn)為特定配置。
3 擴展節(jié)點配置
基于MCP2502X/5X的CAN網(wǎng)絡(luò)必須有一個具有CAN接口的CPU做為主節(jié)點,MCP2502X/05X只能作為擴展節(jié)點,通過配置完成工作。器件配置方法有兩種:預(yù)編程用戶寄存器和CAN報文在線配置。MCP2502X/05X器件的用戶E-PROM出廠時是空白的,所以在上電前要對其預(yù)編程,編程結(jié)果在上電復(fù)位后自配置為默認(rèn)配置。為了與主節(jié)點之間實現(xiàn)基于J1939協(xié)議通信,上電前先按J1939標(biāo)識符格式對CAN模塊寄存器預(yù)編程。對MCE2502X/05X器件的用戶寄存器預(yù)編程有三種方法,分別為用MPLAB IDE配套PROMATE II編程器;在線串行編程(ICSP);根據(jù)ICSP的原理設(shè)計專門的編程電路,配合微芯公司的編程軟件MCP250XXProgrammer對器件預(yù)編程。這里采用第三種方法。
3.1 預(yù)編程用戶寄存器
3.1.1 預(yù)編程電路設(shè)計
編程需要VDD(2.0~6.0 V)和VPP(12~14 V)兩個電源,如圖1所示。圖1中,通用開關(guān)穩(wěn)壓器LM78S40CN輸出可調(diào)的1.25~40 V的穩(wěn)定電壓產(chǎn)生所需的VPPPC機通過場效應(yīng)管MTSF2P02控制VPP和VDD的通斷,實現(xiàn)編程邏輯。
圖2為編程數(shù)據(jù)、時鐘邏輯電路以及編程電路與PC機的接口電路。編程電路通過并口與PC機連接。在編程電路和PC機連接后,利用Microchip公司提供的具有形象圖形化界面的軟件(MCP250X X Programmer)方便對器件預(yù)編程。
3.1.2 預(yù)編程CAN相關(guān)寄存器
預(yù)編程CAN相關(guān)寄存器就是實現(xiàn)不同CAN協(xié)議,并通過CAN報文配置和操作其他寄存器。MCP2502X/05X系列器件在實現(xiàn)對器件本身控制的前提下,用戶通過配置CAN模塊相關(guān)寄存器,并根據(jù)實際情況設(shè)計協(xié)議的具體內(nèi)容。擴展節(jié)點的CAN協(xié)議必須與主節(jié)點的CAN協(xié)議相匹配。該設(shè)計采用J1939協(xié)議標(biāo)準(zhǔn)配置CAN模塊寄存器,由于CAN擴展節(jié)點與主節(jié)點之間要求點對點通信,所以采用PDU1格式,其29位標(biāo)識符各位的含義如圖3所示。
圖3中,源地址的高5位可編程,低3位與擴展器硬件相關(guān)聯(lián),用于實現(xiàn)特定的CAN命令,比如將報文源地址低3位寫“000”,讀取A/D轉(zhuǎn)換器的寄存器。PS(PDU格式)要小于240,其他各位由應(yīng)用層確定。按照協(xié)議標(biāo)識符格式寫配置寄存器。MCP2502X/5X器件包含3個獨立的發(fā)送報文ID:TX-ID0、TXID1和TXID2。
配置相應(yīng)的寄存器預(yù)定義各種輸出報文中每一個報文的數(shù)據(jù)長度碼以及直接從器件外設(shè)寄存器輸入待發(fā)送數(shù)據(jù)。器件按照預(yù)定義格式發(fā)送報文。配置接收屏蔽寄存器來定義CAN ID與可編程過濾器相比較的位。在29位標(biāo)識符格式中,RXMEID0寄存器的EID2:EID0位設(shè)置為無關(guān)位。MCP2502X/5X定義2個獨立的接收過濾器:RXF0和RXF1。其中,RXF0用于信息請求報文,而RXF1用于輸入報文。按照預(yù)定標(biāo)識符格式對過濾器進行預(yù)編程配置,過濾器的每一位與CAN ID的位相對應(yīng)。為了接收報文,CAN ID中的每一位(相應(yīng)屏蔽位設(shè)置為1時)必須和對應(yīng)的過濾器位相匹配。忽略未滿足屏蔽/過濾條件的報文。同時擴展節(jié)點配置為自動發(fā)送模式,即當(dāng)采集輸入信號變化或經(jīng)一定時間間隔將自動發(fā)送信息。
3.2 用CAN報文配置擴展器
由于配置寄存器通過CAN總線訪問,因此除了采用預(yù)編程配置擴展器外,通信建立后,主節(jié)點通過命令報文配置器件,也可在線修改已配置的寄存器。命令報文種類由源地址的低3位確定。
4 擴展節(jié)點硬件結(jié)構(gòu)及系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)
圖4為擴展節(jié)點的硬件結(jié)構(gòu),MCP2502X/05X器件通過CAN驅(qū)動器與CAN總線相連。圖5為系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)。
CAN總線本身是一種多主總線,理論上每個節(jié)點都可作為主節(jié)點,但基于MCP25132X/5X器件的CAN網(wǎng)絡(luò)中必須有一個具有CAN接口的CPU作為主節(jié)點,來執(zhí)行控制算法,并做出相應(yīng)控制決策。而擴展節(jié)點只能作為從節(jié)點。其他節(jié)點則通過主節(jié)點與對應(yīng)的從節(jié)點通信。
5 主節(jié)點軟件設(shè)計
在主節(jié)點軟件設(shè)計過程中,將主節(jié)點和其對應(yīng)的擴展節(jié)點看成同一個ECU(電控單元)的不同CA(控制器應(yīng)用程序),并且地址可仲裁,主節(jié)點與擴展節(jié)點之間點對點通信,總線上所有ECU都遵循J1939協(xié)議進行通信,其他ECU通過主節(jié)點訪問擴展節(jié)點。
主節(jié)點軟件由主處理、接收處理和發(fā)送處理3部分構(gòu)成。其中,接收處理負(fù)責(zé)接收與本ECU地址相匹配的消息,并處理地址聲明消息和地址請求消息,將應(yīng)用消息填充到接收緩沖區(qū);發(fā)送消息負(fù)責(zé)將發(fā)送緩沖區(qū)的數(shù)據(jù)發(fā)送到CAN總線。圖6為主處理軟件流程。
6 結(jié)論
基于MCP2502X/05X器件設(shè)計CAN擴展節(jié)點無需大量編程,只需配置相關(guān)寄存器,連接簡單電路就能實現(xiàn)與主節(jié)點的通信。在無需微控制器下擴展一個CAN節(jié)點,用戶自行設(shè)置協(xié)議內(nèi)容,非常靈活,其豐富的外設(shè)滿足一般測控需要。將MCP2502X/05X器件與J1939協(xié)議相結(jié)合,可方便設(shè)計汽車的前端測控模塊,并與整個車載CAN網(wǎng)絡(luò)相連。這種設(shè)計方案系統(tǒng)結(jié)構(gòu)簡單、成本降低、提高信號傳輸?shù)目煽啃?,在車載CAN網(wǎng)絡(luò),尤其是前端測控模塊中具有廣泛的應(yīng)用前景。