AVR8位單片機我想很多人都用過,它擁有片上資源豐富,驅動能力強,功耗低等優點,廣泛應用于工業控制和家用電器等領域。但對于AVR單片機的產品應用有一定了解的人會發現,AVR片機產品上很少采用分辨率較大的彩色液晶屏,主要原因是其處理速度不夠,并且不支持大容量的SRAM或SDRAM。比如說系列里配置較高的atmega128,其處理速度最高也就16MIPS,最大支持不到64K的外部ram。如果用戶希望能夠在實現工控任務的情況下額外再提高產品的圖像顯示能力,atmega顯然是無法完全勝任的。隨著人們對產品人機交互要求的不斷提高,越來越多的AVR用戶希望能找到一款相比以前的AVR單片機而言在人機界面處理上有更高表現的AVR單片機,這樣既能夠滿足用戶的需求,同時又不必轉換平臺從而最小化軟硬件的開發周期。
atxmega系列是ATMEL公司2008年推出的一款AVR單片機,它將AVR產品擴展到了新興的市場范圍,并改善了現有應用。拿atxmega128A1來說,與以前的atmega128系列相比,atxmega128A1主要有了如下幾項改進:
(1)內部RAM提升為8K;
(2)處理速度可達32MMIPS;
(3)EBI總線支持16MB 8位SRAM或者128MB 4位SDRAM;
(4)USART,I2C,SPI的硬件資源數量比以前有了較大提高。
與atmega128相比,atxmega128A1處理速度翻了一倍,并且支持大容量的外擴SDRAM。即使配置8M的SDRAM,如果配置240x320 16位色寬的屏,可以放下54頁的圖像。雖然atxmega處理速度仍然比較慢,但其支持SDRAM的能力使其具備了處理較大尺寸圖形界面的能力。還有一點需要說明,由于屬于AVR系列,atxmega可以使用與atmega相同的編譯器,如WINAVR。雖然與atmega系列相比,atxmega的底層寄存器定義有了部分變化,以前的產品代碼會不兼容,但是ATMEL公司提供了大量的庫函數給用戶,用戶還是可以只花少量時間就可以完成老代碼的移植工作。因此,對于那些需要提升產品的顯示能力而又不想更換開發平臺的用戶來說,用atxmega來代替atmega是一個不錯的選擇。
本文中,筆者將介紹一下自己設計的atxmega128A1開發板,借此來評估atxmega在開發人機界面方面的能力。
開發板配置以下功能:
(1)mp3播放,歌曲快進快退等
(2)BMP圖片瀏覽,縮放,更換桌布,屏幕截圖
(3)SD和U盤雙接口
(4)揚聲器輸出
(5)編碼器旋鈕控制
選用的硬件配置:
(1)ATXMEGA128A1作為MCU
(2)液晶屏選用東芝的2.2”TFT液晶屏,控制器為μPD161704A,分辨率達到QVGA240x320。
(3)選用鎂光8MB的SDRAM MT48LC16M4A2作為外擴內存
(4)SD卡和U盤作為存儲器
(5)VS1003B作為mp3解碼芯片
(6)TEA2025B作為揚聲器功放,配2個0.8W的小揚聲器
(7)一個編碼旋鈕控制界面菜單
(8)SST25VF016 flash存放字庫和界面圖標
(9)串口轉USB接口
從上面的配置可以看出,這塊板子具有較多的硬件資源,可以滿足一般大專院校和單片機愛好者學習的需要,如圖1、2所示。
1)atxmega128A1;
2)液晶屏;
3)SDRAM;
4)SST25VF016;
5)VS1003B;
6)CH375B;
7)TEA2025B;
8)旋鈕編碼器;

圖1 開發板硬件系統框圖

圖2 開發板實物照片

圖3 SDRAM接口原理圖

圖4 旋鈕編碼器接口原理圖
9)SD(在液晶屏下部)SDRAM接口。
接口主要包括:地址線,數據線和控制線。控制線包括:行地址選擇RAS#、列地址選擇CAS#、寫選擇WE#、BANK塊地址選擇BA0-1、時鐘線CLK、數據有效DQM。Atxmega128A1的外部數據總線EBI支持3端口的連接方法,EBI的時鐘使用的是高速外部時鐘,速度為CPU的2倍,可達64MHz,如圖3所示。
液晶屏接口:接口主要包括數據線和控制線。控制線包括片選CS#、讀有效RS#、寫有效WR#、復位信號RST#。

