新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ARM的車輛檢測控制單元設(shè)計

基于ARM的車輛檢測控制單元設(shè)計

作者: 時間:2014-03-16 來源:網(wǎng)絡(luò) 收藏

  由于交通需求的不斷增加,有越來越多的環(huán)形感應(yīng)線圈器用于交通。這些埋設(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)。

本文引用地址:http://www.butianyuan.cn/article/234764.htm

  

 

  LPC2114和電子硬盤連線示意圖

  

 

  主程序流程圖

  總體方案設(shè)計

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

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

  為了防止傳輸及中心站故障等問題而導(dǎo)致數(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還具有掉電非易失特性,更適合應(yīng)用于本系統(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總線傳輸,接口標(biāo)準(zhǔn)統(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

  {statue = IO0PIN;}

  //忙,等待


上一頁 1 2 下一頁

關(guān)鍵詞: ARM 檢測

評論


相關(guān)推薦

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

關(guān)閉