基于STM32 MP3播放器設計_第1頁
基于STM32 MP3播放器設計_第2頁
基于STM32 MP3播放器設計_第3頁
基于STM32 MP3播放器設計_第4頁
基于STM32 MP3播放器設計_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于STM32 MP3播放器設計學院:XXXXXXXXXXX專業(yè)班機:XXXXXXXX姓名XXXXX 學號:XXXXXXXX 1.1 本課題的提出及意義MP3音頻播放器的最合理工作速度為30Mips,而一個典型的視頻媒體播放器的理想速度則為175Mips,所以提高MP3的工作速度,以及改善MP3的音質是最關鍵的,也是亟待解決的問題。 MP3是一種典型的嵌入式設備,而現(xiàn)在市場上比較常見的是閃存式MP3。由于閃存式MP3的容量限制,使它存儲歌曲數(shù)目較少,在功能上也很難實現(xiàn)多樣化1。而硬盤式MP3的多功能及大容量,也必將受到不少消費者的喜愛。  MP3播放器一般分成3個

2、部分:CPU、MP3硬件解碼器存儲器。其中可以將前兩部分集成在一起,即帶MP3硬件解碼器的CPU;或將后兩部分集成在一起,即集成硬件解碼、DA轉換及音頻輸入。存儲器可以是Flash存儲器或硬盤2。通過用MP3編碼技術,可以得到大約12:1壓縮的有損音樂信號。1.2 研究現(xiàn)狀MP3全稱是MPEG Layer 3,狹義的講就是以MPEG Layer 3標準壓縮編碼的一種音頻文件格式。自韓國世韓(Seahan)公司1998年推出世界上第一臺MP3隨身聽以來, MP3播放器以其小巧的外形,不錯的近乎于CD的音質,前衛(wèi)的功能,越來越受到消費者的青睞,也就成為業(yè)界甚至大眾媒體關注的一個熱門話題3。在市場消

3、費刺激下,各大公司紛紛推出了自己的mp3播放器產品,IC供應商提供了眾多的MP3解碼芯片及其解決方案。除了Micronas方案(MAS3507+DAC3550),還有臺灣創(chuàng)品方案(T33510,T33520)、美國SigmaTel方案(STMP3400)和TI的DA-250解決方案。這使mp3播放器的研制與生產變得更加容易,成本也大大降低,市場更加廣闊 4。2 硬件設計2.1整體方案綜述本設計由STM32最小系統(tǒng),SD卡的讀取模塊,TFT控制模塊,外擴FLASH模塊,觸摸屏模塊,串口通信模塊組成。將解決SD卡的讀取以及使用FATFS文件系統(tǒng)來對SD卡操作,TFT液晶屏的控制及觸摸屏原理、還有人

4、機界面UI的實現(xiàn)等問題5。系統(tǒng)架構如圖2-1所示?;驹O計流程是使用STM32系列微控制器,采用FATFS文件系統(tǒng)方式讀取SD卡中音樂文件數(shù)據(jù),將所讀取的數(shù)據(jù)流傳輸給CPU軟件解碼(helix解碼庫)解碼編程PCM音頻,通過I2S送到ADC芯片 PCM1770音頻輸出驅動耳機實現(xiàn)音樂播放功能。液晶屏顯示歌曲的實時播放狀態(tài),功能按扭 和控制歌曲的播放、停止、聲音增大、減小等。同時,TFT觸摸屏則用于功能按扭 和人機交換界面的輸入。2.2系統(tǒng)架構圖圖 2-1 系統(tǒng)架構圖2.3硬件模塊2.3.1處理器一、芯片介紹。CortexM3是ARM公司最新推出的基于ARMv7體系架構的處理器核,具有高性能、低

5、成本、低功耗的特點,專門為嵌入式應用領域設計。ARMv7 架構采用了Thumb2技術,它是在ARM的Thumb代碼壓縮技術的基礎上發(fā)展起來的,并且保持了對現(xiàn)存ARM解決方案完整的代碼兼容性。 Thumb2技術比純ARM代碼少使用31%的內存,減小了系統(tǒng)開銷,同時能夠提供比Thumb技術高出38%的性能7。在中斷處理方面,CortexM3集成了嵌套向量中斷控制器NVIC(Nested Vectored Interrupt Controller)。NVIC是CortexM3處理器的一個緊耦合部分,可以配置1240個帶有256個優(yōu)先級、8級搶占優(yōu)先權的物理中斷,為處理器提供出色的異常處理能力。同時,