圖5 部分界面截圖
旋轉編碼器接口:旋轉編碼器內部是一個按鍵和兩個旋轉開關,可以根據旋轉方向產生不同相位信號。當順時針旋轉時,開關A的輸出信號A signal相位超前;如果逆時針旋轉時,則是開關B的輸出信號B signal相位超前,把A/B端分別接到MCU的兩個輸入端口,并在MCU內設置一個計數器;就可以用軟件來判別是順時針旋轉還是逆時針旋轉,以此判斷是增加還是減少計數器的值,如圖4所示。
軟件設計上充分利用板載大容量SDRAM這一優勢,開發板上電初始化時,會把存放在flash內的所有系統文件一次性加載到SDRAM內的指定地址上,而不必每次使用時都從flash去調數據。利用SDRAM的大容量還可以給圖形界面處理,數據拷貝等凡是要用到大量數據存儲的地方都開辟一定的空間。
整個軟件架構分為3塊,應用層部分,數據傳輸層部分,硬件層部分。
應用層負責軟件上層的應用,如負責圖像最終的顯示,歌曲的播放等。
數據傳輸層是核心部分,負責將硬件層過來的數據進行各種處理后發給應用層,或者將應用層的數據傳給硬件層。它主要負責以下任務:
(1)FAT文件系統的管理。
(2)狀態機實時控制和判斷,當插入或拔出SD或U盤,會自動更新相應桌面圖標的狀態(souce圖標和文件圖標)。
(3)圖像數據的處理,如圖塊數據的搬運,疊加,覆蓋,更新,混色,消隱等。
(4)與硬件層的數據接收和發送。
硬件層主要是硬件驅動部分,負責查看和設置硬件狀態,將數據發送至傳輸層,或傳輸層的數據傳回至相關硬件。它主要負責以下任務:
(1)Atxmega128A1的EBI接口與SDRAM的數據讀寫。
(2)CH375B,VS1003B,液晶屏的數據讀寫和控制。
(3)SST25VF016的數據燒寫和讀取。
(4)攻放的開關和旋鈕的邏輯判斷。
通過實際測試,一幀240x320的16位色圖像從SDRAM里寫進屏里需要的時間大約是1.5秒,這個速度相比其他速度更快的單片機速度稍顯不夠。但如果是小圖塊圖像,比如圖標,則刷新速度很快,基本看不出有“拉窗簾”的跡象,并且在mp3頁面下的實時混色的速度還是不錯的。因此這里可以得出結論,在對整屏顯示速度要求不是很高或者刷新面積不是很大的場合,atxmega還是基本勝任的,如圖5所示。
(1)本開發板在代碼的可修改和可移植性方面做得比較好,代碼盡量做到讓各個功能塊留有最少的接口,并且在很大程度上進行了打包處理,用戶只需調用上層的應用函數就能做一些簡單的修改。
(2)程序上在提高速度方面作了很大的優化,當前用到的數據都盡可能的堆放在SDRAM里,然后再進行處理,這樣大大提高了效率。
(3)代碼提供了所有硬件的驅動部分,用戶也可以只使用驅動代碼,數據處理和應用部分自己另行開發。同時用戶也可以對該板進行軟硬件裁減,截取需要的部分應用到自己的產品。
在目前的AVR單片機開發板市場上,由于atxmega是最近幾年才推出來的,atxmega開發板還非常稀少,即使有功能也相對簡單,沒有充分利用其外擴RAM的能力。當然這里面也有目前atxmega成本還比較高,供應量不足的因素,但相信在未來的幾年,隨著供貨量的增加和成本的下降,atxmega一定會取代atmega成為AVR的主推產品。
筆者設計了一塊atxmega128A1開發板,利用其支持大容量SDRAM的能力驗證其顯示圖形界面的速度性能,通過實際應用證明了atxmega系列單片機具備了一定的圖形開發能力,基本能夠滿足對產品的圖形顯示有一定要求的AVR用戶的需要。
[1]溫正,何嘉揚.AVR單片機開發從入門到精通[M].中國電力出版社.
[2]吳雙力,崔劍.AVR-GCC與AVR單片機C語言開發[M].北京航空航天大學出版社.
[3]avr-libc-user-manual[OL].http://www.nongnu.org/avrlibc/user-manual/modules.html.