新聞中心

        EEPW首頁 > 汽車電子 > 設計應用 > 基于ARM開發板的車輛檢測系統控制單元設計

        基于ARM開發板的車輛檢測系統控制單元設計

        作者: 時間:2012-08-01 來源:網絡 收藏

        摘 要:本文介紹了利用7內核微處理器LPC2114設計的高速公路系統控制單元,著重分析了大容量Flash存儲單元的設計和開發相關注意事項,給出了系統原理框圖、單元電路設計和軟件設計思想。

        本文引用地址:http://www.104case.com/article/196599.htm

        引言

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

        11.gif

        LPC2114和電子硬盤連線示意圖

        22.gif

        主程序流程圖

        總體方案設計

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

        LPC2114與電子硬盤的接口實現

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

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

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

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

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

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

        write_command( )DD寫命令函數

        write_address( )DD寫地址函數

        write_data( )DD寫數據函數

        read_data( )DD讀數據函數

        void flash_store(uint32 row_add, uint8 *buffer )

        { uint16 i;

        uint32 statue,address;

        //變量定義

        IO0DIR |= 0x00ff0000;

        //設定IO方向

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

        {address = row_add9;

        address = 0x00fffe00;

        erase_flash(address);}

        //擦除Flash

        write_command(0x80);

        //寫命令80H

        address = row_add9;

        address = 0x00fffe00;

        write_address(address);

        //寫地址

        statue = IO0PIN;

        //獲取狀態

        while((statuefr_b)==0)

        {statue = IO0PIN;}

        //忙,等待

        for(i=0;i528;i++)

        //寫528字節

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

        //寫入數據

        write_command(0x10);

        //寫命令10H

        statue = IO0PIN;

        //獲取狀態

        while((statuefr_b)==0)

        {statue = IO0PIN;}

        //忙,等待

        write_command(0x70);

        //寫命令70H

        statue = read_data();

        //獲取狀態


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 金华市| 临潭县| 乌恰县| 霍邱县| 东丽区| 乌兰察布市| 页游| 丹江口市| 通城县| 龙州县| 九江县| 高要市| 洱源县| 扶风县| 闽清县| 昌吉市| 九江县| 托里县| 花垣县| 天镇县| 祁门县| 林周县| 阳泉市| 江西省| 河源市| 宜宾县| 米泉市| 湖州市| 林芝县| 高尔夫| 财经| 满洲里市| 宝应县| 宜丰县| 五寨县| 泾阳县| 邵武市| 七台河市| 中超| 三门峡市| 高邮市|