基于ARM的車輛檢測系統控制單元電路設計
//擦除Flash
write_command(0x80);
//寫命令80H
address = row_add<<9;
address = 0x00fffe00;
write_address(address);
//寫地址
statue = IO0PIN;
//獲取狀態
while((statuefr_b)==0)
{statue = IO0PIN;}
//忙,等待
for(i=0;i<528;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();
//獲取狀態
if(statue0x01)
{IO0SET = errorled;}
//操作失敗
}
LPC2114串口通信實現
控制系統通過LPC2114的兩個UART實現和LD4以及中心站的數據交換,兩個UART具備觸發點可調的16B收發FIFO。其中,UART1比UART0增加了調制解調器接口。UART的基本操作方法和傳統51內核單片機相似。
首先,設置I/O連接到UART;然后設置串口波特率(如U0DLM、U0DLL);接著設置串口工作模式(如U0LCR、U0FCR);這時就可以通過寄存器U0THR和U0RBR發送/接收數據了,發送/接收模塊的狀態信息可以通過U0LSR寄存器讀取。
系統通過RS-485總線和LD4板卡通信,采用MAX3485作為RS-485總線控制器和LPC2114的UART1通信。MAX3485是3.3V供電的半雙工收發芯片,將差分RS-485總線信號轉換成ARM核能夠接受的串口信號。為了實現和PC機通信,系統采用3.3V工作電壓的MAX3232作為RS-232電平轉換芯片。
LPC2114設計注意事項
LPC2114在開發的過程中有一些需要特殊注意的問題,總結如下:
(1)當用戶程序寫入Flash后不能運行時,首先,需要考慮中斷向量表是否正確,中斷向量表累加和必須為0。其次,需要考慮向量表的定位,向量表是否已經定位在0x00000000地址。然后,需要考慮MEMMAP寄存器的設置是否正確,否則中斷無法執行。此外,還需要考慮ISP硬件條件是否滿足,LPC2114的P0.14腳在#RESET為低時,該引腳線上的低電平將強制芯片進入ISP狀態,硬件設計時必須在該引腳加10KW上拉電阻,否則,該引腳不穩定,對設備啟動將會有影響。
(2)LPC2114共有46個GPIO,這些I/O可以任意配置,但是個別引腳開漏輸出(P0.2、P0.3),需加上拉電阻。另外,Flash存儲器K9F2808狀態輸出引腳R/#B開漏輸出,需加10KW的上拉電阻。
(3)LPC2114芯片加密后,只能通過ISP對芯片全局擦除后才能恢復JTAG調試以及下載等功能。當#RESET為低時,P1.26的低電平使P1.26"P1.31復位后作為調試端口,注意在P1.26引腳和地之間需接一個弱偏置電阻。
系統軟件設計思想及注意事項
車輛檢測系統ARM軟件采用分層設計思想,整個軟件由驅動程序和應用軟件兩部分構成。驅動程序部分封裝了Flash操作、RS-485操作、實時時鐘(RTC)操作、RS-232操作和I/O等操作。應用軟件分成基本函數庫和主程序。其中,主程序流程如圖4所示。
圖4 主程序流程圖
評論