基于STM32 MP3播放器設(shè)計
《基于STM32 MP3播放器設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《基于STM32 MP3播放器設(shè)計(16頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 基于STM32 MP3播放器設(shè)計 學(xué)院:XXXXXXXXXXX 專業(yè)班機:XXXXXXXX 姓名XXXXX 學(xué)號:XXXXXXXX 1.1 本課題的提出及意義 MP3音頻播放器的最合理工作速度為30Mips,而一個典型的視頻媒體播放器的理想速度則為175Mips,所以提高MP3的工作速度,以及改善MP3的音質(zhì)是最關(guān)鍵的,也是亟待解決的問題。? MP3是一種典型的嵌入式設(shè)備,而現(xiàn)在市場上比較常見的是閃存式MP3。由于閃存式MP3的容量限制,使它存儲歌曲數(shù)目較少,在功能上也很難實現(xiàn)多樣
2、化[1]。而硬盤式MP3的多功能及大容量,也必將受到不少消費者的喜愛。?? MP3播放器一般分成3個部分:CPU、MP3硬件解碼器存儲器。其中可以將前兩部分集成在一起,即帶MP3硬件解碼器的CPU;或?qū)⒑髢刹糠旨稍谝黄?,即集成硬件解碼、D/A轉(zhuǎn)換及音頻輸入。存儲器可以是Flash存儲器或硬盤[2]。通過用MP3編碼技術(shù),可以得到大約12:1壓縮的有損音樂信號。 1.2 研究現(xiàn)狀 MP3全稱是MPEG Layer 3,狹義的講就是以MPEG Layer 3標(biāo)準(zhǔn)壓縮編碼的一種音頻文件格式。自韓國世韓(Seahan)公司1998年推出世界上第一臺MP3隨身聽以來, MP3播放器以其小巧的外形
3、,不錯的近乎于CD的音質(zhì),前衛(wèi)的功能,越來越受到消費者的青睞,也就成為業(yè)界甚至大眾媒體關(guān)注的一個熱門話題[3]。在市場消費刺激下,各大公司紛紛推出了自己的mp3播放器產(chǎn)品,IC供應(yīng)商提供了眾多的MP3解碼芯片及其解決方案。除了Micronas方案(MAS3507+DAC3550),還有臺灣創(chuàng)品方案(T33510,T33520)、美國SigmaTel方案(STMP3400)和TI的DA-250解決方案。這使mp3播放器的研制與生產(chǎn)變得更加容易,成本也大大降低,市場更加廣闊 [4]。 2 硬件設(shè)計 2.1整體方案 綜述 本設(shè)計由STM32最小系統(tǒng),SD卡的讀取模塊,TFT控制模塊,外擴FL
4、ASH模塊,觸摸屏模塊,串口通信模塊組成。將解決SD卡的讀取以及使用FATFS文件系統(tǒng)來對SD卡操作,TFT液晶屏的控制及觸摸屏原理、還有人機界面UI的實現(xiàn)等問題[5]。系統(tǒng)架構(gòu)如圖2-1所示。 基本設(shè)計流程是使用STM32系列微控制器,采用FATFS文件系統(tǒng)方式讀取SD卡中音樂文件數(shù)據(jù),將所讀取的數(shù)據(jù)流傳輸給CPU軟件解碼(helix解碼庫)解碼編程PCM音頻,通過I2S送到ADC芯片 PCM1770音頻輸出驅(qū)動耳機實現(xiàn)音樂播放功能。液晶屏顯示歌曲的實時播放狀態(tài),功能按扭 和控制歌曲的播放、停止、聲音增大、減小等。同時,TFT觸摸屏則用于功能按扭 和人機交換界面的輸入。 2.2系統(tǒng)架構(gòu)圖
5、 圖 2-1 系統(tǒng)架構(gòu)圖 2.3硬件模塊 2.3.1處理器 一、芯片介紹。 CortexM3是ARM公司最新推出的基于ARMv7體系架構(gòu)的處理器核,具有高性能、低成本、低功耗的特點,專門為嵌入式應(yīng)用領(lǐng)域設(shè)計。 ARMv7 架構(gòu)采用了Thumb2技術(shù),它是在ARM的Thumb代碼壓縮技術(shù)的基礎(chǔ)上發(fā)展起來的,并且保持了對現(xiàn)存ARM解決方案完整的代碼兼容性。 Thumb2技術(shù)比純ARM代碼少使用31%的內(nèi)存,減小了系統(tǒng)開銷,同時能夠提供比Thumb技術(shù)高出38%的性能[7]。 在中斷處理方面,CortexM3集成了嵌套向量中斷控
6、制器NVIC(Nested Vectored Interrupt Controller)。NVIC是CortexM3處理器的一個緊耦合部分,可以配置1~240個帶有256個優(yōu)先級、8級搶占優(yōu)先權(quán)的物理中斷,為處理器提供出色的異常處理能力。同時,搶占(Pre emption)、尾鏈(Tail chaining)、遲到技術(shù)(Late arriving)的使用,大大縮短了異常事件的響應(yīng)時間。CortexM3異常處理過程中由硬件自動保存和恢復(fù)處理器狀態(tài),進一步縮短了中斷響應(yīng)時間,降低了軟件設(shè)計的復(fù)雜性。DP)或串行JTAG調(diào)試端口(SWJDP,允許JTAG或SW協(xié)議)使用。 二、引腳圖。
7、 圖2-2 STM32F103ZET6 微控制器引腳分布圖 2.3.3 SD卡模塊 一、SD卡介紹。 STM32微處理器 CPU ( STM32F103ZET6 )具有一個 SDIO 接口。SD/SDIO/MMC 主機接口可以支持 MMC 卡系統(tǒng)規(guī)范 4.2 版中的 3 個不同的數(shù)據(jù)總線模式:1 位(默認)、4 位和 8 位。在 8 位模式下,該接口可以使數(shù)據(jù)傳輸速率達到 48MHz,該接口兼容 SD 存儲卡規(guī)范 2.0 版[12]。 二、SD卡原理圖。 圖2-3 SD卡接口電路 .
8、 圖2-4 SD卡上電識別流程圖 2.3.3 LCD顯示模塊 一、LCD控制器。 LCD,即液晶顯示器,因為其功耗低、體積小,承載的信息量大,因而被廣泛用于信息輸出、與用戶進行交互,目前仍是各種電子顯示設(shè)備的主流。因為 STM32 內(nèi)部沒有集成專用的液晶屏和觸摸屏的控制接口,所以在顯示面板中應(yīng)自帶含有這些驅(qū)動芯片的驅(qū)動電路(液晶屏和觸摸屏的驅(qū)動電路是獨立的),STM32 芯片通過驅(qū)動芯片來控制液晶屏和觸摸屏。 二、 FSMC框圖結(jié)構(gòu)。 FSMC(flexible static memory controller),譯為靜態(tài)存儲控制器??捎糜赟T
9、M32 芯片控制 NOR FLASH、PSRAM、和 NAND FLASH 存儲芯片。我們是使用FSMC的NOR\PSRAM 模式控制 LCD。其結(jié)構(gòu)如圖2-5所示。 .. 圖2-5 FSMC框圖結(jié)構(gòu)框圖 2.3.4觸摸屏模塊 一、觸摸屏感應(yīng)原理。 觸摸屏常與液晶屏配套使用,組合成為一個可交互的輸入輸出系統(tǒng)。除了熟悉的電阻、電容屏外,觸摸屏的種類還有超聲波屏、紅外屏。觸摸屏的基本原理為分壓,它由一層或兩層阻性材料組成,在檢測坐標(biāo)時,在阻性材料的一端接參考電壓 Vref,另一端接地,形成一個沿坐標(biāo)方向
10、的均勻電場。當(dāng)觸摸屏受到擠壓時,阻性材料與下層電極接觸,阻性材料被分為兩部分,因而在觸摸點的電壓,反映了觸摸點與阻性材料的 Vref 端的距離,而且為線性關(guān)系,而該觸點的電壓可由 ADC 測得。更改電場方向,以同樣的方法,可測得另一方向的坐標(biāo)。 二、TSC2046觸摸屏控制器。 TSC2046 是專用在四線電阻屏的觸摸屏控制器,MCU 可通過 SPI 接口向它寫入控制字,由它測得 X、Y 方向的觸點電壓返回給 MCU。如圖2-6所示 圖2-6 TSC2046 與電阻屏的連接圖 2.3.5 PCM音頻模塊 PCM1770
11、器件是CMOS,單片,集成電路包括立體聲數(shù)字 - 模擬轉(zhuǎn)換器,耳機電路。數(shù)據(jù)轉(zhuǎn)換器采用TI的增強型多級架構(gòu),它采用噪聲整形和多值振幅量化,實現(xiàn)出色的動力性能和改進的耐時鐘抖動。該PCM1770器件接受多個行業(yè)標(biāo)準(zhǔn)音頻數(shù)據(jù)格式,16至24位數(shù)據(jù),左對齊,I2S等,提供輕松連接到音頻DSP和解碼器。采樣率高達50 kHz的支持。全套用戶可編程功能是通過一個3線串行控制端口,支持寄存器寫入功能訪問。原理接線圖如圖2-7所示 圖2-7 PCM1770連接圖 3 軟件設(shè)計 3.1 軟件開發(fā)架構(gòu) 本設(shè)計由STM32最小系統(tǒng),SD卡的讀取模塊,TFT控制模塊,觸摸
12、屏模塊,串口通信模塊組成。將要解決SD卡的讀取及使用FATFS系統(tǒng)對SD卡的操作、TFT液晶的控制及觸摸屏原理、還有圖形用戶界面GUI的實現(xiàn)等問題[10]。架構(gòu)如圖3-1軟件開發(fā)架構(gòu)圖 圖3-1軟件開發(fā)架構(gòu)圖 3.2 軟件程序設(shè)計流程圖 開始 系統(tǒng)初始化 顯示屏初始化 觸摸屏初始化 SD卡初始化 PCM1770初始化 MP3播放程序 觸摸屏按下? 播放模式設(shè)置 讀取觸摸屏數(shù)據(jù), 執(zhí)行相應(yīng)功能操作
13、 圖3-2 程序設(shè)計流程圖 本系統(tǒng)的程序設(shè)計流程圖如圖3-2所示,工作流程是:STM32從SD卡中讀取音樂文件數(shù)據(jù),將所讀取的數(shù)據(jù)流傳輸給CPU軟件解碼(helix解碼庫)解碼編程PCM音頻,通過I2S送到ADC芯片 PCM1770音頻輸出驅(qū)動耳機實現(xiàn)音樂播放功能。液晶屏顯示歌曲的實時播放狀態(tài),功能按扭和控制歌曲的播放、停止、聲音增大、減小等。同時,TFT觸摸屏則用于功能按扭和人機交換界面的輸入。 音樂播放鏈路: 圖3-3 音樂播放鏈路 3.3 軟件代碼結(jié)構(gòu) 為了使代碼結(jié)構(gòu)清晰,方便以后的維護,代碼結(jié)構(gòu)設(shè)計如下: 在根目錄I2S-MP3下,劃分
14、為七個文件夾,分別為STARTUP、CMSIS、FWLB、USER、DOC、ff9和mp3。下面分別就七個文件夾的作用和結(jié)構(gòu)進行說明,其代碼目錄樹狀結(jié)構(gòu)如圖3-4 所示。 圖3-4 整體工程代碼結(jié)構(gòu) 對其進行分析: 目錄名稱 目錄說明 STARTUP 啟動文件 CMSIS M3系列通用的文件 FWLB ST 片上資源外設(shè)的驅(qū)動文件 USER
15、 用戶寫的驅(qū)動文件 DOC 工程說明文檔 ff9 FATFS文件系統(tǒng)文件 mp3 音樂播放相關(guān)文件 詳細代碼結(jié)構(gòu) 啟動文件是任何處理器在上點復(fù)位之后最先運行的一段匯編程序。在我們編寫的 c 語言代碼運行之前,需要由匯編為 c 語言的運行建立一個合適的環(huán)境,接下來才能運行我們的程序[9]。 液晶屏驅(qū)動程序 /** * @brief lcd 初始化 * @param 無 *
16、 @return 無 */ void LCD_Init(void) { LCD_GPIO_Config(); //配置IO端口 LCD_FSMC_Config(); //LCD FSMC模式的配置 LCD_Rst(); //LCD軟件復(fù)位 LCD_REG_Config(); //配置LCD初始化寄存器 } 文件系統(tǒng)驅(qū)動程序 /** * @brief fs 文件系統(tǒng)初始化 * @param 無 * @return 無 */ void Sd_fs_init(void) { /* SD卡
17、中斷初始化 */ SDIO_NVIC_Configuration(); /* SD 卡硬件初始化,初始化盤符為0*/ f_mount(0,&myfs[0]); /./ff9文件庫 } /* * @brief SDIO優(yōu)先級配置為最高優(yōu)先級 * @param 無 * @return 無 */ void SDIO_NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; /* Configure the NVIC Preemption
18、 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
19、(&NVIC_InitStructure); } 觸摸屏卡驅(qū)動程序 /* * @brief 觸摸模擬SPI IO 和中斷 IO初始化 * @param 無 * @return 無 */ void Touch_Init(void) { GPIO_SPI_Config(); } /* * @brief 模擬SPI的GPIO配置,當(dāng)SPI的4根信號線換為其他IO時, * 只需要修改該函數(shù)對應(yīng)的宏定義即可。 * @param 無 * @return 無 */ void GPIO_SPI_Conf
20、ig(void) { GPIO_InitTypeDef GPIO_InitStructure; /* 開啟GPIO時鐘*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG, ENABLE); /* 模擬SPI的GPIO初始化*/ GPIO_InitStructure.GPIO_Pin=SPI_CLK_PIN; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz ; GPIO_InitS
21、tructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(SPI_CLK_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = SPI_MOSI_PIN; GPIO_Init(SPI_MOSI_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = SPI_MISO_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz ; GPIO_Ini
22、tStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(SPI_MISO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = SPI_CS_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(SPI_CS_PORT, &GPIO_InitStructure)
23、; /* 拉低片選,選擇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驅(qū)動程序 /** * @brief player_run 運行MP3 播放器過程,內(nèi)部死循環(huán) * @param 無 * @return 無 */ void player_run(void)
24、{ char music_name[FILE_NAME_LEN]; f_mount(0, &fs); file_scan(path); //掃描文件 if(file_num == 0) { printf("\r\n no mp3 file ! "); return; //跳出本函數(shù) } player_state = S_READY; //初始化狀態(tài) touch_even = E_NULL; //初始化事件標(biāo)志 a
25、ll_page = (file_num+7)/8 ; // current_page = 1; printf("\r\n file_num =%d,all_page=%d",file_num,all_page); // PCM1770_VolumeSet(0); //調(diào)節(jié)音量 PCM1770_VolumeSet(28); lcd_list(current_page); //顯示歌曲列表,第一頁 while(1) // 進入死循環(huán),根據(jù)狀態(tài)切換 {
26、 if(play_index >= file_num-1) //檢查play_index play_index = file_num-1; //index指向最后一個文件 else if(play_index<=0) play_index =0; even_process(); //事件處理 switch(player_state) { case S_PLAY: //播放狀態(tài) //開始play 流程 //讀
27、取音頻文件流程 //′打開playlist,讀取音頻文件名 fres = f_open (&file, "0:mp3player/playlist.txt", FA_READ); fres = f_lseek (&file, play_index*FILE_NAME_LEN); fres = f_read(&file, music_name, FILE_NAME_LEN, &rw_num); fres = f_close (&file); //獲取文件名,準(zhǔn)備解碼 printf("準(zhǔn)備播放:%s
28、 ",music_name); if(strstr(music_name,".mp3")||strstr(music_name,".MP3")) //MP3格式 { //開始MP3解碼 mp3_player(music_name); } else //WAV文件格式 { //開始WAV文件播放 wav_player(music_name); } break;
29、 case S_SWITCH: //切歌狀態(tài) player_state = S_PLAY; //?更新標(biāo)志位 /* 檢測要切換的歌曲是否在播放的上一頁*/ if((play_index+8)/8 < current_page) { current_page--; //?刷新當(dāng)前頁碼 lcd_list(current_page); //刷新LCD列表 } /*檢測要切換的歌曲是否在播放的下一頁*/ if((play_index+8)/8 >current_page) { current_page++; //?刷新當(dāng)前頁碼 lcd_list(current_page); //刷新LCD列表 } break; default:break; } } } 15
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院感染環(huán)境監(jiān)測及采樣方法課件
- 蘇教版六年級數(shù)學(xué)上冊《分數(shù)除法12整理與練習(xí)》研討ppt課件
- 產(chǎn)褥期婦女的護理
- 高中數(shù)學(xué)人教版選修2ppt課件216微積分基本定理
- 四年級科學(xué)巖石和我們課件
- 招商銀行279612090文檔課件
- 人教版部編-九年級歷史下冊-第12課亞非拉民族解放運動的高漲ppt課件
- 正確滅火小這安全教育課件
- 部編本人教版小學(xué)五年級美術(shù)上冊ppt:《色彩的和諧》課件
- 北京課改初中數(shù)學(xué)九上《《圓周角》課件-(公開課獲獎)2022年北京課改版-北京課改版
- 北京XX花園營銷中心開放活動策劃方案
- 中心靜脈置管的護理1
- 電場教材分析課件
- 牛津英語8A-Unit1Integrated-skills-B-&amp;-Study-skillsppt課件
- 認識一元一次方程(第1課時)ppt課件