當(dāng)前位置:首頁 > 汽車電子 > 汽車電子
[導(dǎo)讀]1、引言隨著工業(yè)控制系統(tǒng)逐步的自動化,現(xiàn)代化,現(xiàn)場總線控制系統(tǒng)得到越來越多的重視和應(yīng)用,CAN總線是目前開發(fā)簡單,性能價格比高的一種現(xiàn)場總線 。相對其他現(xiàn)場總線而言,CAN通信控制器的生產(chǎn)廠家最多、品種最全、

1、引言

隨著工業(yè)控制系統(tǒng)逐步的自動化,現(xiàn)代化,現(xiàn)場總線控制系統(tǒng)得到越來越多的重視和應(yīng)用,CAN總線是目前開發(fā)簡單,性能價格比高的一種現(xiàn)場總線 。相對其他現(xiàn)場總線而言,CAN通信控制器的生產(chǎn)廠家最多、品種最全、應(yīng)用也最為廣泛?;诂F(xiàn)場總線控制系統(tǒng)智能化、復(fù)雜度的提高,作為現(xiàn)場總線的核心部件微處理器,傳統(tǒng)的51芯片,甚至ARM7已經(jīng)逐漸不能滿足需要,ARM9成為合適的選擇。但許多ARM9并沒有集成CAN接口,擴(kuò)展CAN接口成為當(dāng)務(wù)之急。且ARM9將數(shù)據(jù)地址總線分開,而CAN控制器為數(shù)據(jù)地址總線復(fù)用,使得CAN的擴(kuò)展不能一味照搬51處理器的方式。在CAN模塊驅(qū)動開發(fā)上,現(xiàn)有資料往往只針對Linux系統(tǒng)上的驅(qū)動開發(fā) 進(jìn)行介紹,而現(xiàn)場總線控制系統(tǒng)對實(shí)時性的要求使得Linux系統(tǒng)要讓位于更多的實(shí)時操作系統(tǒng)。

本文介紹了一種基于ARM920T現(xiàn)場總線的控制系統(tǒng),詳細(xì)說明了其上擴(kuò)展CAN總線的兩種方式,并給出具體的CAN模塊在實(shí)時操作系統(tǒng)eCos 上驅(qū)動程序開發(fā)的步驟,最后對兩種擴(kuò)展進(jìn)行了簡要的比較。

2、現(xiàn)場總線控制系統(tǒng)簡介

該現(xiàn)場總線控制系統(tǒng)采用EP9315為核心處理器。EP9315是Cirrus Logic公司開發(fā)的一款基于ARM920T的工業(yè)級處理器。該現(xiàn)場總線控制系統(tǒng)除了外擴(kuò)的CAN總線接口、還外擴(kuò)64Mb SDRAM和32MB FLASH、并帶有PCMCIA 接口、E PROM接口、512kb SRAM、IDE接口、實(shí)時時鐘、視頻顯示、彩色VGA TFT LCD觸摸屏、支持模擬VGA連接、視頻解碼支持壓縮視頻輸出和S-VIDEO輸出、PS/2鍵盤,三個USB接口、三個串行接口、音頻接口、1/10/100Mbps以太網(wǎng)接口、紅外線接收口;實(shí)現(xiàn)了控制系統(tǒng)的數(shù)字化、智能化;可實(shí)現(xiàn)多種功能,使系統(tǒng)的控制功能本地化,提高了系統(tǒng)的可靠性、實(shí)時性;簡化了系統(tǒng)的結(jié)構(gòu)。多接口的系統(tǒng)結(jié)構(gòu)使系統(tǒng)的擴(kuò)展,變更,拆裝更加靈活便利。

3、硬件系統(tǒng)擴(kuò)展

3.1 CAN總線模塊結(jié)構(gòu)

