本設計是以STM32VET6作為主控制器,外圍輔以3.5寸TFT液晶、SD卡、VS1003(VS1003數(shù)據(jù)手冊)音頻解碼器、spi flash、AL422(AL422 數(shù)據(jù)手冊) FIFO Memory、XPT2046(XPT2046數(shù)據(jù)手冊)觸摸IC、pl2303(pl2303數(shù)據(jù)手冊) USB轉串口IC等,實現(xiàn)了一個功能豐富的小設備。本設計中使用的TFT作為顯示單元,屏是3.5寸的分辨率320*480,控制IC為ILI9481,通過STM32的FSMC總線與系統(tǒng)相連,寫屏速度還是挺快的,如果有片大RAM做顯存,通過DMA總線操作的話就更快了,不過之前沒考慮到啊!使用SD卡作為數(shù)據(jù)存儲,這里充分利用片子的優(yōu)勢,用得是SDIO接口,比SPI快多了,能夠支持FAT16/32文件系統(tǒng)。
本設計實現(xiàn)的主要功能描述:
1.音樂播放,使用vs1003音頻解碼芯片,能支持大部分主流的音頻格式,可以上一曲、下一曲,可以快退快進,播放界面是模仿了千千靜聽中的“炫紫神話”皮膚,界面的實現(xiàn)完全是通過軟件繪制的方式,沒有貼任何圖片,為了實現(xiàn)那些層次陰影的效果,綜合運用了顏色漸變,顏色疊加的方法,特別是那個圓形按鈕花了不少時間,大家看看是不是還有點立體感呢,在界面中也顯示了頻譜,不過頻譜數(shù)據(jù)是從vs1003中讀取的,好像不怎么準確的,不過也將就了。(注:EQ、LRC功能沒實現(xiàn),所以那兩個按鈕也是無用的)
2.圖片播放部分主要是一直正點原子的代碼,能支持BMP、JPEG圖片的顯示。在選中播放功能后顯示進入文件瀏覽界面,界面中只會顯示需要播放的文件格式與文件夾,比如進入圖片播放的文件瀏覽界面中,就只會顯示可以打開的圖片與文件夾,其他功能也是一樣。另外在文件瀏覽中,可以通過上下左右滑動觸摸來翻頁的。
3.電子書閱讀功能,可以打開常見的文本文件,如.txt、.lrc、.c、.h,系統(tǒng)中集成了GB2312字庫,有12*12、16*16、24*24三種大小,它們被存儲在一片SPI FLASH中,型號是EN25F16。
4.照相機功能,這個沒有實現(xiàn)完成,可以將攝像頭的數(shù)據(jù)取來并實時顯示在TFT屏上,但不能保存照片,可以支持ov7670和ov7725兩種攝像頭,攝像頭是通過AL422 FIFO與MCU接口的,圖像數(shù)據(jù)先進FIFO中,然后MCU根據(jù)場中斷開始提取數(shù)據(jù),可以刷個4~5幀吧,具體沒測,由于現(xiàn)在手頭上沒攝像頭了,沒有上這部份功能的圖,但程序中是有這部份功能的。
5.拼圖游戲這部份是移植的網(wǎng)絡中的代碼,不過實現(xiàn)起來也不難,比較容易理解,游戲分3個難度等級,3*3、4*4、5*5,也沒太多可說的,看圖吧。
6.時間顯示部分實現(xiàn)了一個指針式的時鐘,這里的表盤是圖片了,因為軟件畫的話比較麻煩,指針的繪制參考了ucgui中畫多邊形的代碼,并且使用了透明效果,指針遮擋部位下面的文字圖案依然能看到的。溫度采集用得是片內的線性溫度傳感器,溫度偏高了,不過硬件上預留了DS18B20的位置,暫未使用。
7.觸摸畫板功能可以實時顯示在觸屏上畫下的線條,這個功能比較簡單了,不過也有待完善。
8.文件瀏覽跟前面提到的進入播放功能后打開的瀏覽界面是一樣的,只是這里不分文件格式了,任何格式的文件都會顯示,方便查看。
9.系統(tǒng)設定部分提供了一些設置系統(tǒng)參數(shù)的接口,如日期時間設定、觸摸校正,還有一些設置沒完成。
10.USB設備功能,STM32自帶了一個USB2.0設備接口,可方便的實現(xiàn)一些USB傳輸功能,本系統(tǒng)通過USB與計算機連接,可以枚舉成USB mass storage和HID Mouse兩種設備,mass storage功能實際就是將系統(tǒng)枚舉為一個U盤了,可以方便通過計算機管理系統(tǒng)SD卡中的文件,速度不很快,200~300KB左右,板子背部有個LED可表示USB的讀寫狀態(tài),HID Mouse就是將系統(tǒng)枚舉為一個鼠標了,通過在觸屏上滑動,點擊控制計算機上鼠標指針的行為,不過由于電阻屏的特點,我也沒仔細寫代碼,使用效果不好,不過USB通信這塊是完善的,另外本設計中還加入了一片pl2303 USB轉口芯片,該芯片傳出串口與STM32的UART1相連,可方便的通過串口下載程序,或打印log調試信息等。
在做這個畢業(yè)設計中,硬件的設計當時考慮了很多,其實還預留了一些功能,比如MIC、IR,不過暫時未使用,電源部分,將TFT供電與其他部分的供電隔開了,是各自單獨用了一片穩(wěn)壓IC的,而且各部分的供電是可以通過左側邊的幾個排陣控制的,這里還引出幾個未用的引腳供試驗用,另外為了充分利用這塊板,TFT所有的引腳通過左上邊的一個座子引出了,可以單獨去使用這個TFT,由于供電是隔開的,所以不必擔心其他部分的干擾,也不會給板上的STM32供電。