嵌入式系統(tǒng)的CAN總線設(shè)計
1.CAN總線概述
CAN(Controller Area Network)總線即控制器局域網(wǎng)絡(luò),是現(xiàn)場總線之一,由德國Bosch公司為汽車的監(jiān)測、控制系統(tǒng)而設(shè)計的總線式串行通訊網(wǎng)絡(luò),適合于工業(yè)過程控制設(shè)備和監(jiān)控設(shè)備之間的互聯(lián)。是一種多主方式的串行通訊總線,基本設(shè)計規(guī)范要求有高的位速率,高抗電磁干擾性,而且能夠檢測出產(chǎn)生的任何錯誤。主要應(yīng)用于汽車電子控制系統(tǒng)、電梯控制系統(tǒng)、安全監(jiān)控系統(tǒng)、醫(yī)療儀器、紡織機械、船舶運輸?shù)确矫?。CAN具有下下列主要特性:①低成本;②遠(yuǎn)距離傳輸(長達(dá)l0Km);③高速的數(shù)據(jù)傳輸速率(高達(dá)1Mbit/s);④可根據(jù)報文的ID決定接收或屏蔽該報文;⑤可靠的錯誤處理和檢錯機制;⑥發(fā)送的信息遭到破壞后,可自動重發(fā);⑦節(jié)點在錯誤嚴(yán)重的情況下具有自動退出總線的功能。
2.嵌入式系統(tǒng)的CAN接口電路
基于ARM7架構(gòu)嵌入式系統(tǒng)的CAN接口硬件模塊包括Samsung公司的嵌入式微處理器S3C44BOX和Philips公司的CAN控制器芯片SJAl000和CAN總線收發(fā)器PCA82C250。
2.1 Samsung S3C44BOX的結(jié)構(gòu)及特點
8KB Cache、 Samsung S3C44BOX微處理器是三星公司專為手持設(shè)備和一般應(yīng)用提供的高性價比和高性能的微控制器解決方案,它使用ARM7TDMI CPU核,工作在66MHZ。為了降低系統(tǒng)總成本和減少外圍器件,這款芯片中還集成了下列部件:外部存儲器控制器、LCD控制器、4個DMA通道、2通道異步UART單元、1個同步串行口(SIO)、1個多主12C總線控制器、1個I Is總線控制器,5通道PWM定時器及一個內(nèi)部定時器、71個通用I/O口、8個外部中斷源、實時時鐘、8通道10位ADC等。
2.2 CAN總線控制器
CAN總線控制器選用Philips公司的SJAl000。 SJAl000是一款獨立的控制器,用于汽車和一般工業(yè)環(huán)境中的控制器局域網(wǎng)絡(luò)(CAN)。它是PHILIPS半導(dǎo)體PCA82C200 CAN控制器(BasicCAN)的替代產(chǎn)品。而且,它增加了一種新的工作模式(PeliCAN),這種模式支持具有很多新特性的CAN2.0B協(xié)議。SJA1000是新一代CAN控制器,有如下特點:①和PCA82C200獨立CAN控制器引腳兼容及電氣兼容;②SJA1000有兩種工作模式:基本CAN模式(BASIC CAN)和增強CAN模式(PELI CAN),支持CAN2.0A/B協(xié)議;③同時支持11位和29位ID,位速率可達(dá)1M,具有總線仲裁功能;④擴(kuò)展的接收緩沖器(64字節(jié)、先進(jìn)先出FIFO),增強的環(huán)境溫度范圍(-40-+125℃);⑤檢錯和糾錯能力加強;⑥支持帶電插拔。
SJA1000方框圖如圖1所示。其中接口管理邏輯IML負(fù)責(zé)連接外部主控制器,該控制器可以是微型控制器或其它任何控制器。接口管理邏輯IML接收來自微控制器的命令,分配控制信息緩存器發(fā)送緩存器TBF、接收緩存器RBF0和RBF1,并為微控制器提供中斷和狀態(tài)信息。發(fā)送緩存器TBF由10個字節(jié)存貯單元組成,存貯由微控制器寫,將被發(fā)送至CAN總線網(wǎng)絡(luò)的報文。接收緩存器0和1(RBF0、RBF1)均由10個字節(jié)組成,交替存貯從總線接收的報文,當(dāng)一個緩存器分配給CPU,位流處理器可以對另一個進(jìn)行寫操作。位流處理器是一個控制發(fā)送緩存器和接收緩存器(并行數(shù)據(jù))與CAN總線(串行數(shù)據(jù))之間數(shù)據(jù)流的序列發(fā)生器。位定時邏輯將SJA1000同步于CAN總線上的位流。驗收濾波器支持11位和29位標(biāo)識符的濾波,所有收到的報文由驗收濾波器驗收并存儲在接收FIFO。錯誤管理邏輯按照CAN協(xié)議完成錯誤界定。