本文使用SJA1000T作為CAN控制器擴(kuò)展CAN模塊 。SJA1000T是使用于汽車和一般工業(yè)環(huán)境的獨(dú)立CAN總線控制器,具有完成CAN高性能通信協(xié)議所要求的全部必要特性;具有簡單總線連接的SJA1000T可完成物理層和數(shù)據(jù)鏈路層的所有功能。支持CAN2.0協(xié)議。

CAN總線收發(fā)器TJA1040T是CAN控制器和物理總線之間的接口芯片,增強(qiáng)了總線的驅(qū)動能力,從而增加CAN總線的通信距離并使得一條總線上可以掛更多的節(jié)點(diǎn)。

為增強(qiáng)CAN總線節(jié)點(diǎn)的抗干擾能力 ,SJA1000T的TXO和RXO并不直接與TJA1040的TXD和RXD相連,而是通過兩片光耦隔離芯片6N137與TJA1040T相連。很好地實(shí)現(xiàn)了收發(fā)器與控制器之間的電氣隔離,保護(hù)智能節(jié)點(diǎn)核心電路安全工作;并實(shí)現(xiàn)了總線上各CAN節(jié)點(diǎn)間的電氣隔離。需要強(qiáng)調(diào)的是:為實(shí)現(xiàn)這種電氣隔離,光耦器件兩側(cè)的直流電源必須是兩個無直接電氣聯(lián)系、相互隔離的直流電源。因而采用兩路DC-DC隔離電源實(shí)現(xiàn)。為進(jìn)一步加強(qiáng)安全性和抗干擾能力,可在總線收發(fā)器TJA1040T與CAN總線間串接限流電阻,避免TJA1040T受過流沖擊。同時,在CANH和CANL,與地之間并聯(lián)了濾波電容,可以起到濾除總線上的高頻干擾,并具備一定的防電磁輻射能力。此外,通信信號在線路上傳輸時,信號傳輸?shù)綄?dǎo)線的端點(diǎn)時會發(fā)生反射,反射信號會干擾正常信號的傳輸。為消除這種影響,可在CAN總線兩端并接匹配電阻,起到匹配總線阻抗和消除反射的雙重作用。若忽略這些措施,會使數(shù)據(jù)通信的抗干擾性和可靠性大大降低,甚至無法通信。

3.2 CAN模塊與ARM9的兩種連接方式

SJA1000T數(shù)據(jù)地址總線復(fù)用,而整個ARM9系列包括ARM920T數(shù)據(jù)和地址總線分開。這就使得它與ARM9系列的連接不能像傳統(tǒng)的用于51單片機(jī)系列方式擴(kuò)展連接,本文給出兩種擴(kuò)展方式 :全部IO口連接方式和最少IO口的數(shù)據(jù)信號線連接方式。

3.2.1 IO接口連接

微處理器的通用IO口可以提供一個簡便的方法來控制SJA100T。EP9315的GPIO信號提供了很大的靈活度來滿足SJA1000T時間上的要求。將SJA1000T數(shù)據(jù)地址復(fù)用總線全部與EP9315的通用IO接口連接。其它信號線WR、RD、ALE……也與IO接口連接。具體連接方式參考圖2。

3.2.2 數(shù)據(jù)信號線連接

除了全部由IO端口來控制CAN模塊,還可利用ARM9的數(shù)據(jù)線和信號線來實(shí)現(xiàn)CAN模塊的擴(kuò)展。連接電路如圖3所示,凡SJA1000T以外的信號均為EP9315芯片上的信號管腳,SJA1000T數(shù)據(jù)地址復(fù)用總線與EP9315數(shù)據(jù)線相連,GPIOx、GPIOy、GPIOz可以是EP9315任意GPIO引腳,但選擇同一個通道的GPIO口將使編程更容易。注意SJA100T的INT可以連接CPU的INT也可以連接到帶有中斷的通用IO上。在EP9315中,GPIO的通道A,B,F(xiàn)有中斷功能。

