基于CAN總線(xiàn)的多通道實(shí)時(shí)模擬器設計
CAN總線(xiàn)與一般的串行通信總線(xiàn)相比,它的數據通信具有可靠性高,實(shí)時(shí)性高,靈活性強等優(yōu)點(diǎn),不僅廣泛應用于汽車(chē)行業(yè),而且擴展到了機械工業(yè)、機器人、數控機床等諸多領(lǐng)域。尤其在大量數據通信處理中,高可靠性及實(shí)時(shí)響應的場(chǎng)合,單通道CAN總線(xiàn)不能滿(mǎn)足實(shí)際通信的要求。為此,介紹一種基于多通道實(shí)時(shí)CAN模擬器的設計方案。
本文引用地址:http://dyxdggzs.com/article/201609/297089.htm步驟/方法
1
CAN總線(xiàn)與一般的串行通信總線(xiàn)相比,它的數據通信具有可靠性高,實(shí)時(shí)性高,靈活性強等優(yōu)點(diǎn),不僅廣泛應用于汽車(chē)行業(yè),而且擴展到了機械工業(yè)、機器人、數控機床等諸多領(lǐng)域。尤其在大量數據通信處理中,高可靠性及實(shí)時(shí)響應的場(chǎng)合,單通道CAN總線(xiàn)不能滿(mǎn)足實(shí)際通信的要求。為此,介紹一種基于多通道實(shí)時(shí)CAN模擬器的設計方案。
2
1 CAN總線(xiàn)技術(shù)介紹
1.1 CAN總線(xiàn)特性
CAN(Controller Area Network)總線(xiàn)是一種串行多主站控制器局域網(wǎng)總線(xiàn)。它具有很高的網(wǎng)絡(luò )安全性、通信可靠性和實(shí)時(shí)性,并且簡(jiǎn)單實(shí)用,網(wǎng)絡(luò )成本低。它主要用于各種過(guò)程監測及控制的一種網(wǎng)絡(luò )。CAN最初是由德國B(niǎo)OSCH公司為汽車(chē)的監測、控制系統而設計的。由于CAN總線(xiàn)具有卓越的特性和極高的可靠性,特別適合于工業(yè)過(guò)程中監控設備的互連,具體來(lái)說(shuō),CAN具有如下特性:
(1)CAN可以多主方式工作,網(wǎng)絡(luò )上任意一個(gè)節點(diǎn)均可以在任意時(shí)刻主動(dòng)地向網(wǎng)絡(luò )上的其他節點(diǎn)發(fā)送信息,而不分主從,通信方式靈活;
(2)CAN可以點(diǎn)對點(diǎn)、點(diǎn)對多點(diǎn)(成組)及全局廣播方式傳送接收數據;
(3)CAN網(wǎng)絡(luò )上的節點(diǎn)信息可分成不同的優(yōu)先級,可以滿(mǎn)足不同的實(shí)時(shí)要求;
(4)CAN采用非破壞性總線(xiàn)仲載技術(shù)。當兩個(gè)節點(diǎn)是向網(wǎng)絡(luò )上發(fā)送數據時(shí),優(yōu)先級低的節點(diǎn)主動(dòng)停止數據發(fā)送,而優(yōu)先級高的節點(diǎn)可以不受影響地繼續傳輸數據,大大節省了總線(xiàn)仲載沖突時(shí)間,在網(wǎng)絡(luò )負載很重的情況下也不會(huì )出現網(wǎng)絡(luò )癱瘓;
(5)CAN的直接通信距離最大可達10 km(速率小于5 Kb/s),最高通信速率可達1 Mb/s。
1.2 CAN通信協(xié)議
在CAN 2.0B的版本協(xié)議中有兩種不同的幀格式,不同之處為標識符域的長(cháng)度不同,含有11位標識符的幀稱(chēng)為標準幀,而含有29位標識符的幀稱(chēng)為擴展幀。擴展格式是CAN 2.0B協(xié)議新增加的特性。在報文傳輸時(shí),不同的幀具有不同的傳輸結構,只有嚴格按照該結構進(jìn)行幀的傳輸,才能被節點(diǎn)正確接收和發(fā)送。下面將分別介紹四種傳輸幀的結構:
(1)數據幀(Data):數據幀將數據從發(fā)送器傳輸到接收器。CAN協(xié)議有兩種數據幀類(lèi)型標準2.0A和標準2.0B。兩者本質(zhì)的不同在于ID的長(cháng)度不同。在2.0A類(lèi)型中,ID的長(cháng)度為11位;在2.0B類(lèi)型中,ID的長(cháng)度為29位。它由7個(gè)域組成:幀起始、仲裁域、控制域、數據域、CRC校驗碼域、應答域、幀結束。
(2)遠程幀(Remote):總線(xiàn)單元發(fā)出遠程幀,請求發(fā)送具有同一標識符的數據幀。接收數據的節點(diǎn)可通過(guò)發(fā)遠程幀請求源節點(diǎn)發(fā)送數據。它由6個(gè)域組成:幀起始、仲裁域、控制域、校驗域、應答域、幀結束。
(3)錯誤幀(Error):任何單元檢測到總線(xiàn)錯誤就發(fā)出錯誤幀。由錯誤標志和錯誤分界兩個(gè)域組成。接收節點(diǎn)發(fā)現總線(xiàn)上的報文有誤時(shí),將自動(dòng)發(fā)出“活動(dòng)錯誤標志”,其他節點(diǎn)檢測到活動(dòng)錯誤標志后發(fā)送“錯誤認可標志”。
(4)過(guò)載幀(Overload):過(guò)載幀用在相鄰數據幀或遠程幀之間提供附加的延時(shí)。由超載標志和超載分隔符組成。超載幀只能在一個(gè)幀結束后開(kāi)始。當接收方在接收下一幀之前,需要過(guò)多的時(shí)間處理當前的數據,或在幀間空隙域檢測到顯性電平時(shí),則導致發(fā)送超載幀。
1.3 CAN協(xié)議控制器
目前主流的CAN協(xié)議控制器一般采用I/O總線(xiàn)(SJA1000等)或SPI接口(M(2P2515等)與處理器進(jìn)行通信。該設計采用SJA1000控制器。
SJA1000是一款獨立CAN控制器,應用于移動(dòng)目標和工業(yè)局域網(wǎng)控制領(lǐng)域。SJA1000具有兩種工作模式:BasicCAN和PeliCAN。該設計采用PeliCAN工作模式。SJA1000用來(lái)完成CAN協(xié)議所規定的物理層和數據鏈路層的所有功能,它可以支持多種處理器的時(shí)序特性,如Intel模式或Motorola模式,與微處理器的接口非常簡(jiǎn)單,微處理器以訪(fǎng)問(wèn)外部存儲器的方式來(lái)訪(fǎng)問(wèn)SJA1000。
SJA1000通過(guò)CAN控制器接口即PCA82C250芯片接到CAN總線(xiàn)上。CAN收發(fā)器使用飛利浦公司的PCA82C250,它是連接CAN控制器和物理總線(xiàn)之間的接口,提供了對總線(xiàn)的差動(dòng)發(fā)動(dòng)和接收能力,與ISO11898標準完全兼容,有三種不同的工作方式即高速、斜率控制和待機,可根據實(shí)際情況選擇。硬件電路中使用PCA82C250是為了增加通信距離,提高系統的瞬間抗干擾能力,保護總線(xiàn),降低干擾等。
2 系統設計
2.1 系統方案設計
根據通用計算機的總線(xiàn)分類(lèi),可采用基于ISA總線(xiàn)對多通道實(shí)時(shí)CAN總線(xiàn)模擬器進(jìn)行研制,根據CAN總線(xiàn)通信原理可以提出以下兩種設計方案:
(1)ISA總線(xiàn)+CAN通信控制器;
(2)ISA總線(xiàn)+微處理器+CAN通信控制器。這兩種設計方案的不同點(diǎn)在于是否采用處理器來(lái)加強控制。
由于CAN總線(xiàn)通信要求實(shí)時(shí)性高,再加上多通道的設計滿(mǎn)足實(shí)際的需要,故采用單片機來(lái)負責CAN總線(xiàn)的通信功能。在這里主要介紹單片機與CAN控制器之間的設計部分,其系統設計框圖如圖1所示。

單片機選用DALLAS公司的DS89C430,它是當前8051兼容微控制器中性能最高的。具有重新設計的處理器內核,在相同的晶振頻率下,執行指令的速度是最初8051微處理器的12倍。特性:高速8051架構,每個(gè)機器周期一個(gè)時(shí)鐘;片內存儲器16 KB/32 KB/64 KB閃存,在應用可編程,通過(guò)串口實(shí)現在系統可編程;與8051引腳和指令集兼容;四路雙向、8位I/O端口;三個(gè)16位定時(shí)器/計數器;256 B暫存RAM等特點(diǎn)??筛鶕?shí)際應用的需要選擇其部分功能。隨著(zhù)可編程邏輯器件的飛速發(fā)展,其應用領(lǐng)域不斷擴大,可用于譯碼、解碼等方面,使用CPLD可以提高系統集成度,降低噪聲,增強系統可靠性。因此,單片機與CAN控制器之間的鎖存、譯碼采用Xilinx公司XC95144CPLD芯片,優(yōu)化了系統資源,降低了其功耗。
2.2 系統硬件設計
該部分由單片機、CAN控制器、CAN收發(fā)器、SRAM存儲器組成。單片機主要用于系統計算及信息處理等功能;CAN控制器主要用于系統通信;CAN收發(fā)器主要用于增強系統的驅動(dòng)能力;SRAM主要用于緩存數據。系統的發(fā)送過(guò)程是:?jiǎn)纹瑱C將外圍設備傳送過(guò)來(lái)的信息處理后,按CAN規范規定的格式,將其寫(xiě)入CAN控制器的發(fā)送緩沖區,并啟動(dòng)發(fā)送命令,把數據發(fā)送到CAN總線(xiàn)上;接收過(guò)程是:CAN控制器從CAN總線(xiàn)上自動(dòng)接收數據,并經(jīng)過(guò)濾后存入CAN接收緩沖區,且向單片機發(fā)出中斷請求,此時(shí)單片機可從CAN接收緩沖區讀取要接收的數據。SJA1000提供的微處理器接口方式為典型INTEL或MOTOROLA地址數據多路復用總線(xiàn)模式。主要信號有地址數據信號AD7~AD0,地址選通信號ALE,片選信號CS,讀信號RD,寫(xiě)信號WR,模式選擇信號MODE。當MODE=1時(shí),為INTEL模式;當MODE=0時(shí),為MOTOROLA模式。后面描述的總線(xiàn)模式均為INTEL模式。AD7~AD0引腳在A(yíng)LE有效時(shí),傳送的是地址信號,在RD或WR有效時(shí),傳輸的是數據信號,在這里分別與單片機的PO口相連,RD,WR信號線(xiàn)分別與單片機的讀/寫(xiě)信號線(xiàn)相連。具體方案如圖2所示。限于篇幅限制,虛線(xiàn)內給出1路CAN的連接圖,2路CAN有同樣的連接方法。

