《電子技術(shù)應用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應用 > 基于ARM開發(fā)板的車輛檢測系統(tǒng)控制單元設(shè)計
基于ARM開發(fā)板的車輛檢測系統(tǒng)控制單元設(shè)計
摘要: 本文介紹了利用ARM7內(nèi)核微處理器LPC2114設(shè)計的高速公路車輛檢測系統(tǒng)控制單元,,著重分析了大容量Flash存儲單元的設(shè)計和ARM開發(fā)相關(guān)注意事項,,給出了系統(tǒng)原理框圖,、單元電路設(shè)計和軟件設(shè)計思想。
關(guān)鍵詞: ARM LPC2114 車輛檢測
Abstract:
Key words :

引言

由于交通需求的不斷增加,,有越來越多的環(huán)形感應線圈檢測器用于交通檢測,。這些埋設(shè)在道路表面下的線圈可以檢測到車輛通過時的電磁變化進而精確地算出交通流量。交通流量是交通統(tǒng)計和交通規(guī)劃的基本數(shù)據(jù),,通過這些檢測結(jié)果可以用來計算占用率(表征交通密度),,在使用雙線圈模式時還可以提供速度、車輛行駛方向,、車型分類等數(shù)據(jù),,這些數(shù)據(jù)對于交通管理和統(tǒng)計是極為重要的。通常高速公路車輛檢測系統(tǒng)由多通道環(huán)形檢測單元LD4和控制單元CCU組成,,本文采用PHILIPS公司最新推出的ARM7內(nèi)核微處理器LPC2114設(shè)計實現(xiàn)了車輛檢測系統(tǒng)控制單元部分,,并且和5個LD4環(huán)形檢測器一起構(gòu)成10通道高速公路車輛檢測系統(tǒng),。

11.gif

LPC2114和電子硬盤連線示意圖

22.gif

主程序流程圖

總體方案設(shè)計

本文設(shè)計的控制板系統(tǒng)原理框圖如圖2所示,以LPC2114為核心控制單元,,該芯片是一種支持實時仿真和跟蹤的16/32位基于ARM7TDMI-S 內(nèi)核的CPU,。內(nèi)部集成了4路10 位A/D轉(zhuǎn)換器,兩個32位定時器,、一個實時時鐘和看門狗,,多個串行接口,包括兩個工業(yè)標準的UART,、高速和兩個SPI總線接口,,外部多達46個與TTL電平兼容的通用I/O口,非常適用于作為主控單元,。CPLD EPM7128作為微處理器的擴展輸入/輸出,,通過光電耦合和LD4標準定義總線相連,該標準定義的總線基于RS-485總線通信協(xié)議,。LD4和控制板通過標準總線進行數(shù)據(jù)交換,,控制板每隔10秒掃描并發(fā)送一次請求數(shù)據(jù)的命令,相應LD4通道返回請求數(shù)據(jù)或者無效信息,,ARM處理器對獲得的各通道數(shù)據(jù)進行相應的統(tǒng)計運算處理,。每隔用戶設(shè)定的間隔時間就將統(tǒng)計數(shù)據(jù)存儲于靜態(tài)RAM,供中心站定時獲取,,同時,,以分鐘為單位將統(tǒng)計的數(shù)據(jù)備份至Flash電子硬盤中。中心站可以通過請求備份數(shù)據(jù)命令獲取相應時間段的數(shù)據(jù),,并存入數(shù)據(jù)庫。中心站和控制板采用RS-232串口方式通信,,利用調(diào)制解調(diào)器實現(xiàn)遠程數(shù)據(jù)傳輸,。為了解決大容量存儲問題,系統(tǒng)使用了三星公司提供的K9F2808來作為電子硬盤,,16MB的容量能夠存儲11天備份數(shù)據(jù),,并且該電子硬盤能夠靈活升級。

LPC2114與電子硬盤的接口實現(xiàn)

為了防止傳輸及中心站故障等問題而導致數(shù)據(jù)丟失,,系統(tǒng)要求對一段時間內(nèi)的數(shù)據(jù)進行備份,,因此在系統(tǒng)設(shè)計的過程中需要考慮大容量存儲問題。