6、搶占(Pre emption)、尾鏈(Tail chaining)、遲到技術(Late arriving)的使用,大大縮短了異常事件的響應時間。CortexM3異常處理過程中由硬件自動保存和恢復處理器狀態(tài),進一步縮短了中斷響應時間,降低了軟件設計的復雜性。DP)或串行JTAG調試端口(SWJDP,允許JTAG或SW協(xié)議)使用。二、引腳圖。圖2-2 STM32F103ZET6 微控制器引腳分布圖2.3.3 SD卡模塊一、SD卡介紹。STM32微處理器 CPU ( STM32F103ZET6 )具有一個 SDIO 接口。SD/SDIO/MMC 主機接口可以支持 MMC 卡系統(tǒng)規(guī)范 4.2 版中的

7、3 個不同的數(shù)據(jù)總線模式:1 位(默認)、4 位和 8 位。在 8 位模式下,該接口可以使數(shù)據(jù)傳輸速率達到 48MHz,該接口兼容 SD 存儲卡規(guī)范 2.0 版12。二、SD卡原理圖。圖2-3 SD卡接口電路.圖2-4 SD卡上電識別流程圖2.3.3 LCD顯示模塊一、LCD控制器。LCD,即液晶顯示器,因為其功耗低、體積小,承載的信息量大,因而被廣泛用于信息輸出、與用戶進行交互,目前仍是各種電子顯示設備的主流。因為 STM32 內部沒有集成專用的液晶屏和觸摸屏的控制接口,所以在顯示面板中應自帶含有這些驅動芯片的驅動電路(液晶屏和觸摸屏的驅動電路是獨立的),STM32 芯片通過驅動芯片來控制液

8、晶屏和觸摸屏。2、 FSMC框圖結構。FSMC(flexible static memory controller),譯為靜態(tài)存儲控制器??捎糜赟TM32 芯片控制 NOR FLASH、PSRAM、和 NAND FLASH 存儲芯片。我們是使用FSMC的NORPSRAM 模式控制 LCD。其結構如圖2-5所示。.圖2-5 FSMC框圖結構框圖2.3.4觸摸屏模塊一、觸摸屏感應原理。觸摸屏常與液晶屏配套使用,組合成為一個可交互的輸入輸出系統(tǒng)。除了熟悉的電阻、電容屏外,觸摸屏的種類還有超聲波屏、紅外屏。觸摸屏的基本原理為分壓,它由一層或兩層阻性材料組成,在檢測坐標時,在阻性材料的一端接參考電壓 V

9、ref,另一端接地,形成一個沿坐標方向的均勻電場。當觸摸屏受到擠壓時,阻性材料與下層電極接觸,阻性材料被分為兩部分,因而在觸摸點的電壓,反映了觸摸點與阻性材料的 Vref 端的距離,而且為線性關系,而該觸點的電壓可由 ADC 測得。更改電場方向,以同樣的方法,可測得另一方向的坐標。二、TSC2046觸摸屏控制器。TSC2046 是專用在四線電阻屏的觸摸屏控制器,MCU 可通過 SPI 接口向它寫入控制字,由它測得 X、Y 方向的觸點電壓返回給 MCU。如圖2-6所示圖2-6 TSC2046 與電阻屏的連接圖2.3.5 PCM音頻模塊PCM1770器件是CMOS,單片,集成電路包括立體聲數(shù)字 -

10、 模擬轉換器,耳機電路。數(shù)據(jù)轉換器采用TI的增強型多級架構,它采用噪聲整形和多值振幅量化,實現(xiàn)出色的動力性能和改進的耐時鐘抖動。該PCM1770器件接受多個行業(yè)標準音頻數(shù)據(jù)格式,16至24位數(shù)據(jù),左對齊,I2S等,提供輕松連接到音頻DSP和解碼器。采樣率高達50 kHz的支持。全套用戶可編程功能是通過一個3線串行控制端口,支持寄存器寫入功能訪問。原理接線圖如圖2-7所示圖2-7 PCM1770連接圖3 軟件設計3.1 軟件開發(fā)架構本設計由STM32最小系統(tǒng),SD卡的讀取模塊,TFT控制模塊,觸摸屏模塊,串口通信模塊組成。將要解決SD卡的讀取及使用FATFS系統(tǒng)對SD卡的操作、TFT液晶的控制及

11、觸摸屏原理、還有圖形用戶界面GUI的實現(xiàn)等問題10。架構如圖3-1軟件開發(fā)架構圖圖3-1軟件開發(fā)架構圖3.2 軟件程序設計流程圖開始系統(tǒng)初始化顯示屏初始化觸摸屏初始化SD卡初始化PCM1770初始化MP3播放程序觸摸屏按下?播放模式設置讀取觸摸屏數(shù)據(jù),執(zhí)行相應功能操作圖3-2 程序設計流程圖本系統(tǒng)的程序設計流程圖如圖3-2所示,工作流程是:STM32從SD卡中讀取音樂文件數(shù)據(jù),將所讀取的數(shù)據(jù)流傳輸給CPU軟件解碼(helix解碼庫)解碼編程PCM音頻,通過I2S送到ADC芯片 PCM1770音頻輸出驅動耳機實現(xiàn)音樂播放功能。液晶屏顯示歌曲的實時播放狀態(tài),功能按扭和控制歌曲的播放、停止、聲音增大