圖2和圖3是示意圖,具體的由于EP9315信號高電平為3.3V,而SJA1000T高電平為5V,故需要通過74LVC245這類電平匹配芯片進(jìn)行電平匹配后再連接。

4、驅(qū)動開發(fā)

由于現(xiàn)場總線控制系統(tǒng)在許多場合具有實(shí)時性的要求,本現(xiàn)場總線控制系統(tǒng)采用實(shí)時性高的eCos作為操作系統(tǒng),CAN驅(qū)動程序也在eCos操作系統(tǒng) 上進(jìn)行擴(kuò)展。

對eCos系統(tǒng)的設(shè)備驅(qū)動程序的設(shè)計主要圍繞著DEVTAB_ENTRY和DEVIO_TAB進(jìn)行,添加新設(shè)備的工作就是對這兩個表項(xiàng)的各個域進(jìn)行實(shí)現(xiàn),并且編寫與硬件相關(guān)的底層函數(shù)。通過對驅(qū)動程序結(jié)構(gòu)層次的剖析,CAN總線驅(qū)動的開發(fā)分為四步:

第一步:向內(nèi)核注冊新設(shè)備;

第二步:開發(fā)驅(qū)動程序基本IO函數(shù);

第三步:實(shí)現(xiàn)中斷處理函數(shù);

第四步:綁定設(shè)備中斷并進(jìn)行驗(yàn)證。

具體實(shí)現(xiàn)過程如下:

4.1 向內(nèi)核注冊新設(shè)備

在向內(nèi)核注冊新設(shè)備時,原有的驅(qū)動程序中和硬件無關(guān)的部分仍然可以使用,例如設(shè)備I/O函數(shù)表,硬件相關(guān)的部分需要自行設(shè)計,包括設(shè)備描述符、設(shè)備名、設(shè)備初始化程序init、查找程序lookup和拓展CAN總線的數(shù)據(jù)結(jié)構(gòu)。

拓展CAN總線的數(shù)據(jù)結(jié)構(gòu)Can_bus時一組用于描述對設(shè)備進(jìn)行的全部操作的數(shù)據(jù)結(jié)構(gòu)。通過宏Can_bus產(chǎn)生can總線的數(shù)據(jù)結(jié)構(gòu),宏Can_bus的原型為:

Can_bus(1,funs,modereg,intrenreg,bustime,outpctr,clkdiv,acptcode,acptmask,flag)

參數(shù)說明如下:

l-該數(shù)據(jù)結(jié)構(gòu)的語言標(biāo)識符

funs接口函數(shù)組,即硬件接口函數(shù)。

flags驅(qū)動程序初始表示值。

modereg工作模式初始值

intrenreg中斷允許初始值

bustime總線時鐘1,和總線時鐘2初始值

outpctr輸出控制

clkdiv分時

acptcode驗(yàn)收代碼

acptmask驗(yàn)收屏蔽

在產(chǎn)生CAN總線的設(shè)備表入口時首先要創(chuàng)建can總線的數(shù)據(jù)對象Can_bus,并且初始化以上所有參數(shù)。拓展CAN總線的Can_bus數(shù)據(jù)對象標(biāo)識符為EP9315_can_bus。

拓展CAN總線的設(shè)備表入口對象實(shí)現(xiàn)如下:

DEVTAB_ENTRY(EP9315_can_io0,

CYGDAT_IO_CAN_EP9315_CAN0_NAME,

0,

&cyg_io_can_devio,

EP9315_can_init, //拓展CAN的初始化函數(shù)

EP9315_can_lookup, //拓展CAN的查找函數(shù)

&EP9315_can_bus //CAN數(shù)據(jù)結(jié)構(gòu)Can_bus

);

4.2 開發(fā)驅(qū)動程序基本IO函數(shù)