SRAM和CAN控制器的片選信號。由于單片機可以查詢(xún)或中斷方式訪(fǎng)問(wèn),在此采用中斷方式進(jìn)行CAN多通道選擇訪(fǎng)問(wèn),以滿(mǎn)足不同通信速率下數據處理的需要。SRAM的地址線(xiàn)與數據線(xiàn)是分開(kāi)的,故采用74LS373鎖存器實(shí)現鎖存功能??刹捎肵C95144CPLD芯片以及VHDL硬件描述語(yǔ)言以實(shí)現鎖存、譯碼等功能。2.3 CPLD設計部分
2.3.1 結構設計
CPLD的輸入信號是單片機發(fā)送的信號,由高位地址A[15..8]、ALE鎖存信號、中斷信號以及寫(xiě)/讀信號組成。地址線(xiàn)A14和A15經(jīng)譯碼后作為片選信號,ALE實(shí)現低8位地址線(xiàn)的鎖存。實(shí)體和構造體部分代碼如下所示:

2.3.2 仿真結果
該模塊在Xilinx ISE 9.1工具下進(jìn)行綜合,并在結合ModelSim環(huán)境下進(jìn)行功能仿真。其仿真結果如圖3所示。

軟件設計 該系統軟件設計的關(guān)鍵是通信程序設計。通信軟件由三部分組成:?jiǎn)纹瑱C和CAN控制器的初始化程序、CAN發(fā)送程序、CAN接收程序。對于初始化程序,采用MAX232芯片對單片機進(jìn)行在線(xiàn)編程,可同時(shí)對多通道CAN控制器初始化。對于CAN控制器的初始化程序,主要是通過(guò)對CAN控制器控制段中的寄存器寫(xiě)入控制字,從而確定CAN控制器的工作方式等,即通過(guò)上電復位、硬件復位或軟件復位給CAN控制器發(fā)一個(gè)復位請求,便可進(jìn)入初始化。在復位期間,對必需的寄存器進(jìn)行設置。對于發(fā)送和接受程序,只需把到來(lái)的信息幀送到CAN的發(fā)送或接受緩沖區,同時(shí)啟動(dòng)命令即可。二者可采用查詢(xún)方式或中斷方式,對于中斷方式,程序分為主程序和中斷服務(wù)程序兩部分設計。在具體項目中,需要軟硬件結合調試才能保證各部分的設計準確無(wú)誤,到達實(shí)際應用的要求。
結語(yǔ) 在對CAN通信協(xié)議進(jìn)行分析的基礎上,構建了一種多通道實(shí)時(shí)CAN總線(xiàn)模擬器架構,同時(shí)利用CPLD器件,通過(guò)功能仿真,驗證了設計方案的正確性。經(jīng)實(shí)際工程項目使用,驗證了該設計方案切實(shí)可行,滿(mǎn)足了實(shí)際應用中高可靠性、高實(shí)時(shí)性以及傳輸速率較高的需求。
評論