設(shè)定本系統(tǒng)每分鐘需要備份一次統(tǒng)計數(shù)據(jù),,根據(jù)環(huán)形檢測器LD4的數(shù)據(jù)格式,,一次數(shù)據(jù)量為1026B,若采用靜態(tài)RAM作為存儲單元,,需要多片大容量RAM級聯(lián)使用,,價格昂貴,,且存儲容量擴展困難。若使用動態(tài)RAM作為存儲單元,,缺點在于控制困難,,需要動態(tài)RAM控制器輔助操作。Flash作為存儲器使用簡單,,容量大,,盡管使用壽命有限,考慮到系統(tǒng)每1分鐘存儲1026B,,就16MB容量而言,,11天左右寫滿一次,那么一個月擦寫約3次,,以此計算,,一年擦寫約36次,而Flash壽命一般為擦寫10萬余次,,所以本系統(tǒng)完全可以采用Flash作為電子硬盤用在車輛檢測系統(tǒng)中,。另外,F(xiàn)lash還具有掉電非易失特性,,更適合應用于本系統(tǒng),。

為了便于存儲容量的升級擴展,本系統(tǒng)選用K9F2808作為存儲器,。K9F2808為48腳表面封裝器件,,芯片內(nèi)部有(16M+512K)×8 bit的存儲空間,可組成32768行,,528列,,其中后備的16列的列地址編碼為513~527,可進行528字節(jié)為一頁的讀,、寫和32頁為一塊的擦除操作,。此外,K9F2808的特點還在于其命令,、地址和數(shù)據(jù)信息均通過8條I/O總線傳輸,,接口標準統(tǒng)一,易于存儲容量升級,。

LPC2114和Flash電子硬盤之間的連線如示意圖,,由于LPC2114沒有外部總線,所以對Flash操作只能采用I/O操作方式,。K9F2808各種操作具有共同特點,,即在I/O端口首先發(fā)送操作命令字到命令寄存器,其后的連續(xù)3個周期發(fā)送需要操作單元的地址,,順序為:A0~A7,,A9~A16,,A17~A23,其中A8由命令字確定,。

下面以頁編程操作為例,,給出K9F2808的ARM驅(qū)動程序(基于ADS1.2開發(fā)環(huán)境),而頁讀以及塊擦除等方法與頁編程類似,,只是讀是由#RE信號來鎖存數(shù)據(jù),,而擦除時只須送兩個周期的地址。

row_add為頁號,,需要左移9位得到行地址,。erase_flash( )――擦除Flash函數(shù)

write_command( )――寫命令函數(shù)

write_address( )――寫地址函數(shù)

write_data( )――寫數(shù)據(jù)函數(shù)

read_data( )――讀數(shù)據(jù)函數(shù)

void flash_store(uint32 row_add, uint8 *buffer )

{ uint16 i;

uint32 statue,address;

//變量定義

IO0DIR |= 0x00ff0000;

//設(shè)定IO方向

if((row_add== 0)|| ((row_add%32)==0))

{address = row_add<<9;

address &= 0x00fffe00;

erase_flash(address);}

//擦除Flash

write_command(0x80);

//寫命令80H

address = row_add<<9;

address &= 0x00fffe00;

write_address(address);

//寫地址

statue = IO0PIN;

//獲取狀態(tài)

while((statue&fr_b)==0)

{statue = IO0PIN;}

//忙,等待

for(i=0;i<528;i++)

//寫528字節(jié)

{write_data(*(buffer+i));}

//寫入數(shù)據(jù)

write_command(0x10);

//寫命令10H

statue = IO0PIN;

//獲取狀態(tài)

while((statue&fr_b)==0)

{statue = IO0PIN;}

//忙,,等待

write_command(0x70);

//寫命令70H

statue = read_data();

//獲取狀態(tài)

if(statue&0x01)

{IO0SET |= errorled;}

//操作失敗

}

LPC2114串口通信實現(xiàn)

控制系統(tǒng)通過LPC2114的兩個UART實現(xiàn)和LD4以及中心站的數(shù)據(jù)交換,,兩個UART具備觸發(fā)點可調(diào)的16B收發(fā)FIFO。其中,,UART1比UART0增加了調(diào)制解調(diào)器接口,。UART的基本操作方法和傳統(tǒng)51內(nèi)核單片機相似。

