新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ATMEGA128的CAN-GPRS網(wǎng)關(guān)設(shè)

基于ATMEGA128的CAN-GPRS網(wǎng)關(guān)設(shè)

作者: 時(shí)間:2012-01-07 來(lái)源:網(wǎng)絡(luò) 收藏

1. 引言

(Controller Area Network)即控制器局域網(wǎng),屬于工業(yè)現(xiàn)場(chǎng)總線的范疇。總線與一般的通信總線相比,數(shù)據(jù)通信具有突出的可靠性、實(shí)時(shí)性和靈活性,其應(yīng)用范圍已擴(kuò)展到自動(dòng)控制、航空航天、機(jī)械工業(yè)及傳感器等領(lǐng)域。

(General Packet Radio Service)是通用分組無(wú)線業(yè)務(wù)的簡(jiǎn)稱。相對(duì)原來(lái)GSM的撥號(hào)方式的電路交換數(shù)據(jù)傳送方式,它是一種基于第二代移動(dòng)通信系統(tǒng)GSM的無(wú)線分組交換技術(shù),提供端到端的、廣域的無(wú)線IP連接。具有“實(shí)時(shí)在線”、“按量計(jì)費(fèi)”、“快捷登錄”、“高速傳輸”的優(yōu)點(diǎn)。www.51kaifa.com

隨著移動(dòng)通信技術(shù)的成熟,通過(guò)-將CAN現(xiàn)場(chǎng)設(shè)備網(wǎng)和遠(yuǎn)程技術(shù)控制中心聯(lián)系起來(lái),使遠(yuǎn)程技術(shù)控制中心具備了對(duì)CAN現(xiàn)場(chǎng)設(shè)備網(wǎng)的即時(shí)反應(yīng)、遠(yuǎn)程監(jiān)測(cè)以及遠(yuǎn)程診斷的能力。

2. CAN-GPRS硬件電路設(shè)計(jì)

2.1 系統(tǒng)硬件結(jié)構(gòu)框圖

圖 1 CAN-GPRS原理框圖

CAN-GPRS網(wǎng)關(guān)由CAN收發(fā)器、CAN控制器、微控制器、RS-232接口、GPRS模塊組成。原理如圖1所示。微控制器對(duì)CAN和RS-232接口的數(shù)據(jù)進(jìn)行處理與轉(zhuǎn)發(fā)實(shí)現(xiàn)網(wǎng)關(guān)的功能。

在本文的應(yīng)用中,CAN現(xiàn)場(chǎng)設(shè)備網(wǎng)包括CAN主控器和CAN設(shè)備,網(wǎng)絡(luò)通信包含三種數(shù)據(jù),CAN主控器發(fā)送的命令數(shù)據(jù),CAN設(shè)備發(fā)送的設(shè)備數(shù)據(jù)和心跳數(shù)據(jù)。CAN-GPRS網(wǎng)關(guān)對(duì)CAN現(xiàn)場(chǎng)設(shè)備網(wǎng)的數(shù)據(jù)進(jìn)行監(jiān)聽(tīng),對(duì)CAN設(shè)備發(fā)往CAN主控器的心跳數(shù)據(jù)和CAN主控器發(fā)往CAN設(shè)備的命令數(shù)據(jù)進(jìn)行過(guò)濾,而只讓CAN設(shè)備發(fā)送的設(shè)備數(shù)據(jù)通過(guò)GPRS網(wǎng)絡(luò)傳輸至遠(yuǎn)程技術(shù)控制中心。遠(yuǎn)程技術(shù)控制中心則通過(guò)GPRS網(wǎng)絡(luò)將命令數(shù)據(jù)轉(zhuǎn)發(fā)至CAN現(xiàn)場(chǎng)設(shè)備網(wǎng)。www.51kaifa.com

2.2 系統(tǒng)硬件電路設(shè)計(jì)

