張波濤
摘要:CAN(Control Area Network,控制器局部網(wǎng))總線廣泛應(yīng)用于工業(yè)自動(dòng)化監(jiān)控網(wǎng)絡(luò)中,傳輸速率的應(yīng)用已經(jīng)逐漸逼近CAN總線的帶寬,急需更高速率帶寬的總線通訊方式,CAN FD(CAN with Flexible Data-Rate,帶靈活可變數(shù)據(jù)波特率的CAN總線)總線應(yīng)運(yùn)而生,可以實(shí)現(xiàn)更高速率和更長(zhǎng)有效載荷。本文提出了一種CAN FD總線接口設(shè)計(jì)技術(shù),通過靈活的FPGA(Field-Programmable Gate Array,即現(xiàn)場(chǎng)可編程門陣列)設(shè)計(jì)SP(Iserial peripheral inter-face,串行外圍設(shè)備接口)接口控制CAN FD芯片MCP2517FD,實(shí)現(xiàn)CAN FD總線接口的設(shè)計(jì),系統(tǒng)實(shí)現(xiàn)后,可以根據(jù)現(xiàn)場(chǎng)應(yīng)用提出的新要求對(duì)FPGA進(jìn)行升級(jí),增加了使用的靈活性。
關(guān)鍵詞:FPGA;CAN;FD;MCP2517FD;SPI
CAN總線屬于現(xiàn)場(chǎng)總線的范疇是一種有效支持分布式控制和實(shí)時(shí)控制的串行通訊網(wǎng)絡(luò),最初是由德國(guó)BOSCH公司為汽車的監(jiān)測(cè)和控制而設(shè)計(jì)的,后來逐漸發(fā)展到用于其它工業(yè)領(lǐng)域。CAN總線具有低成本、極高的總線利用率、長(zhǎng)達(dá)10km的數(shù)據(jù)傳輸距離,高達(dá)1Mbps的數(shù)據(jù)傳輸速率、可根據(jù)報(bào)文ID進(jìn)行選擇,可靠的錯(cuò)誤處理機(jī)制、自動(dòng)重發(fā)被破壞的信息、節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下可自動(dòng)退出總線等特點(diǎn)。
CAN FD總線兼具CAN總線的特點(diǎn),在其基礎(chǔ)上傳輸速率帶寬由1Mbps提升至10Mbps,采用新的DLC(Data Length code)編碼方式使數(shù)據(jù)場(chǎng)長(zhǎng)度由8 個(gè)字節(jié)增加至64個(gè)字節(jié),更大程度上滿足了工業(yè)領(lǐng)域?qū)τ诟咚俾蕚鬏數(shù)男枨蟆?/p>
為了靈活的使用CAN FD總線,本文提出一種靈活的CAN FD總線接口設(shè)計(jì)技術(shù),即使用FPGA和控制器MCP2517FD實(shí)現(xiàn)CAN FD接口設(shè)計(jì)的方案,不僅能夠?qū)崿F(xiàn)CAN總線接口通訊,同時(shí)對(duì)于后期使用過程中,可以根據(jù)不同的要求進(jìn)行升級(jí),增加使用的靈活性。
1總線控制器MCP2517FD簡(jiǎn)介
為了實(shí)現(xiàn)CAN FD總線的應(yīng)用,Microchip公司在CAN總線控制器MCP2515的基礎(chǔ)上推出了MCP2517FD,它既可以滿足CAN總線的技術(shù)要求,又可以實(shí)現(xiàn)CAN FD總線的使用,帶有符合工業(yè)標(biāo)準(zhǔn)的SPI串行接口,具有體積小,易使用及低成本等特點(diǎn)。
MCP2517FD主要功能參數(shù)如下:
1.??? 支持CAN2.0B和CAN FD協(xié)議;
2.??? 仲裁域速率可達(dá)1Mbps,數(shù)據(jù)域速率可達(dá)8Mbps;
3.??? 有標(biāo)準(zhǔn)幀和擴(kuò)展幀兩種可供選擇,每幀包含的數(shù)據(jù)長(zhǎng)度為0~8個(gè)字節(jié)(CAN2.0B協(xié)議)或0~64個(gè)字節(jié)(CAN FD協(xié)議);
4.??? 支持遠(yuǎn)程幀;
5.??? 內(nèi)含31個(gè)FIFO,都可以通過配置作為發(fā)送或接收FIFO使用;內(nèi)含1 個(gè)發(fā)送隊(duì)列;內(nèi)含具有32位時(shí)間戳的發(fā)送事件FIFO;
6.??? 有可編程的自動(dòng)重傳機(jī)制:分別為無限次數(shù)、3次或禁用;
7.??? 內(nèi)含32個(gè)靈活的過濾器和掩蓋對(duì)象,每個(gè)對(duì)象都可以配置為過濾:標(biāo)準(zhǔn)ID+前 18個(gè)數(shù)據(jù)位或擴(kuò)展ID;
8.??? 有多達(dá)3 個(gè)中斷引腳;
9.??? 支持高達(dá)20MHz的SPI時(shí)鐘速率,支持SPI模式0,0和 1,1;
10.? 帶有CRC的SPI命令以檢測(cè)SPI接口上的噪聲,有受糾錯(cuò)編碼保護(hù)的RAM
11.? 40、20或 4MHz晶體、陶瓷諧振器或外部時(shí)鐘輸入,帶預(yù)分頻的時(shí)鐘輸出;
12.工作電壓:2.7V~5.5V;
13.使用5.5V電壓、40MHz時(shí)鐘時(shí)工作電流最大為12mA,睡眠模式下電流為10μA。
2硬件電路設(shè)計(jì)
本文設(shè)計(jì)的是CAN FD總線接口,因此硬件電路設(shè)計(jì)采用Altera公司的EP1C20F324I7N芯片產(chǎn)生控制時(shí)序邏輯;采用Altera公司的EPCS4SI8芯片作為FPGA的配置芯片;采用Microchip公司的控制器MCP2517FD實(shí)現(xiàn)CAN FD總線協(xié)議;采用NXP公司TJA1044GT芯片作為總線的收發(fā)器,將總線控制器產(chǎn)生的數(shù)字信號(hào)轉(zhuǎn)換為符合CANFD總線格式的信號(hào);FPGA和MCP2517FD總線控制器使用的時(shí)鐘為20MHz。
CAN FD總線硬件電路設(shè)計(jì)如圖1 所示。
3???? FPGA軟件設(shè)計(jì)
CAN FD總線接口的軟件設(shè)計(jì)主要分為邏輯時(shí)序控制模塊和SPI接口模塊,其中邏輯時(shí)序控制模塊主要實(shí)現(xiàn)MCP2517FD總線控制器的初始化、數(shù)據(jù)處理及輸出和響應(yīng)CAN FD總線控制指令等功能;SPI接口模塊主要實(shí)現(xiàn)FPGA與MCP2517FD的通訊。SPI指令格式見表1,除復(fù)位采用16位指令,其余讀寫均采用48位指令(即4 位命令+12位地址+32位數(shù)據(jù))。軟件各功能模塊如圖2 所示。
3.1? 邏輯時(shí)序控制模塊
注:C= 命令(4 位),A= 地址(12 位),D= 數(shù)據(jù)(1~n 字節(jié)),N= 字節(jié)數(shù)(1 字節(jié)),CRC(2 字節(jié))
3.1.1????? 總線控制器的初始化
總線控制器的初始化主要包括MCP2517FD特定寄存器的初始化和CAN FD控制器模塊寄存器的初始化,分別是對(duì)控制器和總線通訊格式進(jìn)行的初始化。具體內(nèi)容見下:
a)??? 初始化MCP2517FD特定寄存器
1)??? 復(fù)位使芯片進(jìn)入配置模塊;
2)??? 初始化時(shí)鐘、I/O口、校驗(yàn)及糾錯(cuò)碼。
b)??? 初始化CAN FD控制器模塊寄存器
1)??? 設(shè)置控制模式為配置模式;
2)??? 初始化仲裁域與數(shù)據(jù)域的傳輸速率及采樣點(diǎn);
3)??? 初始化發(fā)送請(qǐng)求、發(fā)送延遲補(bǔ)償及中斷等寄存器;
4)??? 初始化輸出FIFO和輸入FIFO及過濾器;
5)??? 設(shè)置控制模式為CAN FD模式。
3.1.2????? 數(shù)據(jù)處理及輸出
數(shù)據(jù)處理主要是將輸入的系統(tǒng)數(shù)據(jù)轉(zhuǎn)換為符合對(duì)外通訊協(xié)議的數(shù)據(jù)格式,將符合通訊協(xié)議格式的數(shù)據(jù)寫入控制器MCP2517FD的輸出FIFO中,然后通過發(fā)送請(qǐng)求寄存器控制MCP2517FD將FIFO中的數(shù)據(jù)輸出。流程圖見圖3。
3.1.3響應(yīng)總線控制指令
從MCP2517FD的輸入FIFO中讀取接收到的指令進(jìn)行判斷,若指令符合接口協(xié)議,則依據(jù)協(xié)議執(zhí)行指令,清除輸入FIFO;若指令不符合接口協(xié)議,清除輸入FIFO,不作任何處理。流程見圖4。
3.2? SPI接口模塊
FPGA和控制器MCP2517FD之間通過SPI接口進(jìn)行通訊,F(xiàn)PGA為主控器,MCP2517FD為從控器,主要有四個(gè)信號(hào):SCK-串行時(shí)鐘;CS-片選;SDO-MCP2517FD送給FPGA的數(shù)據(jù);SDI-FPGA送給MCP2517FD的數(shù)據(jù)。SPI接口選擇0,0模式傳輸,傳輸時(shí)先傳輸數(shù)據(jù)最高位,在時(shí)鐘信號(hào)的上升沿讀取數(shù)據(jù),傳輸?shù)牟ㄌ芈视蒄PGA控制實(shí)現(xiàn),滿足不大于20MHz的要求,SPI數(shù)據(jù)傳輸時(shí)序見圖5。
4結(jié)束語
本文提出了基于FPGA和控制器MCP2517FD的CAN FD總線接口的設(shè)計(jì)方案,并詳細(xì)論述了硬件電路設(shè)計(jì)和軟件設(shè)計(jì)實(shí)現(xiàn)方法,滿足了系統(tǒng)對(duì)高速率通訊的需求,目前該設(shè)計(jì)方案已在某型高度表系統(tǒng)中得以成功應(yīng)用。由于該設(shè)計(jì)方案采用模塊化設(shè)計(jì)方法,同時(shí)控制器MCP2517FD兼容CANFD和CAN2.0B總線接口,因此通過簡(jiǎn)單的修改軟件,就可以實(shí)現(xiàn)CAN總線接口。
參考文獻(xiàn):
[1]?? Microchip.ExternalCANFDControllerwith?????? SPI? Interface
[2]?? Microchip.CAN FD Module(MCP2517FD).2017.
[3]?? 張杰.CAN總線在汽車車身控制方面的設(shè)計(jì)和應(yīng)用.中國(guó)知網(wǎng).2007.
[4]?? 柯江民,孫淑霞,曹屹東.MCP2515及CAN通訊驅(qū)動(dòng)設(shè)計(jì).計(jì)算機(jī)應(yīng)用.2008.