2.3 CAN總線收發(fā)器
CAN總線收發(fā)器選用Philips公司PCA82C250產(chǎn)品。CAN總線收發(fā)器是CAN協(xié)議控制器和物理總線之間的接口,該器件對總線提供差動發(fā)送能力并對CAN控制器提供差動接收能力,有很強的抗電磁干擾(EMI)的能力,至少可掛110個節(jié)點。
2.4 嵌入式系統(tǒng)的CAN接口電路
圖2是嵌入式微處理器S3C44BOX的CAN接口電路圖。如圖所示,ARM和SJA1000以總線方式連接,由于ARM信號為3.3伏,而CAN總線控制器電平為5伏,所以所有信號之間均需要電平轉(zhuǎn)換,本例中使用了QS34X245作為電平轉(zhuǎn)換芯片。QS34X245為80引腳的雙例直插芯片,它既有電平轉(zhuǎn)換功能(5V變到3.3V),又是一個總線開關(guān)和隔離器件。QS34X245內(nèi)提供一組32位高速CMOS兼容的總線開關(guān),當(dāng)輸出使能端OEn(n為1~4)為低電平時,開關(guān)通,連能總線A和總線B;當(dāng)輸出使能端OEn為高電平時,則開關(guān)斷開,總線A和總線B隔離。OE1控制總線A和總線B的低8位(即A7~A0和B7~B0),OE2控制A15~A8和B15~B8,OE3控制A23~A16和B23~B16,OE4控制A31~A24和B31~B24。由于ARM總線非復(fù)用,而SJA1000總線復(fù)用,所以必須通過邏輯產(chǎn)生地址鎖存信號ALE,在本例中該信號由芯片GAL22V10產(chǎn)生。SJA1000的片選、讀寫信號均采用ARM總線信號,ALE信號由讀寫信號和地址信號通過GAL產(chǎn)生。在寫SJA1000寄存器時,首先往總線的一個地址寫數(shù)據(jù),作為地址,讀寫信號無效,ALE變化產(chǎn)生鎖存信號;然后寫另外一個地址,讀寫信號有效,作為數(shù)據(jù)。上述邏輯完全通過GAL產(chǎn)生。此外,CAN總線需要在兩線問加一個120歐電阻。

3 系統(tǒng)軟件的設(shè)計
CAN控制器對于主控制器(CPU)來講是一個存儲器映象的I/O設(shè)備,SJA1000的功能配置和行為由主控制器的程序執(zhí)行,主控制器和SJA1000之間的數(shù)據(jù)交換經(jīng)過一組寄存器(控制段)和一個RAM(報文緩存器)完成。RAM部分的寄存器和地址窗口組成了發(fā)送緩存器和接收緩存器,其中控制段由CPU在初始化時設(shè)置,需要發(fā)送的數(shù)據(jù)由CPU填入發(fā)送緩存器中。接收緩存器有兩個,對于CPU而言兩者地址是相同的,當(dāng)CPU讀取一個緩存器時,另一個可同時在接收數(shù)據(jù),兩者替工作。SJA1000初始化程序圖3所示。

SJA1000控制段寄存器包括控制寄存器CR、命令寄存器CMR、狀態(tài)寄存器SR、中斷寄存器IR、接收代碼寄存器ACR、接收屏蔽寄存器AMR、總線定時寄存器BTR0及BTRl、輸出控制寄存器OCR、測試寄存器TR。控制寄存器用來控制中斷、復(fù)位和同步方式。命令寄存器用來控制發(fā)送、終止發(fā)送、緩沖區(qū)釋放、清除過載狀態(tài)、睡眠、喚醒和接收方式。狀態(tài)寄存器用于指示CAN控制器的當(dāng)前工作狀態(tài),包括接收緩沖區(qū)狀態(tài)、數(shù)據(jù)是否超載、發(fā)送緩沖區(qū)狀態(tài)、發(fā)送是否結(jié)束、接收是否正在進(jìn)行、發(fā)送是否正在進(jìn)行、錯誤狀態(tài)和總線是否關(guān)閉。中斷寄存器用來指示各中斷源狀態(tài),包括接收中斷、發(fā)送中斷、出錯中斷、超載中斷和喚醒中斷。接收代碼寄存器存放用于接收幀識別的代碼。接收屏蔽寄存器說明對應(yīng)于接收代碼的哪些位參與接收幀識別。總線定時寄存器用來設(shè)定總線通信速率。輸出控制寄存器用來控制輸出驅(qū)動器的輸出方式。測試寄存器僅用于芯片內(nèi)部測試。
控制CAN總線時首先初始化各寄存器,以設(shè)定通信參數(shù)(如:模式、位速率、驗收碼、屏蔽碼、字段長、總線定時、輸出模式等),BASIC CAN方式控制段共10個字節(jié)。發(fā)送數(shù)據(jù)時首先置位命令寄存器,然后將被發(fā)送的報文寫入發(fā)送緩沖區(qū),最后置位請求發(fā)送,由SJAl000完成發(fā)送。接收通過查詢狀態(tài)寄存器,讀取接收緩沖區(qū)獲得信息,然后釋放接收緩沖器。
- 相關(guān)閱讀:
- 嵌入式系統(tǒng)開發(fā)
聲明:本站部分內(nèi)容根據(jù)互聯(lián)網(wǎng)資料整理而成,若侵犯您的權(quán)益,請聯(lián)系我們,我們會盡快處理。