本文采用作為系統(tǒng)微控制器,ATmega128為基于AVR RISC結(jié)構(gòu)的8位低功耗CMOS微控制器,具有128K字節(jié)的系統(tǒng)內(nèi)可編程Flash,4K字節(jié)的內(nèi)部SRAM,4K字節(jié)的內(nèi)部EEPROM,使得系統(tǒng)無(wú)需外擴(kuò)ROM和RAM即可實(shí)現(xiàn)網(wǎng)關(guān)的功能。CAN控制器采用應(yīng)用非常廣泛的PHILIPS半導(dǎo)體的獨(dú)立CAN控制器SJA1000。CAN收發(fā)器采用 PHILIPS的TJA1040,在功能上TJA1040是PCA82C250/251高速CAN收發(fā)器的后繼產(chǎn)品。與SJA1000 以外部總線方式連接。SJA1000的8位數(shù)據(jù)/地址復(fù)用總線、控制總線分別與的數(shù)據(jù)/地址復(fù)用總線、控制總線連接;ATMEGA128高8位地址總線的A8位經(jīng)74F04反向后連接至SJA1000的片選引腳;SJA1000的中斷輸出引腳是開(kāi)漏輸出,通過(guò)上拉電阻連接至ATMEGA128的INT0引腳。ATMEGA128與SJA1000接口電路圖如下圖所示:www.51kaifa.com

ETPro++ GPRS模塊是一款內(nèi)嵌TCP/IP協(xié)議的GPRS Modem,通常適用于不具備TCP/IP協(xié)議棧的單片機(jī)系統(tǒng)。ETPro++ GPRS模塊的硬件接口為RS-232接口。ATMEGA128的UART0經(jīng)MAXIM3232電平轉(zhuǎn)換后與ETPro++ GPRS模塊的RS-232接口連接。具體接口電路圖如下圖所示:www.51kaifa.com

圖3 ATMEGA128與MAX3232接口電路圖

3. CAN-GPRS網(wǎng)關(guān)軟件程序設(shè)計(jì)

3.1 引入μC/OS-II實(shí)時(shí)操作系統(tǒng)

CAN-GPRS網(wǎng)關(guān)對(duì)系統(tǒng)的實(shí)時(shí)性和可靠性要求較高,在系統(tǒng)中嵌入μC/OS-II將增強(qiáng)系統(tǒng)的實(shí)時(shí)性和可靠性。采用 μC/OS-II 實(shí)時(shí)操作系統(tǒng)簡(jiǎn)化了設(shè)計(jì)過(guò)程,把應(yīng)用程序代碼分割成單獨(dú)的任務(wù),所有時(shí)間占重要地位的事件可以盡可能快和有效的得到處理。系統(tǒng)包括初始化和任務(wù)兩大部分。系統(tǒng)初始化又包括微控制器初始化、CAN初始化、GPRS模塊初始化。任務(wù)包含CAN接收數(shù)據(jù)處理、GPRS接收數(shù)據(jù)處理兩個(gè)任務(wù)。

3.2 CAN的初始化

由于需要監(jiān)聽(tīng)CAN現(xiàn)場(chǎng)設(shè)備網(wǎng)所有節(jié)點(diǎn)發(fā)送的數(shù)據(jù),所以對(duì)SJA1000的驗(yàn)收屏蔽寄存器(AMR)所有位置位以保證可以接收總線上的所有數(shù)據(jù)。下面給出這部分的源代碼:

INT8U SJA1000Init(void) www.51kaifa.com

{

if( SJA1000_CREATE_COMMUNATION() )

return FALSE; //SJA1000接口出錯(cuò),返回

if( SJA1000_ENTER_RETMODEL() )

return FALSE; //SJA1000進(jìn)入復(fù)位模式出錯(cuò),返回

SJA1000_SET_OUTCLK(0xaa,0xc8); //Pelican 模式

SJA1000_SET_BANDRATE(ByteRate_125k); //設(shè)置波特率為125Kbps

SJA1000_SET_OBJECT(0,0xff); //設(shè)置驗(yàn)收代碼寄存器、驗(yàn)收屏蔽寄存器

SJA1000_SET_MOD(); //單濾波器模式

if( BCAN_QUIT_RETMODEL() )

return FALSE; //SJA1000退出復(fù)位模式出錯(cuò),返回

SJA1000_BCANAdr = (INT8U *)REG_IER; //訪問(wèn)中斷使能寄存器

*SJA1000_BCANAdr = 0xFD; //使能接收中斷

return (0);

}

3.3 GPRS模塊的初始化