這部分函數(shù)指的是驅(qū)動程序接口函數(shù)中與硬件相關(guān)的部分,也就是Can_bus數(shù)據(jù)結(jié)構(gòu)中的funs接口函數(shù)表。funs函數(shù)表通過以下宏進(jìn)行定義:

CAN_FUNS(l,putc,getc,set_config,start_xmit,stop_xmit)

參數(shù)說明如下:

l是該funs函數(shù)表的C語言標(biāo)實(shí)符。

putc函數(shù):bool (*putc)(can_bus *priv,unsigned char c)該函數(shù)發(fā)送一個字符到串口。如果發(fā)送成功,則返回true,否則返回false。

getc函數(shù):unsigned char (*getc)(can_bus *priv)該函數(shù)從設(shè)備接口讀取一個字符,它只用于非中斷方式,通過查詢設(shè)備是否處于準(zhǔn)備(ready)狀態(tài)來等待一個字符。

set_config函數(shù):bool (*set_config)(can_bus *priv,cyg_can_info_t *config)該函數(shù)用于對指定的端口配置。如果對硬件配置成功,則返回true;如果端口不支持給定的配置參數(shù),則返回false。

start_xmit函數(shù):void (*start_xmit)can_bus *priv)在中斷方式下,該函數(shù)使能發(fā)送端,允許發(fā)送中斷的產(chǎn)生。

stop_xmit函數(shù):void (*stop_xmit)(can_bus *priv)在中斷方式下,當(dāng)數(shù)據(jù)發(fā)送結(jié)束后,該函數(shù)進(jìn)制發(fā)送端,進(jìn)制發(fā)送中斷產(chǎn)生。

start_recv函數(shù):void (*stop_xmit)(can_bus *priv)

stop_recv函數(shù):void (*stop_xmit)(can_bus *priv)

4.3 發(fā)送中斷處理函數(shù)

CAN總線在中斷方式下的負(fù)責(zé)對中斷進(jìn)行處理函數(shù)是中斷服務(wù)程序ISR和中斷滯后服務(wù)程序DSR。對中斷的處理主要有三種模式,第一種模式是在中斷服務(wù)程序ISR內(nèi)完成所有設(shè)備處理工作,第二種是在中斷滯后服務(wù)程序DSR內(nèi)實(shí)現(xiàn),第三中是將對設(shè)備的處理推遲到中斷線程內(nèi)進(jìn)行。在驅(qū)動程序的設(shè)計中采用的是第二種模式。

在這種模式中,中斷處理程序ISR只是簡單的通過對設(shè)備進(jìn)行編程或者直接調(diào)用cyg_drv_interrupt_mask()函數(shù)防止新中斷的產(chǎn)生,然后將調(diào)用DSR作進(jìn)一步的處理。DSR完成大部分的硬件處理工作,并有可能對某個條件變量產(chǎn)生一個信號來喚醒新的中斷。最后,DSR調(diào)用cyg_drv_interrupt_unmask(),重新使能中斷。中斷處理過程如圖所示:

4.4 綁定設(shè)備中斷

設(shè)備驅(qū)動程序的初始化函數(shù)在系統(tǒng)初始化過程或者設(shè)備初始使用時被調(diào)用,初始化函數(shù)不僅要設(shè)置設(shè)備的參數(shù),還要為設(shè)備分配相應(yīng)的數(shù)據(jù)結(jié)構(gòu):例如輸入輸出緩沖區(qū)等,最后還將設(shè)備中斷進(jìn)行綁定。

每一個設(shè)備在初始化時會產(chǎn)生一個對應(yīng)的中斷對象,所有的中斷對象存儲在系統(tǒng)的中斷向量鏈表中。當(dāng)某個中斷發(fā)生時,系統(tǒng)根據(jù)中斷碼到中斷向量鏈表中尋找相應(yīng)的中斷對象,再跳轉(zhuǎn)到中斷對象記錄的中斷處理程序的位置執(zhí)行。