首先,,設(shè)置I/O連接到UART;然后設(shè)置串口波特率(如U0DLM,、U0DLL);接著設(shè)置串口工作模式(如U0LCR、U0FCR);這時就可以通過寄存器U0THR和U0RBR發(fā)送/接收數(shù)據(jù)了,,發(fā)送/接收模塊的狀態(tài)信息可以通過U0LSR寄存器讀取,。

系統(tǒng)通過RS-485總線和LD4板卡通信,采用MAX3485作為RS-485總線控制器和LPC2114的UART1通信,。MAX3485是3.3V供電的半雙工收發(fā)芯片,,將差分RS-485總線信號轉(zhuǎn)換成ARM核能夠接受的串口信號。為了實現(xiàn)和PC機通信,,系統(tǒng)采用3.3V工作電壓的MAX3232作為RS-232電平轉(zhuǎn)換芯片,。

LPC2114設(shè)計注意事項

LPC2114在開發(fā)的過程中有一些需要特殊注意的問題,總結(jié)如下:

(1)當用戶程序?qū)懭隖lash后不能運行時,,首先,需要考慮中斷向量表是否正確,,中斷向量表累加和必須為0,。其次,需要考慮向量表的定位,,向量表是否已經(jīng)定位在0x00000000地址,。然后,需要考慮MEMMAP寄存器的設(shè)置是否正確,,否則中斷無法執(zhí)行,。此外,,還需要考慮ISP硬件條件是否滿足,LPC2114的P0.14腳在#RESET為低時,,該引腳線上的低電平將強制芯片進入ISP狀態(tài),,硬件設(shè)計時必須在該引腳加10KW上拉電阻,否則,,該引腳不穩(wěn)定,,對設(shè)備啟動將會有影響。

(2)LPC2114共有46個GPIO,,這些I/O可以任意配置,,但是個別引腳開漏輸出(P0.2、P0.3),,需加上拉電阻,。另外,F(xiàn)lash存儲器K9F2808狀態(tài)輸出引腳R/#B開漏輸出,,需加10KW的上拉電阻,。

(3)LPC2114芯片加密后,只能通過ISP對芯片全局擦除后才能恢復JTAG調(diào)試以及下載等功能,。當#RESET為低時,,P1.26的低電平使P1.26~P1.31復位后作為調(diào)試端口,注意在P1.26引腳和地之間需接一個弱偏置電阻,。

系統(tǒng)軟件設(shè)計思想及注意事項

車輛檢測系統(tǒng)ARM軟件采用分層設(shè)計思想,,整個軟件由驅(qū)動程序和應用軟件兩部分構(gòu)成。驅(qū)動程序部分封裝了Flash操作,、RS-485操作,、實時時鐘(RTC)操作、RS-232操作和I/O等操作,。應用軟件分成基本函數(shù)庫和主程序,。

在32位ARM核應用系統(tǒng)中,為了進行系統(tǒng)初始化,,往往采用一個匯編文件作為啟動代碼,,來實現(xiàn)堆棧、中斷,、系統(tǒng)變量,、I/O初始化以及地址重映射等操作。開發(fā)平臺ADS的策略是不提供完整的啟動代碼,,不足部分需要開發(fā)人員自己編寫,。

系統(tǒng)設(shè)計的啟動代碼包含中斷向量表、堆棧初始化以及相應的中斷服務程序與C語言的接口。對LPC2114而言,,為了使向量表中所有數(shù)據(jù)32位累加和為0 ,,向量表中設(shè)置保留向量值,將中斷向量表中的32個字節(jié)數(shù)累加,,其中,,保留向量值不用累加,然后取累加值的補碼,,這個補碼的低32位就是保留向量的值,。該保留向量值將被BOOT裝載程序用作有效的用戶程序關(guān)鍵字。當向量表中所有數(shù)據(jù)累加和為0時,,且ISP外部硬件條件不滿足時,,BOOT裝載程序?qū)?zhí)行用戶程序。

結(jié)語

本文基于PHILIPS公司最新的ARM7內(nèi)核微處理器LPC2114實現(xiàn)了高速公路車輛檢測系統(tǒng)的控制單元部分的設(shè)計,。LPC2114使用簡單,、開發(fā)容易、具有較高的性價比,,非常適用于嵌入式系統(tǒng)中,。目前本系統(tǒng)已經(jīng)推向市場,并取得了較好經(jīng)濟效益,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。