ETPro++ GPRS模塊有兩種工作模式,一種是命令模式,一種是SerialNET模式。在命令模式下的通信,期間需要用命令進(jìn)行干預(yù)。而在SerialNET模式下一旦配置好該模式的參數(shù),進(jìn)入該模式后,就可以直接按設(shè)定的參數(shù)進(jìn)行數(shù)據(jù)傳輸,而無(wú)需再進(jìn)行干預(yù)了。www.51kaifa.com

在本設(shè)計(jì)中采用的是SerialNET模式。GPRS模塊的初始化首先通過(guò)UART0發(fā)送三個(gè)’+’退出在線模式,之后大約等待15秒左右,收到I/ERROR (056)CR>之后即可以向模塊發(fā)送命令。發(fā)送AT+IUPCR>命令上線并建立一個(gè)PPP Internet連接開(kāi)始Internet會(huì)話,收到I/ONLINECR>后即成功上線。再發(fā)送AT+I!SNMDCR> 激活SerialNET長(zhǎng)連接模式,收到I/DONECR>即進(jìn)入serialNET模式,此時(shí)則可進(jìn)行數(shù)據(jù)傳輸。(源代碼略)

3.4 CAN接收數(shù)據(jù)處理任務(wù)

CAN數(shù)據(jù)的接收與處理通過(guò)外部中斷0來(lái)實(shí)現(xiàn),當(dāng)數(shù)據(jù)接收完成時(shí)產(chǎn)生中斷,在中斷程序中發(fā)送CAN信號(hào)量通知CAN接收數(shù)據(jù)處理任務(wù)對(duì)收到的數(shù)據(jù)進(jìn)行處理。其流程圖如下(源代碼略):

圖4 CAN接收數(shù)據(jù)處理任務(wù)流程圖

3.5 GPRS接收數(shù)據(jù)處理任務(wù)

GPRS數(shù)據(jù)的接收與處理通過(guò)UART0接收中斷來(lái)實(shí)現(xiàn),在UART0接收中斷程序中發(fā)送UART0信號(hào)量通知GPRS接收數(shù)據(jù)處理任務(wù)對(duì)收到的數(shù)據(jù)進(jìn)行處理。不同的是通過(guò)UART0將數(shù)據(jù)轉(zhuǎn)發(fā)到CAN接口上,就不再贅述。

4. 結(jié)束語(yǔ)

本文設(shè)計(jì)的CAN-GPRS網(wǎng)關(guān)電路簡(jiǎn)單可靠, 使用方便。現(xiàn)已應(yīng)用于某工程當(dāng)中,實(shí)際運(yùn)行狀況良好,數(shù)據(jù)傳輸穩(wěn)定可靠,很好的達(dá)到了預(yù)期設(shè)計(jì)的效果。

本文作者創(chuàng)新點(diǎn):采用GPRS模塊將CAN現(xiàn)場(chǎng)設(shè)備網(wǎng)通過(guò)GPRS與遠(yuǎn)程技術(shù)控制中心聯(lián)系起來(lái),實(shí)現(xiàn)了遠(yuǎn)程技術(shù)控制中心對(duì)CAN現(xiàn)場(chǎng)設(shè)備網(wǎng)的即時(shí)反應(yīng)、遠(yuǎn)程監(jiān)測(cè)以及遠(yuǎn)程診斷。

參考文獻(xiàn):

[1] 陳嘯吶,賀前華,蘇勇.基于LPC2119的RS485-CAN總線轉(zhuǎn)換器設(shè)計(jì)[J].微計(jì)算機(jī)信息,2006,5-2:20-22

[2] 饒運(yùn)濤,鄒繼軍,鄭勇蕓.現(xiàn)場(chǎng)總線CAN 原理與應(yīng)用技術(shù)[M].北京航空航天大學(xué)出版社, 2003

[3] Labrosses Jean J, 袁勤勇等譯.嵌入式系統(tǒng)構(gòu)件[M].機(jī)械工業(yè)出版社, 2002www.51kaifa.com

[4] Labrosses Jean J, 邵貝貝等譯.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS II[M].北京航空航天大學(xué)出版社,2003

[5] 耿德根,宋建國(guó),馬潮,葉勇建.AVR高速嵌入式單片機(jī)原理與應(yīng)用[M].北京航空航天大學(xué)出版社, 2001



關(guān)鍵詞: ATMEGA128 CAN GPRS 網(wǎng)關(guān)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