宏cyg_drv_interrupt_create(vector,priority,data,isr,dsr,handle,intr)用于產(chǎn)生設(shè)備的中斷對象。其中,vector是中斷向量,priority中斷優(yōu)先級,data是數(shù)據(jù)指針,isr是中斷處理程序ISR的地址,dsr是中斷滯后處理程序DSR的地址,handle是返回句柄,intr是中斷對象存放的位置。

宏cyg_drv_interrupt_attach(interrupt)用于將中斷向量加入到中斷向量鏈表。參數(shù)interrupt是將要連接的中斷的句柄。

設(shè)備中斷綁定后,當(dāng)設(shè)備產(chǎn)生中斷時系統(tǒng)會找到相應(yīng)的中斷向量,然后把控制權(quán)交給中斷處理程序,進(jìn)行中斷的處理。

5、兩種擴(kuò)展方式比較

對于兩種不同的CAN與ARM9連接方式,IO口連接直觀簡單;而利用數(shù)據(jù)信號線連接能節(jié)省IO口,給CPU更多開發(fā)空間。兩者在驅(qū)動程序上差異不大,主要體現(xiàn)在底層數(shù)據(jù)讀寫時序?qū)崿F(xiàn)上。前者簡單易于編寫和理解,后者只是在對時序的理解上略有難度,并不會使代碼更加冗長。

6、結(jié)束語

本文通過在現(xiàn)場總線控制系統(tǒng)上擴(kuò)展CAN總線模塊,詳細(xì)講解了如何在ARM9上擴(kuò)展CAN總線模塊,給出了全I(xiàn)O口擴(kuò)展和利用數(shù)據(jù)信號線擴(kuò)展兩種方式;并詳細(xì)說明如何在高實(shí)時性操作系統(tǒng)eCos上開發(fā)CAN驅(qū)動程序;最后對兩種擴(kuò)展方式做了簡單的比較。該現(xiàn)場總線控制系統(tǒng)在國家十一五某國防項(xiàng)目中得到了很好的應(yīng)用。同時也為大中型國有企業(yè)自動化生產(chǎn)線的建設(shè)和改造,電力系統(tǒng)自動化的實(shí)現(xiàn)提供很好的借鑒。

參考文獻(xiàn)

[1] 史久根等. CAN現(xiàn)場總線系統(tǒng)設(shè)計技術(shù)[M]. 北京:國防工業(yè)出版社,2004.

[2] 鄔寬明. CAN總線原理和應(yīng)用系統(tǒng)設(shè)計[M]. 北京:北京航空航天大學(xué)出版社,1995.

[3] 王京起等. 嵌入是可配置實(shí)時操作系統(tǒng)eCos技術(shù)及實(shí)現(xiàn)機(jī)制[M] . 北京:電子工業(yè)出版社,2005.

[4] 張紹忠,王輝. 基于SJA1000CAN總線智能節(jié)點(diǎn)實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2006(8):22-25.

[5] 王松月,楊福興. 基于ARM920T嵌人式通信控制系統(tǒng)設(shè)備驅(qū)動開發(fā)[J].電力自動化設(shè)備, 2006.26(6):75-78.WANG Song-yue, YANG Fu-xing,Driver development for embedded communication control system based on ARM920T[J]. Electric power Automation Equipment,2006,26(6):75-78.

[6] Freund L, Dupont D, Israel M, Rousseau F. Overview of the ECOS project[J]. Rapid System Prototyping, 1997’Shortening the Path from Specification to Prototype’. Proceedings, 8th IEEE International Workshop on 24-26, 1997.6:39-43.

[7] Anthony J. Massa. Embedded Software Development with eCos[J]. PRENTICE HALL, Publishing as Prentice Hall Professional Technical Reference, 2003, 7-10, 315-322.

[8] How to Connect NAND Flash Memory to an EP93xx[J]. http://www.cirrus.com. 2005.2.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