基于MCP2502X/05X的CAN總線節(jié)點(diǎn)設(shè)計(jì)
預(yù)編程CAN相關(guān)寄存器就是實(shí)現(xiàn)不同CAN協(xié)議,并通過(guò)CAN報(bào)文配置和操作其他寄存器。MCP2502X/05X系列器件在實(shí)現(xiàn)對(duì)器件本身控制的前提下,用戶通過(guò)配置CAN模塊相關(guān)寄存器,并根據(jù)實(shí)際情況設(shè)計(jì)協(xié)議的具體內(nèi)容。擴(kuò)展節(jié)點(diǎn)的CAN協(xié)議必須與主節(jié)點(diǎn)的CAN協(xié)議相匹配。該設(shè)計(jì)采用J1939協(xié)議標(biāo)準(zhǔn)配置CAN模塊寄存器,由于CAN擴(kuò)展節(jié)點(diǎn)與主節(jié)點(diǎn)之間要求點(diǎn)對(duì)點(diǎn)通信,所以采用PDU1格式,其29位標(biāo)識(shí)符各位的含義如圖3所示。本文引用地址:http://m.butianyuan.cn/article/163422.htm
圖3中,源地址的高5位可編程,低3位與擴(kuò)展器硬件相關(guān)聯(lián),用于實(shí)現(xiàn)特定的CAN命令,比如將報(bào)文源地址低3位寫(xiě)“000”,讀取A/D轉(zhuǎn)換器的寄存器。PS(PDU格式)要小于240,其他各位由應(yīng)用層確定。按照協(xié)議標(biāo)識(shí)符格式寫(xiě)配置寄存器。MCP2502X/5X器件包含3個(gè)獨(dú)立的發(fā)送報(bào)文ID:TX-ID0、TXID1和TXID2。
配置相應(yīng)的寄存器預(yù)定義各種輸出報(bào)文中每一個(gè)報(bào)文的數(shù)據(jù)長(zhǎng)度碼以及直接從器件外設(shè)寄存器輸入待發(fā)送數(shù)據(jù)。器件按照預(yù)定義格式發(fā)送報(bào)文。配置接收屏蔽寄存器來(lái)定義CAN ID與可編程過(guò)濾器相比較的位。在29位標(biāo)識(shí)符格式中,RXMEID0寄存器的EID2:EID0位設(shè)置為無(wú)關(guān)位。MCP2502X/5X定義2個(gè)獨(dú)立的接收過(guò)濾器:RXF0和RXF1。其中,RXF0用于信息請(qǐng)求報(bào)文,而RXF1用于輸入報(bào)文。按照預(yù)定標(biāo)識(shí)符格式對(duì)過(guò)濾器進(jìn)行預(yù)編程配置,過(guò)濾器的每一位與CAN ID的位相對(duì)應(yīng)。為了接收?qǐng)?bào)文,CAN ID中的每一位(相應(yīng)屏蔽位設(shè)置為1時(shí))必須和對(duì)應(yīng)的過(guò)濾器位相匹配。忽略未滿足屏蔽/過(guò)濾條件的報(bào)文。同時(shí)擴(kuò)展節(jié)點(diǎn)配置為自動(dòng)發(fā)送模式,即當(dāng)采集輸入信號(hào)變化或經(jīng)一定時(shí)間間隔將自動(dòng)發(fā)送信息。
3.2 用CAN報(bào)文配置擴(kuò)展器
由于配置寄存器通過(guò)CAN總線訪問(wèn),因此除了采用預(yù)編程配置擴(kuò)展器外,通信建立后,主節(jié)點(diǎn)通過(guò)命令報(bào)文配置器件,也可在線修改已配置的寄存器。命令報(bào)文種類由源地址的低3位確定。
4 擴(kuò)展節(jié)點(diǎn)硬件結(jié)構(gòu)及系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)
圖4為擴(kuò)展節(jié)點(diǎn)的硬件結(jié)構(gòu),MCP2502X/05X器件通過(guò)CAN驅(qū)動(dòng)器與CAN總線相連。圖5為系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)。
CAN總線本身是一種多主總線,理論上每個(gè)節(jié)點(diǎn)都可作為主節(jié)點(diǎn),但基于MCP25132X/5X器件的CAN網(wǎng)絡(luò)中必須有一個(gè)具有CAN接口的CPU作為主節(jié)點(diǎn),來(lái)執(zhí)行控制算法,并做出相應(yīng)控制決策。而擴(kuò)展節(jié)點(diǎn)只能作為從節(jié)點(diǎn)。其他節(jié)點(diǎn)則通過(guò)主節(jié)點(diǎn)與對(duì)應(yīng)的從節(jié)點(diǎn)通信。
5 主節(jié)點(diǎn)軟件設(shè)計(jì)
在主節(jié)點(diǎn)軟件設(shè)計(jì)過(guò)程中,將主節(jié)點(diǎn)和其對(duì)應(yīng)的擴(kuò)展節(jié)點(diǎn)看成同一個(gè)ECU(電控單元)的不同CA(控制器應(yīng)用程序),并且地址可仲裁,主節(jié)點(diǎn)與擴(kuò)展節(jié)點(diǎn)之間點(diǎn)對(duì)點(diǎn)通信,總線上所有ECU都遵循J1939協(xié)議進(jìn)行通信,其他ECU通過(guò)主節(jié)點(diǎn)訪問(wèn)擴(kuò)展節(jié)點(diǎn)。
主節(jié)點(diǎn)軟件由主處理、接收處理和發(fā)送處理3部分構(gòu)成。其中,接收處理負(fù)責(zé)接收與本ECU地址相匹配的消息,并處理地址聲明消息和地址請(qǐng)求消息,將應(yīng)用消息填充到接收緩沖區(qū);發(fā)送消息負(fù)責(zé)將發(fā)送緩沖區(qū)的數(shù)據(jù)發(fā)送到CAN總線。圖6為主處理軟件流程。
6 結(jié)論
基于MCP2502X/05X器件設(shè)計(jì)CAN擴(kuò)展節(jié)點(diǎn)無(wú)需大量編程,只需配置相關(guān)寄存器,連接簡(jiǎn)單電路就能實(shí)現(xiàn)與主節(jié)點(diǎn)的通信。在無(wú)需微控制器下擴(kuò)展一個(gè)CAN節(jié)點(diǎn),用戶自行設(shè)置協(xié)議內(nèi)容,非常靈活,其豐富的外設(shè)滿足一般測(cè)控需要。將MCP2502X/05X器件與J1939協(xié)議相結(jié)合,可方便設(shè)計(jì)汽車的前端測(cè)控模塊,并與整個(gè)車載CAN網(wǎng)絡(luò)相連。這種設(shè)計(jì)方案系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、成本降低、提高信號(hào)傳輸?shù)目煽啃?,在車載CAN網(wǎng)絡(luò),尤其是前端測(cè)控模塊中具有廣泛的應(yīng)用前景。
評(píng)論