12、、減小等。同時,TFT觸摸屏則用于功能按扭和人機交換界面的輸入。音樂播放鏈路:圖3-3 音樂播放鏈路3.3 軟件代碼結構為了使代碼結構清晰,方便以后的維護,代碼結構設計如下:在根目錄I2S-MP3下,劃分為七個文件夾,分別為STARTUP、CMSIS、FWLB、USER、DOC、ff9和mp3。下面分別就七個文件夾的作用和結構進行說明,其代碼目錄樹狀結構如圖3-4 所示。圖3-4 整體工程代碼結構對其進行分析:目錄名稱 目錄說明 STARTUP 啟動文件CMSIS M3系列通用的文件FWLB ST 片上資源外設的驅動文件USER 用戶寫的驅動文件DOC 工程說明文檔 ff9 FATFS文件系統(tǒng)

13、文件mp3 音樂播放相關文件詳細代碼結構啟動文件是任何處理器在上點復位之后最先運行的一段匯編程序。在我們編寫的 c 語言代碼運行之前,需要由匯編為 c 語言的運行建立一個合適的環(huán)境,接下來才能運行我們的程序9。液晶屏驅動程序/* * brief lcd 初始化 * param 無 * return 無 */void LCD_Init(void)LCD_GPIO_Config(); /配置IO端口LCD_FSMC_Config(); /LCD FSMC模式的配置LCD_Rst(); /LCD軟件復位LCD_REG_Config(); /配置LCD初始化寄存器文件系統(tǒng)驅動程序/* * brief

14、fs 文件系統(tǒng)初始化 * param 無 * return 無 */void Sd_fs_init(void) /* SD卡中斷初始化 */SDIO_NVIC_Configuration();/* SD 卡硬件初始化,初始化盤符為0*/ f_mount(0,&myfs0); /./ff9文件庫/* brief SDIO優(yōu)先級配置為最高優(yōu)先級 * param 無 * return 無*/void SDIO_NVIC_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure; /* Configure the NVIC Preempti

15、on Priority Bits */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStr

16、ucture);觸摸屏卡驅動程序/* brief 觸摸模擬SPI IO 和中斷 IO初始化 * param 無 * return 無*/void Touch_Init(void) GPIO_SPI_Config();/* brief 模擬SPI的GPIO配置,當SPI的4根信號線換為其他IO時,* 只需要修改該函數(shù)對應的宏定義即可。 * param 無 * return 無*/void GPIO_SPI_Config(void) GPIO_InitTypeDef GPIO_InitStructure; /* 開啟GPIO時鐘*/ RCC_APB2PeriphClockCmd(RCC_APB2P

17、eriph_GPIOF | RCC_APB2Periph_GPIOG, ENABLE); /* 模擬SPI的GPIO初始化*/ GPIO_InitStructure.GPIO_Pin=SPI_CLK_PIN; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz ; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(SPI_CLK_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = SPI_MOSI_PIN; GPIO_

18、Init(SPI_MOSI_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = SPI_MISO_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(SPI_MISO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = SPI_CS_PIN; GPIO_InitStructure.G

19、PIO_Speed = GPIO_Speed_10MHz ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(SPI_CS_PORT, &GPIO_InitStructure); /* 拉低片選,選擇XPT2046 */ GPIO_ResetBits(SPI_CS_PORT,SPI_CS_PIN); /GPIO_SetBits(SPI_CS_PORT,SPI_CS_PIN); /* XPT2046 中斷IO配置 */ TP_INT_GPIO_Config();3.3.4 MP3驅動程序/* * brief playe

20、r_run 運行MP3 播放器過程,內部死循環(huán) * param 無 * return 無 */void player_run(void)char music_nameFILE_NAME_LEN;f_mount(0, &fs);file_scan(path);/掃描文件if(file_num = 0)printf("rn no mp3 file ! ");return; /跳出本函數(shù)player_state = S_READY; /初始化狀態(tài)touch_even = E_NULL; /初始化事件標志all_page = (file_num+7)/8 ;/current

21、_page = 1;printf("rn file_num =%d,all_page=%d",file_num,all_page);/PCM1770_VolumeSet(0); /調節(jié)音量PCM1770_VolumeSet(28);lcd_list(current_page);/顯示歌曲列表,第一頁while(1) /進入死循環(huán),根據(jù)狀態(tài)切換if(play_index >= file_num-1)/檢查play_indexplay_index = file_num-1;/index指向最后一個文件else if(play_index<=0)play_index =0;even_process();/事件處理switch(player_state)case S_PLAY:/播放狀態(tài)/開始play 流程/讀取音頻文件流程/´打開playlist,讀取音頻文件名fres = f_open (&file, &q

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論