隨著現(xiàn)代電子技術(shù)的發(fā)展,多功能、高精度、高靈敏度、讀數(shù)直觀的電子數(shù)字顯示及圖像顯示的儀表已廣泛應(yīng)用于汽車領(lǐng)域。為了提高汽車的使用性能,汽車的電子控制程度越來越高。電子控制裝置必須能迅速、準確處理各種復(fù)雜的信息,并通過汽車儀表板以數(shù)字、圖形或文字等形式顯示。這就對控制汽車儀表板的微控制器提出了更高的要求。
德國Micronas公司開發(fā)的CDC3207G是一款32位ARM內(nèi)核高性能低功耗的微控制器。這是專門針對汽車儀表板而設(shè)計的微控制器。目前已經(jīng)應(yīng)用于德國大眾,中國東風(fēng)等中高檔汽車。CDC3207G采用ARM7TDMI內(nèi)核,內(nèi)部具有512 K Flash以及32 K SRAM,為了滿足汽車儀表設(shè)計的需要,該微控制器還提供16路10位A/D轉(zhuǎn)換模塊、音頻驅(qū)動模塊、液晶顯示驅(qū)動模塊、7路步進電機驅(qū)動模塊等。而且內(nèi)部集成了CAN通信模塊,可以很方便地與車內(nèi)的其他電子裝置進行通信。
2 硬件設(shè)計
2.1 硬件總體結(jié)構(gòu)圖
整個儀表板使用一個CDC3207G微控制器進行控制。輸入信號可以分為數(shù)字開關(guān)信號和模擬電壓信號兩種類型。對數(shù)字開關(guān)信號,可以根據(jù)其高低電平直接讀取其狀態(tài)。而對模擬信號,如轉(zhuǎn)速,速度等,用微控制器內(nèi)部的lO位精度A/D轉(zhuǎn)換器進行A/D轉(zhuǎn)換,將模擬信號轉(zhuǎn)換為數(shù)字信號。設(shè)計的儀表板用6個步進電機來驅(qū)動6個指針,分別用來顯示轉(zhuǎn)速、發(fā)動機溫度、油量、速度、油壓和電池電壓。左右轉(zhuǎn)向時發(fā)出的提示音和故障報警聲等可以用音頻輸出驅(qū)動一個揚聲器來發(fā)出,除了可以產(chǎn)生簡單的單音警報外,還可產(chǎn)生振幅逐漸衰減的鑼聲信號。在LCD上可以顯示當(dāng)前的檔位、車內(nèi)外的溫度以及一些報警信息和時間等。LED指示燈可以用微控制器的H端口直接驅(qū)動。CAN總線可以與車內(nèi)的其他控制模塊通信。圖1給出儀表板的結(jié)構(gòu)示意圖。
2.2 步進電機模塊
步進電機在汽車儀表領(lǐng)域的應(yīng)用是新一代汽車儀表最顯著的特點??刂破鰿DC3207G內(nèi)部集成了7個步進電機驅(qū)動模塊,每個步進電機模塊通過控制器內(nèi)部連接了H橋的4個高電流輸出端口,直接驅(qū)動兩相步進電機,大大簡化了硬件電路的設(shè)計。通過軟件便可產(chǎn)生步進電機定位需要的各種脈沖。CDC3207G微控制器的步進電機模塊可提供多通道的PWM輸出,輸出信號頻率通過硬件設(shè)置可以選擇,并且不同步進電機模塊輸出信號時序上具有偏移,可以提高電磁兼容性能(EMC)。根據(jù)控制兩相步進電機的需要,CDC3207G內(nèi)部提供了3個8位的寄存器,用于通過軟件產(chǎn)生控制步進電機需要的脈沖信號。其中2個寄存器通過每一模塊中的比較器與模塊計時器比較,用于產(chǎn)生驅(qū)動電機的PWM信號,另外一個寄存器用來選中相應(yīng)步進電機模塊,輸出驅(qū)動信號,以及選擇4個輸出引腳的極性。這樣,通過軟件對3個寄存器的操作就能方便地控制每一路步進電機。此外,CDC3207G還具有零位檢測功能,即檢測電機運轉(zhuǎn)時的感應(yīng)電流,得到電機運行的位置信息,就可以據(jù)此判斷電機是否達到初始位置(即汽車儀表的零位)。圖2給出步進電機驅(qū)動電路。
2.3 音頻控制模塊
CDC3207G音頻模塊的輸出信號可以直接驅(qū)動蜂鳴器或其他音頻設(shè)備,硬件設(shè)計比較簡單。圖3給出音頻模塊驅(qū)動電路。從圖中可知,在微控制器音頻模塊的輸出端口U1.4處直接接人三極管VT5、低通濾波器電路和揚聲器,即可實現(xiàn)整個音頻電路的設(shè)計。音頻模塊用于由脈寬調(diào)制單元(PWM)、3個計數(shù)器和1個累加器組成。該模塊能產(chǎn)生類似于鑼聲的聲音信號,是頻率可調(diào)的方波信號,輸出信號的脈寬由方波信號的脈寬決定,無需CPU就能實現(xiàn)信號振幅的指數(shù)變化。
2.4 LCD顯示模塊
液晶顯示器(LCD)具有微功耗、平板化、無x射線和電磁輻射等優(yōu)點。LCD顯示模塊能以數(shù)字和圖像準確顯示出各個物理量,并增加了一些發(fā)生故障時的文字提示。CDC3207G內(nèi)部集成了一個48x4的筆段式LCD驅(qū)動模塊,可以驅(qū)動4行、48列的LCD顯示模塊。為了能顯示更多的信息,這里選用的是一款128x 64的LCD模塊,在此LCD模塊上集成有驅(qū)動器,所以沒有用到CDC3207內(nèi)部的LCD驅(qū)動器。圖4給出LCD顯示電路,需要連接8根數(shù)據(jù)線,一根讀信號,一根寫信號,一根復(fù)位信號線。
2.5 LED指示燈和報警燈
LED指示燈可以用有較強驅(qū)動能力的H端口進行驅(qū)動,其8個LED指示燈由H端口直接驅(qū)動。但H端口不夠用,所以擴展了一個TD62083,用于驅(qū)動另外8個LED指示燈和報警燈。圖5給出LED指示燈和報警燈電路。
3 軟件設(shè)計
考慮到汽車儀表板對實時性的要求,應(yīng)用了μC/OS—II操作系統(tǒng)開發(fā)軟件。μC/OS—II是一個具備現(xiàn)代操作系統(tǒng)特點的RTOS,同時它結(jié)構(gòu)清晰,注解詳盡,具有良好的可擴展性和可移植性,廣泛地應(yīng)用于各種架構(gòu)的微處理器。μC/OS—II的系統(tǒng)組成包含任務(wù)調(diào)度,任務(wù)管理,時間管理和任務(wù)間的通信等基本功能。這里僅對μC/OS—II的啟動程序和任務(wù)的分配作簡要介紹,將著眼點放在基于CDC3207G的移植和應(yīng)用。圖6給出軟件的組織結(jié)構(gòu)。
3.1 啟動代碼的設(shè)計
嵌入式系統(tǒng)的資源有限,程序通常都是固化在ROM運行。ROM程序執(zhí)行前,需要初始化系統(tǒng)硬件和軟件運行環(huán)境,這些工作由匯編語言編寫的啟動程序完成。啟動程序是嵌入式程序的開頭部分,與應(yīng)用程序一起固化在ROM中,并首先在系統(tǒng)上電后運行。它應(yīng)包含各模塊可能出現(xiàn)的所有段類,并合理安排它們的次序。
設(shè)計優(yōu)秀的嵌入式程序關(guān)鍵要有好的啟動程序,由于μC/OS—II不是針對特定的硬件進行設(shè)計,可以把μC/OS—II內(nèi)核代碼分成4個部分:與處理器無關(guān)的代碼、與處理器有關(guān)的代碼、與應(yīng)用相關(guān)的代碼以及驅(qū)動程序庫。為了使μC/OS—II在基于ARM7TDMI的處理器CDC3207G上能夠正常的運行,需要實現(xiàn)相應(yīng)的啟動程序以及對μC/OS—II中與處理器相關(guān)部分的設(shè)計與實現(xiàn)。圖7給出啟動代碼的流程圖。
3.2 任務(wù)規(guī)劃
儀表盤的研制在軟件部分可以分成若干任務(wù)來完成,下面對這個問題進行規(guī)劃。
(1)啟動任務(wù)
優(yōu)先級:10
周期:否
可剝奪:否
作用:初始化各模塊,包括UART、定時器、捕捉比較器等
(2)步進電機任務(wù)
優(yōu)先級:8
周期:2 ms
可剝奪:否
作用:驅(qū)動步進電機,在啟動時需要0位檢測
(3)指示器任務(wù)
優(yōu)先級:7
周期:500 ms
可剝奪:否
作用:設(shè)置指示燈和提示音。
(4)采集任務(wù)
優(yōu)先級:6
周期:25 ms
可剝奪:否
作用:用于采集各種非中斷量如溫度、光強等傳感器信號并保存
(5)背光任務(wù)
優(yōu)先級:5
周期:250 ms
可剝奪:否
作用:根據(jù)周圍的光線強度調(diào)節(jié)儀表盤和LCD的背光
(6)LCD顯示任務(wù)
優(yōu)先級:2
周期:100 ms
可剝奪:是
任務(wù):根據(jù)總線上采集到的數(shù)據(jù)更新LCD顯示,如溫度、公里數(shù)等
上述各任務(wù)運行在任務(wù)級,還有一些任務(wù)運行在中斷級,比如時鐘節(jié)拍中斷、CAN總線數(shù)據(jù)采集等。
4 結(jié)語
由于Micronas公司的CDC3207G內(nèi)部集成有步進電機驅(qū)動模塊、音頻控制模塊、LCD驅(qū)動模塊、LED及報警燈驅(qū)動端口,CAN總線模塊等豐富的資源,因此減少了所需使用的外部驅(qū)動器件的數(shù)量,大大簡化了儀表盤系統(tǒng)的設(shè)計。該器件在休眠狀態(tài)下的功耗非常小(經(jīng)測試約為19.1μA),有利于降低整個系統(tǒng)的功耗。該儀表板系統(tǒng)各方面表現(xiàn)良好.指針平滑轉(zhuǎn)動,具有極低的功耗,可靠性較高。軟件部分應(yīng)用了uC/OS一Ⅱ操作系統(tǒng),實時性能較好,能對外部事件作出快速響應(yīng)。