基于ARM及CAN總線的汽車行駛記錄儀的開發(fā)
打印輸出電路
微型打印機(jī)M-1926有串口和并口兩種接口,系統(tǒng)采用其串口功能,與LPC2292的DART1接口連接,實(shí)現(xiàn)對(duì)微機(jī)的控制輸出。
汽車行駛記錄儀的軟件設(shè)計(jì)
本系統(tǒng)軟件部分的設(shè)計(jì)都是在ADS開發(fā)環(huán)境下進(jìn)行的,并通過JTAG仿真器進(jìn)行軟件調(diào)試。ADS(ARM Developer Suite)集成開發(fā)環(huán)境是ARM公司推出的ARM核處理器集成開發(fā)工具。JTAG(Joint Test Action Group)是一種通過ARM芯片的JTAG邊界掃描口進(jìn)行調(diào)試的仿真設(shè)備,它比在線實(shí)時(shí)仿真器要廉價(jià)簡單,是現(xiàn)在較為流行的一種仿真器。本系統(tǒng)采用的EasyJTAG是廣州周立功單片機(jī)發(fā)展有限公司開發(fā)的LPC2000系列ARM7微控制器的JTAG仿真器。
本系統(tǒng)軟件部分的程序流程圖如圖2所示。軟件部分主要包括以下幾個(gè)模塊:
A/D采樣模塊
LPC2292內(nèi)置有8個(gè)模數(shù)轉(zhuǎn)換器ADC,其控制器只有2個(gè),即ADCR、ADDR。本系統(tǒng)使用3個(gè)ADC分別采集、轉(zhuǎn)換3路模擬信號(hào)。首先將ADC設(shè)置為向量IRQ中斷,為其中斷通道分配一個(gè)優(yōu)先級(jí),并設(shè)置中斷服務(wù)程序地址向量,此后將ADCR的START位置1來啟動(dòng)ADC轉(zhuǎn)換。每當(dāng)ADC完成一次轉(zhuǎn)換,ADDR寄存器(A/D Data Register)的DONE位置1,從而引起中斷,轉(zhuǎn)入中斷處理程序,在該處理程序中從ADDR寄存器的6-15位讀取轉(zhuǎn)換結(jié)果,再將二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)予以保存并顯示。
FLASH數(shù)據(jù)存儲(chǔ)模塊
為了調(diào)用方便,系統(tǒng)軟件部分對(duì)FLASH操作做了函數(shù)封裝,主要有如下兩個(gè)函數(shù)接口:
1、頁寫操作:將一字節(jié)數(shù)據(jù)寫入FLASH的某個(gè)特定地址。當(dāng)命令下發(fā)完之后延時(shí)一段微秒級(jí)的時(shí)間,然后把被寫數(shù)據(jù)所在頁整頁讀出,將被寫數(shù)據(jù)所在地址的數(shù)據(jù)值替換為被寫數(shù)據(jù),其余地址的數(shù)據(jù)值不變,然后整頁寫入FLASH,完成頁寫操作。
2、整片擦除操作:對(duì)FLASH存儲(chǔ)陣列中的內(nèi)容進(jìn)行整片擦除。通過給FLASH下發(fā)特定地址的特定六個(gè)字 節(jié)的命令字來完成FLASH整片擦除操作,數(shù)據(jù)下發(fā)完畢后需要等 待50mS,或等待內(nèi)部toggle/plling操作完成。
RS232串口通信模塊
本系統(tǒng)利用兩個(gè)UART,一個(gè)用于提供主機(jī)與上位機(jī)軟件的通信接口,另一個(gè)用于提供微型打印機(jī)與主機(jī)的連接接口。主機(jī)和上位機(jī)軟件的RS232串口通信協(xié)議如下:通信波特率為15200, 8位數(shù)據(jù)位,1位停止位,無奇偶校驗(yàn)。
軟件為RS232串口通信提供的函數(shù)接口有:
1、串口發(fā)送一個(gè)字節(jié)數(shù)據(jù):將要發(fā)送的數(shù)據(jù)裝載到串口發(fā)送寄存器中,等待串口狀態(tài)字變1,則表示數(shù)據(jù)發(fā)送完畢。
2、串口初始化:根據(jù)串口通信協(xié)議對(duì)波特率、奇偶校驗(yàn)、數(shù)據(jù)位和停止位進(jìn)行設(shè)置。
LCD液晶顯示模塊
主要包括的函數(shù)模塊如下:
1、LCD“忙”檢查:對(duì)LCD操作很重要的部分就是進(jìn)行時(shí)序模擬,而時(shí)序模擬最重要的是LCD“忙”檢查。程序代碼如下:
uint32 rb;I02DIR=LCD_DO_D7; //P2口連接的D0到D7口設(shè)為輸入方式,然后讀取狀態(tài)命令
IO1CLR=LCD_RS;
IO1SET=LCD_RW;
if(rb!=0)
{IO1SET=LCD_E;
rb=(I02PIN0x80000000);
IO1CLR=LCD_E;
}; //忙等待
IO2DIR=LCD_DO_D7;//將LCD數(shù)據(jù)位重新設(shè)為輸出方式
2、向LCD下發(fā)命令:若LCD“不忙”,在LCD的管腳E的下降沿鎖存命令字節(jié)完成命令的發(fā)送。
3、LCD初始化:對(duì)LCD內(nèi)部“忙”操作狀態(tài)進(jìn)行檢查,設(shè)置顯示的起始行,然后開顯示。
4、LCD液晶寫一組漢字:函數(shù)寫漢字的時(shí)候?qū)嶋H上是將漢字字模寫入LCD。
5 、LCD液晶畫圖:LCD畫圖和寫字其實(shí)很類似,將相應(yīng)的字模寫入規(guī)定的LCD屏幕的位置即可。LCD液晶畫圖用于報(bào)警信號(hào)的顯示。
CAN-BUS通信模塊
CAN通信與一般的串口通信類似,在數(shù)據(jù)通信前要對(duì)CAN總線進(jìn)行初始化操作,包括CAN控制器的選擇、數(shù)據(jù)寄存器的設(shè)置以及通信波特率的設(shè)置等。初始化完成后,則需要設(shè)置雙方的通信協(xié)議,建立彼此的連接。只有在同一協(xié)議下工作的雙方才能正確進(jìn)行數(shù)據(jù)的交換。軟件提供的CAN-BUS通信函數(shù)接口包括初始化CAN、CAN總線發(fā)送數(shù)據(jù)以及CAN總線接收數(shù)據(jù)等。
結(jié)束語
該汽車行駛記錄儀結(jié)合了計(jì)算機(jī)技術(shù)、嵌入式技術(shù)以及現(xiàn)場總線技術(shù)等多項(xiàng)先進(jìn)技術(shù),具有高實(shí)時(shí)性、抗干擾能力強(qiáng)、可靠性高、數(shù)據(jù)精度高以及系統(tǒng)擴(kuò)展方便等特點(diǎn),可以在車輛實(shí)時(shí)警告與稽核、公安交警部門的事故處理等方面發(fā)揮一定的作用。(end)
評(píng)論