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