2024年2月20日發(作者:最美校長)
惠州學院
HUIZHOU UNIVERSITY
畢 業 論 文(設 計)
中文題目:
基于
STM32單片機的MP3播放器設計
英文題目:Design of MP3 player bad on STM32 micro-controller
姓 名__ 陳騰奎 ___
學 號_ 110701203 ___
專業班級_ 11電氣2班 ___
指導教師__ 陳治明 ___
提交日期 2015年5月25日__
教務處制
惠州學院本科畢業論文(設計)開題報告
姓 名
指導教師
課題名稱
陳騰奎
陳治明
基于stm32單片機的Mp3音樂播放器設計
學 號 110701203 專業、班級 11級電氣工程及其自動化(2)班
職 稱 副教授
選
題
依
據
和
意
義
隨著科技發展,MP3播放器早已擺脫了單純聽音的時代,而朝著多功能一體化方向不斷發展。MP3從一個音樂播放載體逐漸演變為數碼多功能產品。MP3是MPEG Audio Layer3的簡稱,其通過音頻壓縮技術,可以將音樂壓縮,從而降低了音樂文件的體積。盡管MP3是一種有損壓縮,其壓縮過后還能保持很好的音質。正是因為MP3體積小、音質高的特點,使得MP3格式的音樂在網絡上廣為傳播。市面上的中低端MP3都是采用的單芯片解決方案,而本系統采用雙芯片解決方案,理論上要比市場上的中低端質量要好。該設計是基于STM32微控制器所設計的MP3播放器,MP3文件儲存在SD卡上,由STM32讀取數據并送到VS1003音頻解碼模塊解碼輸出。同時STM32驅動液晶模塊顯示當前播放信息,提供播放歌曲名顯示。
研
的
本
容
解
的
要
題
究基內及決主問
(一)、研究的基本內容:
1. 基于stm32實現Mp3功能:音樂播放
2. 觸摸屏虛擬按鍵1 :播放
3. 觸摸屏虛擬按鍵2 :暫停
4. 觸摸屏虛擬按鍵3 4:上一曲,下一曲
5. 觸摸屏虛擬按鍵5 6 :音量調節
(二)、解決的主要問題:
1. Mp3音樂播放器中架構設計
2. 觸摸屏,液晶屏設計
3. SD卡驅動設計
4. 播放器程序移植
5. 文件系統移植
6. Mp3播放功能調試
研
究
的
進
度
、
步
驟
一、2015年1月至2015年2月: 查閱與制作Mp3音樂播放器設計相關的文獻資料,畢業設計制作準備。
二、2014年3月:查閱資料、完成開題報告;畢業設計開始制作。
三、2014年4月至2014年5月初:畢業設計完成制作;畢業論文、撰寫、修改、答辯準備
四、2014年5月中旬,畢業論文答辯。
研
究
的
方
法
及
措
施
主
要
參
考
文
獻
1、文獻研究。
查閱相關文獻資料,掌握基于stm32實現Mp3制作的基本流程,基本原理。
2、理論研究。
通過對觸摸屏,顯示器,SD卡等原理理論學習分析,為整體研究提供依據。
3、軟件設計與調試。
Mp3音樂播放器架構設計進行軟件設計和實現,并調試分析。
[1] [M]..
[2] (第三版)[M]..
[3] Cortex-M3權威指南[M]..
[4]李偉,張真,范文豪. 基于STM32微控制器的mp3播放器設計[J]. 現代電子技術,2015,04:118-120+124.
[5]李寧,熊剛,徐良平. 基于Cortex-M3的MP3播放器設計[J]. 單片機與嵌入式系統應用,2009,02:48-51.
[6]李世奇,董浩斌,李榮生. 基于FatFs文件系統的SD卡存儲器設計[J]. 測控技術,2011,12:79-81.
[7] 榴蓮. 聲由芯生 主流MP3解碼芯片淺析[J]. 大眾硬件,2007,11:56-61.
[8]孫書鷹,陳志佳,寇超. 新一代嵌入式微處理器STM32F103開發與應用[J].
微計算機應用,2010,12:59-63.
[9]Joph Yiu. 從8位微控制器轉向ARM Cortex微控制器[J]. 電子設計技術,2009,09:104.
[10]Anonymous. Development environment for STM32 ARM-bad MCU[J].
Electronics Weekly,2009,2411:.
[11] [M]..
[12] 王永虹,徐煒, Cortex-M3微控制器原理與實踐[M]..
指 導
教 師
意 見
指導教師(簽名):
教 研室 意見
系
意
見
教研室主任(簽名):
系主任(簽名):
年 月 日
惠州學院畢業論文(設計)任務書
學生姓名 陳騰奎 學號
3
指導教師 陳治明 職 稱 副教授
11070120專業班級 11電氣2班
題 目 基于stm32單片機的Mp3音樂播放器設計
研究(設計)任務(包括目標和要求)
基于stm32實現Mp3功能:音樂播放
觸摸屏虛擬按鍵1 :播放
觸摸屏虛擬按鍵2 :暫停
觸摸屏虛擬按鍵3 4:上一曲,下一曲
觸摸屏虛擬按鍵5 6 :音量調節
工作階段(包括時間劃分和各階段主要工作內容)
按時間劃分和各階段的主要工作內容:
工作階段(包括時間計劃和各階段主要工作內容)
2015、1~ 2 查閱與制作Mp3音樂播放器設計相關的文獻資料,畢業設計制作準備。
2015、2 ~ 3 查閱資料、完成開題報告;畢業設計開始制作。
2015、4 ~ 5 畢業設計完成制作;畢業論文、撰寫、修改、答辯準備
2015、5月中旬 畢業論文答辯
其它要求(包括文獻研究、實驗實習等方面)
[1]李偉,張真,范文豪. 基于STM32微控制器的mp3播放器設計[J]. 現代電子技術,2015,04:118-120+124.
[2]李寧,熊剛,徐良平. 基于Cortex-M3的MP3播放器設計[J]. 單片機與嵌入式系統應用,2009,02:48-51.
[3]李世奇,董浩斌,李榮生. 基于FatFs文件系統的SD卡存儲器設計[J]. 測控技術,2011,12:79-81.
[4]榴蓮. 聲由芯生 主流MP3解碼芯片淺析[J]. 大眾硬件,2007,11:56-61.
[5]孫書鷹,陳志佳,寇超. 新一代嵌入式微處理器STM32F103開發與應用[J]. 微計算機應用,2010,12:59-63.
[6]Joph Yiu. 從8位微控制器轉向ARM Cortex微控制器[J]. 電子設計技術,2009,09:104.
系審核意見
負責人(簽名)————————
備注:1、本任務書一式三份,系、指導教師、學生各執一份。
2、學生須將此任務書作為畢業論文(設計)說明書的附件,裝訂在說明書中。
惠州學院畢業論文(設計)文獻綜述
學生姓名 陳騰奎
指導教師
題 目
學號 110701203 專業班級
職 稱
11電氣工程2班
副教授 陳治明
基于stm32單片機的Mp3音樂播放器設計
[1]李偉,張真,范文豪. 基于STM32微控制器的mp3播放器設計[J]. 現代電子技術,2015,04:118-120+124.
介紹了一種音樂播放器的設計方法,該播放器是基于Cortex-M3內核的STM32微控制器的MP3播放器。Cor-tex-M3是ARM公司為要求低成本、低功耗、高性能的嵌入式應用專門設計的內核。結果表明該系統可以播放MP3和WAV音樂文件,播放同時顯示歌曲名字,歌手和專輯名稱。
[2]李寧,熊剛,徐良平. 基于Cortex-M3的MP3播放器設計[J]. 單片機與嵌入式系統應用,2009,02:48-51.
提出一種基于Cortex-M3處理器的MP3播放器的設計方法。硬件設計上,介紹了具體模塊間的硬件連接情況;軟件設計上,主要介紹2個核心模塊的主要函數功能。該播放器采用STM32作為微控制器,采用VS1003作為解碼芯片,采用SD卡存儲MP3/WMA文件,PC機可通過USB接口操作開發板上SD卡的文件。該系統的軟件使用Real View MDK開發。
[3]李世奇,董浩斌,李榮生. 基于FatFs文件系統的SD卡存儲器設計[J]. 測控技術,2011,12:79-81.
提出了一種基于FatFs文件系統的SD卡存儲器設計。系統以ST公司的STM32F103R為核心,通過SPI總線與SD卡進行通信,實現了數據的便攜式存儲。給出了系統的硬件結構圖,詳細探討了SD卡驅動程序以及FatFs移植方面的軟件設計。該存儲器傳輸速度快,可靠性強,具有廣闊的應用價值。
[4]榴蓮. 聲由芯生 主流MP3解碼芯片淺析[J]. 大眾硬件,2007,11:56-61.
MP3播放器的處理核心解碼芯片,其主要作用就是將存儲在介質上的MP3文件進行解碼,并還原成模擬的聲音,通過耳機播放出來。它是MP3播放器工作中最重要的一環,很大程度上影響了MP3最終的音質表現。由于MP3是一種有損壓縮的編碼格式,優秀的MP3解碼芯片能夠更好地還原MP3音頻信號,可以在很大程度上彌補MP3音頻信號的損失。相反的,低端的解碼芯片則會令MP3的編碼信息進一步損失。隨著MP3芯片技術的發展,新一代的MP3解碼芯片已不再單單只有MP3解碼功能。而是將MP3更多擴展功能(如Line
In、)集成在芯片內部,降低了MP3外圍電路的復雜性。給MP3的小型化提供了可能,同時給MP3播放器帶來了越來越齊全的功能。
[5]孫書鷹,陳志佳,寇超. 新一代嵌入式微處理器STM32F103開發與應用[J]. 微計算機應用,2010,12:59-63.
基于Cortex-M3內核的STM32F103系列芯片是新型的32位嵌入式微處理器,它是不需操作系統的ARM,其性能遠高于51系列單片機,但開發過程與51系列單片機一樣簡便,因而在很多應用場合可替代51系列單片機。本文從STM32F103系列芯片性能特點和片上資源入手,重點介紹其開發工具以及開發流程。并以溫度測量為例,具體說明了基于Keil Vision4軟件的工程建立、源程序編輯、編譯,基于J-Link仿真器的程序下載,程序在線調試,片上運行等過程,最終測量的溫度轉換為數字量,通過串口發送至PC機顯示。
[6]Joph Yiu. 從8位微控制器轉向ARM Cortex微控制器[J]. 電子設計技術,2009,09:104.
隨著當今電子產品的連接性能不斷提高,對功能的要求日益復雜。由于諸多限制,8位和16位微控制器根本無法滿足對數據處理、存儲器、堆棧、外設、架構,和指令集等多方面的需求。隨著低成本ARM
Cortex-M3微控制器的廣泛普及,Cortex-MO微控制器也將于今年年底上市,嵌入式
[7]Anonymous. Development environment for STM32 ARM-bad MCU[J]. Electronics
Weekly,2009,2411:.
The environment combines the Atollic TrueSTUDIO/STM32 development tool, which can be downloaded
free-of-charge with no limitations on code size or usage time, and ST's ST-LINK debug probe to connect to the
target via USB.
[8]王鐵流,李宗方,陳東升. 基于STM32的USB數據采集模塊的設計與實現[J]. 測控技術,2009,08:37-40.
給出了基于USB接口的數據采集模塊的設計與實現。采用以STM32為主的器件進行硬件設計、DriverStudio開發USB驅動,并用Visual C++
[9]張舞杰,南亦民. 基于STM32F103VB的應用編程技術的實現[J]. 計算機應用,2009,10:2820-2822.
針對嵌入式應用中更新升級固件的需求,在闡述應用編程(IAP)技術原理的基礎上,以具有Cortex-M3內核的微控制器STM32F103VB為平臺,給出了基于STM32F103VB IAP技術的實現方案,并對方案的可靠性進行了探討。最后討論了IAP技術的具體實現方式。該方案實現了以具有STM32F103VB微控制器的嵌入式系統終端軟件的在線升級,提高了軟件維護的方便性,縮短了終端軟件系統的開發周期。
[10]勾慧蘭,劉光超. 基于STM32的最小系統及串口通信的實現[J]. 工業控制計算機,2012,09:26-28.
介紹了以Cortex-M3為內核的STM32的最小系統,詳細描述其串口通信的設計,并進行仿真調試和目標調試。
[11]南亦民. 基于STM32標準外設庫STM32F103xxx外圍器件編程[J]. 長沙航空職業技術學院學 報,2010,04:41-45.
介紹STM32F10xxx標準外設庫的結構及其使用要點,在STM32103VB平臺上,以Keil uVision4為開發工具,,實現串口通訊功能
[12] [M]..
本書介紹ARM最新推出的基于微控制器的ARM開發工具MDK的基本知識、詳細使用方法以及一個簡單的應用開發實例。全書共14章,分為3個部分。第l部分為第1~4章,是MDK的基本入門篇,首先介紹MDK的特點、功能和組件,并指導讀者完成MDK的安裝及注冊過程,然后全面介紹IDE環境的基本使用方法,最后給出一個簡單的工程開發實例。第2部分為第5~13章,是高級技術篇,詳細介紹MDK的各重要部分,包括armasm匯編器、armcc編譯器、armlink鏈接器、armar庫管理器、MDK調試器、Flash編程工具,以及一些MDK工具和第三方工具。第3部分為第14章,是應用實例篇,介紹一個采用MDK開發的例程Blinky
[13]段煅. C語言編程技巧在C語言學習中的應用[J]. 電腦編程技巧與維護,2010,20:150-151.
C語言是功能強大、應用廣泛的編程語言,也是目前高校理工類的公共必修課程之一,可見其重要性,C語言集高級編程語言和匯編語言的特點于一身,目前市面上的許多軟件也是在C語言的平臺上產生的,所以高校在C語言的教學中也可謂是"不遺余力"的。但是從近年來的教學效果來看,學生的普遍反映卻讓人大跌眼鏡,大部分人認為C語言晦澀難學,學起來是非常吃力,經常是非常努力學習卻達不到想要的效果,課程過后沒有任何收獲,甚至連一個小程序都寫不出來,針對上述情況做了初步分析,并從C語言的編程技巧上提出了相關改善對策。
[14]董衛紅. 《C語言程序設計》的教學改革與實踐[J]. 常州輕工職業技術學院學報,2007,01:35-38.
本文以《C語言程序設計》課程教學中存在的問題為出發點,結合本校學生的實際情況,在整合教材、改進教學方法、發展創造思維、加強課程設計與實踐教學、改革考核方式等方面闡述了教學改革的思想和方法,以促進C語言教學。實踐證明,改進了教學方法后,在培養學生的動手能力,思維能力以及創新能力方面均取得了較佳效果。
[15]陳萌萌,邵貝貝. “安全第一”的C語言編程規范[J]. 單片機與嵌入式系統應用,2006,01:79-82.
嵌入式系統應用工程師借用計算機專家創建的C語言,使嵌入式系統應用得以飛速發展,而MISRAC是嵌入式系統應用工程師對C語言嵌入式應用做出的貢獻。如今MISRAC已經被越來越多的企業接受,成為用于嵌入式系統的C語言標準,特別是對安全性要求極高的嵌入式系統,軟件應符合MISRA標準。從本期開始,本刊將分6期,與讀者共同學習MISRAC。
摘要
隨著數字編解碼技術及壓縮技術的發展,語音文件也向著高壓縮比、高保真的方向發展,從MP1、MP2到目前的MP3格式。因此高壓縮比、高保真MP3播放器設計及研究有很好的發展前景。
本論文介紹了基于STM32微處理器的MP3播放器的設計方法,實現了從SD卡中讀取音樂文件數據,再將讀取的數據流進行軟件解碼,最后通過音頻信號輸出驅動耳機實現音樂播放功能。并在液晶屏上顯示音樂的實時播放狀態,通過TFT觸摸屏上的人機交換界面,實現了音樂的播放,停止,聲音增大,減小等功能模式。基本上實現了一個帶有觸摸功能的MP3播放器。
關 鍵 詞
MP3播放器 STM32F103ZET SD卡 觸摸屏 FATFS文件系統
ABSTRACT
With the development of digital codec technology and compression
technology ,Voice files are also in the direction of high compression ratio,
high-fidelity development, from MP1, MP2 to MP3 format now. Therefore, high
compression ratio, high-fidelity MP3 player design and rearch have good
prospects for development.
This paper describes the design of microprocessor-bad STM32 MP3 player,
Realize from reading music files from SD card and then read the data stream
decoding software,Finally, the audio signal output to drive headphones realize
music playback ,and displays real-time playback status of the song on the LCD
screen, through a graphical ur interaction diagram circles TFT touch screen,
to achieve the songs play, stop, sound increa, decrea function mode.
Basically realize MP3 player with a touch-enabled.
Key Words
MP3 player STM32F103ZET SD Card Touch screen
FATFS file system
目錄
1 緒論 ............................................................................................................................................................. 1
本課題的提出及意義 ........................................................................................................................... 1
研究現狀 ............................................................................................................................................... 1
2 硬件設計 ..................................................................................................................................................... 2
................................................................................................................................................................. 2
................................................................................................................................................................. 2
................................................................................................................................................................. 3
......................................................................................................................................................... 3
SD卡模塊 ..................................................................................................................................... 4
LCD顯示模塊 .............................................................................................................................. 5
......................................................................................................................................................... 6
3 軟件設計 ..................................................................................................................................................... 8
軟件開發架構 ....................................................................................................................................... 8
軟程序設計流程圖 ............................................................................................................................... 9
軟件代碼結構 ..................................................................................................................................... 10
驅動程序 ............................................................................................................................................. 14
液晶屏驅動程序 ......................................................................................................................... 14
文件系統驅動程序 ..................................................................................................................... 15
觸摸屏卡驅動程序 ..................................................................................................................... 16
MP3驅動程序 ............................................................................................................................ 17
4 系統調試 ................................................................................................................................................... 20
開發環境 ............................................................................................................................................. 20
軟件開發環境 ............................................................................................................................. 20
硬件開發環境 ............................................................................................................................. 21
設計調試 ............................................................................................................................................. 22
UI界面設計 ................................................................................................................................ 22
SD卡模塊測試 ........................................................................................................................... 22
觸摸屏校驗 ................................................................................................................................. 23
顯示屏測試 ................................................................................................................................. 23
成品展示 ............................................................................................................................................. 25
致 謝 ........................................................................................................................................................... 26
參考文獻 ....................................................................................................................................................... 27
附錄 ............................................................................................................................................................... 28
1 緒論
本課題的提出及意義
MP3音頻播放器的最合理工作速度為30Mips,而一個典型的視頻媒體播放器的理想速度則為175Mips,所以提高MP3的工作速度,以及改善MP3的音質是最關鍵的,也是亟待解決的問題。
MP3是一種典型的嵌入式設備,而現在市場上比較常見的是閃存式MP3。由于閃存式MP3的容量限制,使它存儲歌曲數目較少,在功能上也很難實現多樣化[1]。而硬盤式MP3的多功能及大容量,也必將受到不少消費者的喜愛。
MP3播放器一般分成3個部分:CPU、MP3硬件解碼器存儲器。其中可以將前兩部分集成在一起,即帶MP3硬件解碼器的CPU;或將后兩部分集成在一起,即集成硬件解碼、D/A轉換及音頻輸入。存儲器可以是Flash存儲器或硬盤[2]。通過用MP3編碼技術,可以得到大約12:1壓縮的有損音樂信號。
研究現狀
MP3全稱是MPEG Layer 3,狹義的講就是以MPEG Layer 3標準壓縮編碼的一種音頻文件格式。自韓國世韓(Seahan)公司1998年推出世界上第一臺MP3隨身聽以來, MP3播放器以其小巧的外形,不錯的近乎于CD的音質,前衛的功能,越來越受到消費者的青睞,也就成為業界甚至大眾媒體關注的一個熱門話題[3]。在市場消費刺激下,各大公司紛紛推出了自己的mp3播放器產品,IC供應商提供了眾多的MP3解碼芯片及其解決方案。除了Micronas方案(MAS3507+DAC3550),還有臺灣創品方案(T33510,T33520)、美國SigmaTel方案(STMP3400)和TI的DA-250解決方案。這使mp3播放器的研制與生產變得更加容易,成本也大大降低,市場更加廣闊
[4]。
2 硬件設計
綜述
本設計由STM32最小系統,SD卡的讀取模塊,TFT控制模塊,外擴FLASH模塊,觸摸屏模塊,串口通信模塊組成。將解決SD卡的讀取以及使用FATFS文件系統來對SD卡操作,TFT液晶屏的控制及觸摸屏原理、還有人機界面UI的實現等問題[5]。系統架構如圖2-1所示。
基本設計流程是使用STM32系列微控制器,采用FATFS文件系統方式讀取SD卡中音樂文件數據,將所讀取的數據流傳輸給CPU軟件解碼(helix解碼庫)解碼編程PCM音頻,通過I2S送到ADC芯片 PCM1770音頻輸出驅動耳機實現音樂播放功能。液晶屏顯示歌曲的實時播放狀態,功能按扭 和控制歌曲的播放、停止、聲音增大、減小等。同時,TFT觸摸屏則用于功能按扭 和人機交換界面的輸入。
圖 2-1 系統架構圖
一、芯片介紹。
CortexM3是ARM公司最新推出的基于ARMv7體系架構的處理器核,具有高性能、低成本、低功耗的特點,專門為嵌入式應用領域設計。
ARMv7 架構采用了Thumb2技術,它是在ARM的Thumb代碼壓縮技術的基礎上發展起來的,并且保持了對現存ARM解決方案完整的代碼兼容性。 Thumb2技術比純ARM代碼少使用31%的內存,減小了系統開銷,同時能夠提供比Thumb技術高出38%的性能[7]。
在中斷處理方面,CortexM3集成了嵌套向量中斷控制器NVIC(Nested Vectored
Interrupt Controller)。NVIC是CortexM3處理器的一個緊耦合部分,可以配置1~240個帶有256個優先級、8級搶占優先權的物理中斷,為處理器提供出色的異常處理能力。同時,搶占(Pre emption)、尾鏈(Tail chaining)、遲到技術(Late arriving)的使用,大大縮短了異常事件的響應時間。CortexM3異常處理過程中由硬件自動保存和恢復處理器狀態,進一步縮短了中斷響應時間,降低了軟件設計的復雜性。DP)或串行JTAG調試端口(SWJDP,允許JTAG或SW協議)使用。
二、引腳圖。
圖2-2 STM32F103ZET6 微控制器引腳分布圖
SD卡模塊
一、SD卡介紹。
STM32微處理器 CPU ( STM32F103ZET6 )具有一個 SDIO 接口。SD/SDIO/MMC 主機接口可以支持 MMC 卡系統規范 版中的 3 個不同的數據總線模式:1 位(默認)、4 位和 8 位。在 8 位模式下,該接口可以使數據傳輸速率達到 48MHz,該接口兼容 SD 存儲卡規范 版[12]。
二、SD卡原理圖。
圖2-3 SD卡接口電路
.
圖2-4 SD卡上電識別流程圖
LCD顯示模塊
一、LCD控制器。
LCD,即液晶顯示器,因為其功耗低、體積小,承載的信息量大,因而被廣泛用于信息輸出、與用戶進行交互,目前仍是各種電子顯示設備的主流。因為 STM32 內部沒有集成專用的液晶屏和觸摸屏的控制接口,所以在顯示面板中應自帶含有這些驅動芯片的驅動電路(液晶屏和觸摸屏的驅動電路是獨立的),STM32 芯片通過驅動芯片來控制液晶屏和觸摸屏。
二、FSMC框圖結構。
FSMC(flexible static memory controller),譯為靜態存儲控制器。可用于STM32
芯片控制 NOR FLASH、PSRAM、和 NAND FLASH 存儲芯片。我們是使用FSMC的NORPSRAM
模式控制 LCD。其結構如圖2-5所示。
..
圖2-5 FSMC框圖結構框圖
一、觸摸屏感應原理。
觸摸屏常與液晶屏配套使用,組合成為一個可交互的輸入輸出系統。除了熟悉的電阻、電容屏外,觸摸屏的種類還有超聲波屏、紅外屏。觸摸屏的基本原理為分壓,它由一層或兩層阻性材料組成,在檢測坐標時,在阻性材料的一端接參考電壓 Vref,另一端接地,形成一個沿坐標方向的均勻電場。當觸摸屏受到擠壓時,阻性材料與下層電極接觸,阻性材料被分為兩部分,因而在觸摸點的電壓,反映了觸摸點與阻性材料的 Vref
端的距離,而且為線性關系,而該觸點的電壓可由 ADC 測得。更改電場方向,以同樣的方法,可測得另一方向的坐標。
二、TSC2046觸摸屏控制器。
TSC2046 是專用在四線電阻屏的觸摸屏控制器,MCU 可通過 SPI 接口向它寫入控制字,由它測得 X、Y 方向的觸點電壓返回給 MCU。如圖2-6所示
圖2-6 TSC2046 與電阻屏的連接圖
PCM音頻模塊
PCM1770器件是CMOS,單片,集成電路包括立體聲數字 - 模擬轉換器,耳機電路。數據轉換器采用TI的增強型多級架構,它采用噪聲整形和多值振幅量化,實現出色的動力性能和改進的耐時鐘抖動。該PCM1770器件接受多個行業標準音頻數據格式,16至24位數據,左對齊,I2S等,提供輕松連接到音頻DSP和解碼器。采樣率高達50 kHz的支持。全套用戶可編程功能是通過一個3線串行控制端口,支持寄存器寫入功能訪問。原理接線圖如圖2-7所示
圖2-7 PCM1770連接圖
3 軟件設計
軟件開發架構
本設計由STM32最小系統,SD卡的讀取模塊,TFT控制模塊,觸摸屏模塊,串口通信模塊組成。將要解決SD卡的讀取及使用FATFS系統對SD卡的操作、TFT液晶的控制及觸摸屏原理、還有圖形用戶界面GUI的實現等問題[10]。架構如圖3-1軟件開發架構圖
圖3-1軟件開發架構圖
軟件程序設計流程圖
開始
系統初始化
顯示屏初始化
觸摸屏初始化
SD卡初始化
PCM1770初始化
播放模式設置
讀取觸摸屏數據,
執行相應功能操作
MP3播放程序
觸摸屏按下?
圖3-2 程序設計流程圖
本系統的程序設計流程圖如圖3-2所示,工作流程是:STM32從SD卡中讀取音樂文件數據,將所讀取的數據流傳輸給CPU軟件解碼(helix解碼庫)解碼編程PCM音頻,通過I2S送到ADC芯片 PCM1770音頻輸出驅動耳機實現音樂播放功能。液晶屏顯示歌曲的實時播放狀態,功能按扭和控制歌曲的播放、停止、聲音增大、減小等。同時,TFT觸摸屏則用于功能按扭和人機交換界面的輸入。
音樂播放鏈路:
圖3-3 音樂播放鏈路
軟件代碼結構
為了使代碼結構清晰,方便以后的維護,代碼結構設計如下:
在根目錄I2S-MP3下,劃分為七個文件夾,分別為STARTUP、CMSIS、FWLB、USER、DOC、ff9和mp3。下面分別就七個文件夾的作用和結構進行說明,其代碼目錄樹狀結構如圖3-4 所示。
對其進行分析:目錄名稱
STARTUP
CMSIS M3FWLB ST
USER
DOC
ff9 FATFSmp3
圖3-4 整體工程代碼結構
目錄說明
啟動文件
系列通用的文件
片上資源外設的驅動文件
用戶寫的驅動文件
工程說明文檔
文件系統文件
音樂播放相關文件
詳細代碼結構
一、STARTUP 目錄如圖3-5所示
圖3-5啟動文件
為啟動文件
啟動文件是任何處理器在上點復位之后最先運行的一段匯編程序。在我們編寫的 c
語言代碼運行之前,需要由匯編為 c 語言的運行建立一個合適的環境,接下來才能運行我們的程序[9]。
二、CMSIS 目錄如圖3-6所示
圖3-6 M3系列通用的文件
文件名稱 文件說明
M3 核通用的源文件
M3系列通用的文件
對內存的操作封裝文件
實現系統時鐘操作文件
三、FWLB 目錄如圖3-7所示
圖3-7 ST 片上資源外設的驅動文件
FWLB:用來存放 STM32 庫里面的芯片上的所有驅動即ST 片上資源外設的驅動文件
四、USER目錄如圖3-8所示
圖3-8用戶寫的驅動文件
文件名稱 文件說明
iis驅動文件
spi驅動文件
觸摸屏驅動文件
液晶顯示驅動文件
pcm驅動文件
led驅動文件
bmp圖片顯示文件
sd卡文件系統文件
sd卡驅動文件
spi_flash驅動文件
系統時鐘驅動文件
串口通訊驅動文件
主函數入口文件
pm3驅動文件
中斷處理函數,以相應各種中斷
五、DOC目錄如圖3-9所示
圖3-9工程說明文檔
readme 為工程說明文件
六、ff9目錄如圖3-10所示
圖3-10 FATFS文件系統文件
七、mp3目錄如圖3-11所示
圖3-11音樂播放相關文件
這是實現mp3 播放的功能實現函數,實際應用只需要移植過來即可。
驅動程序
液晶屏驅動程序
/**
* @brief lcd 初始化
* @param 無
* @return 無
*/
void LCD_Init(void)
{
LCD_GPIO_Config(); //配置IO端口
LCD_FSMC_Config(); //LCD FSMC模式的配置
LCD_Rst(); //LCD軟件復位
LCD_REG_Config(); //配置LCD初始化寄存器
}
文件系統驅動程序
/**
* @brief fs 文件系統初始化
* @param 無
* @return 無
*/
void Sd_fs_init(void)
{
/* SD卡中斷初始化 */
SDIO_NVIC_Configuration();
/* SD 卡硬件初始化,初始化盤符為0*/
f_mount(0,&myfs[0]); /./ff9文件庫
}
/*
* @brief SDIO優先級配置為最高優先級
* @param 無
* @return 無
*/
void SDIO_NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* Configure the NVIC Preemption Priority Bits */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
= SDIO_IRQn;
= 0;
= 0;
= ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
觸摸屏卡驅動程序
/*
* @brief 觸摸模擬SPI IO 和中斷 IO初始化
* @param 無
* @return 無
*/
void Touch_Init(void)
{
GPIO_SPI_Config();
}
/*
* @brief 模擬SPI的GPIO配置,當SPI的4根信號線換為其他IO時,
* 只需要修改該函數對應的宏定義即可。
* @param 無
* @return 無
*/
void GPIO_SPI_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* 開啟GPIO時鐘*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG, ENABLE);
/* 模擬SPI的GPIO初始化*/
=SPI_CLK_PIN;
=GPIO_Speed_10MHz ;
=GPIO_Mode_Out_PP;
GPIO_Init(SPI_CLK_PORT, &GPIO_InitStructure);
= SPI_MOSI_PIN;
GPIO_Init(SPI_MOSI_PORT, &GPIO_InitStructure);
= SPI_MISO_PIN;
= GPIO_Speed_10MHz ;
= GPIO_Mode_IPU;
GPIO_Init(SPI_MISO_PORT, &GPIO_InitStructure);
= SPI_CS_PIN;
= GPIO_Speed_10MHz ;
= GPIO_Mode_Out_PP;
GPIO_Init(SPI_CS_PORT, &GPIO_InitStructure);
/* 拉低片選,選擇XPT2046 */
GPIO_RetBits(SPI_CS_PORT,SPI_CS_PIN);
//GPIO_SetBits(SPI_CS_PORT,SPI_CS_PIN);
/* XPT2046 中斷IO配置 */
TP_INT_GPIO_Config();
}
MP3驅動程序
/**
* @brief player_run 運行MP3 播放器過程,內部死循環
* @param 無
* @return 無
*/
void player_run(void)
{
char music_name[FILE_NAME_LEN];
f_mount(0, &fs);
file_scan(path); //掃描文件
if(file_num == 0)
{
printf("rn no mp3 file ! ");
return; //跳出本函數
}
player_state = S_READY; //初始化狀態
touch_even = E_NULL; //初始化事件標志
all_page = (file_num+7)/8 ; //
current_page = 1;
printf("rn file_num =%d,all_page=%d",file_num,all_page);
// PCM1770_VolumeSet(0); //調節音量
PCM1770_VolumeSet(28);
lcd_list(current_page); //顯示歌曲列表,第一頁
while(1) // 進入死循環,根據狀態切換
{
if(play_index >= file_num-1) //檢查play_index
play_index = file_num-1; //index指向最后一個文件
el if(play_index<=0)
play_index =0;
even_process(); //事件處理
switch(player_state)
{
ca S_PLAY: //播放狀態
//開始play 流程
//讀取音頻文件流程
//′打開playlist,讀取音頻文件名
fres = f_open (&file, "0:mp3player/", FA_READ);
fres = f_lek (&file, play_index*FILE_NAME_LEN);
fres = f_read(&file, music_name, FILE_NAME_LEN, &rw_num);
fres = f_clo (&file);
//獲取文件名,準備解碼
printf("準備播放:%s ",music_name);
if(strstr(music_name,".mp3")||strstr(music_name,".MP3")) //MP3格式
{
//開始MP3解碼
mp3_player(music_name);
}
el
//WAV文件格式
{
//開始WAV文件播放
wav_player(music_name);
}
break;
ca S_SWITCH: //切歌狀態
player_state = S_PLAY; //?更新標志位
/* 檢測要切換的歌曲是否在播放的上一頁*/
if((play_index+8)/8 < current_page)
{
current_page--;
lcd_list(current_page);
}
//?刷新當前頁碼
//刷新LCD列表
/*檢測要切換的歌曲是否在播放的下一頁*/
}
}
if((play_index+8)/8 >current_page)
{
current_page++;
lcd_list(current_page);
}
break;
default:break;
}
//?刷新當前頁碼
//刷新LCD列表
4 系統調試
開發環境
軟件開發環境
一、安裝
MDK。
MDK 是一個集代碼編輯,編譯,鏈接和下載于一體的集成開發環境。該軟件為基于Cortex-M、Cortex-R4、ARM7、ARM9處理器設備提供了一個完整的開發環境。 MDK-ARM專為微控制器應用而設計,不僅易學易用,而且功能強大,能夠滿足大多數苛刻的嵌入式應用[11]。新建工程圖如圖4-1
圖4-1軟件開發環境
二、超級終端。
超級終端是一款很好的打印調試軟件如圖4-2
圖4-2超級終端
硬件開發環境
一、J-Link仿真器。
J-Link是SEGGER公司為支持仿真ARM內核芯片推出的JTAG仿真器。配合IAR EWAR,ADS,KEIL,WINARM,RealView等集成開發環境支持所有ARM7/ARM9/ARM11,Cortex
M0/M1/M3/M4, Cortex A5/A8/A9等內核芯片的仿真,與IAR,Keil等編譯環境無縫連接,操作方便、連接方便、簡單易學,是學習開發ARM最好最實用的開發工具。如圖4-3
圖4-3 J-Link仿真器
設計調試
UI界面設計
UI界面設計,用于顯示的界面, 如圖4-4所示
圖4-4 UI界面
SD卡模塊測試
SD卡模塊讀取測試,測試成功,為后續展開作下鋪墊 如圖4-5所示
圖4-5 SD卡模塊測試
觸摸屏校驗
觸摸屏校驗 如圖4-6所示
圖4-6觸摸屏校驗
顯示屏測試
一、顯示屏默認顯示語言為英文,無法顯示中文,缺少中文字庫顯示效果 如圖4-7所示
圖4-7顯示屏測試
二、制作中文字模字庫 如圖4-8所示
圖4-8制作中文字模字庫
成品展示
讀取SD卡音樂文件,傳輸給CPU軟件解碼器(helix解碼庫)解碼變成PCM音頻,通過I2S送到 DAC芯片PCM1770 立體聲進行音頻輸出。如圖4-9所示
圖4-9作品展示
致 謝
在畢業設計的過程中,我學到了很多,使我深刻地認識到學好本專業知識的重要性,也深刻地理解了理論聯系實際的含義所在,這是我大學四年的學習成果之一。它是我大學四年所學知識的綜合應用和經驗的總結,通過本次畢業設計非常鍛煉我個人的各方面能力,包括編程、動手以及溝通能力,將所學知識得到了升華,為以后在發揮自己的才能奠定了堅定的基礎。
在此要感謝陳治明老師,他的指導和幫助,對本課程設計的研究是不可或缺的,從論文的整體架構到內容的完善與修改,陳老師給我提出了許多寶貴的意見,使我受益匪淺。
此外,還要感謝惠州學院的同學,在課程設計過程中,他們也給了我很大的幫助,推進了本設計的完成進度。
參考文獻
[1] 榴蓮. 聲由芯生 主流MP3解碼芯片淺析[J]. 大眾硬件,2007,11:56-61.
[2]董衛紅. 《C語言程序設計》的教學改革與實踐[J]. 常州輕工職業技術學院學報,2007,01:35-38.
[3] Cortex-M3權威指南[M]..
[4]李偉,張真,范文豪. 基于STM32微控制器的mp3播放器設計[J]. 現代電子技
術,2015,04:118-120+124.
[5]李寧,熊剛,徐良平. 基于Cortex-M3的MP3播放器設計[J]. 單片機與嵌入式系統應用,2009,02:48-51.
[6]李世奇,董浩斌,李榮生. 基于FatFs文件系統的SD卡存儲器設計[J]. 測控技術,2011,12:79-81.
[7] 陳萌萌,邵貝貝. “安全第一”的C語言編程規范[J]. 單片機與嵌入式系統應用,2006,01:79-82.
[8]孫書鷹,陳志佳,寇超. 新一代嵌入式微處理器STM32F103開發與應用[J]. 微計算機應用,2010,12:59-63.
[9]Joph Yiu. 從8位微控制器轉向ARM Cortex微控制器[J]. 電子設計技術,2009,09:104.
[10]Anonymous. Development environment for STM32 ARM-bad MCU[J]. Electronics
Weekly,2009,2411:.
[11] [M]..
[12] 王永虹,徐煒, Cortex-M3微控制器原理與實踐[M]..
[13] [美]克尼漢,[美]里奇,徐寶文,(第2版?新版)[M]..
[14] [M]..
[15]南亦民. 基于STM32標準外設庫STM32F103xxx外圍器件編程[J]. 長沙航空職業技術學院學
報,2010,04:41-45.
[16]王鐵流,李宗方,陳東升. 基于STM32的USB數據采集模塊的設計與實現[J]. 測控技術,2009,08:37-40.
[17]張舞杰,南亦民. 基于STM32F103VB的應用編程技術的實現[J]. 計算機應用,2009,10:2820-2822.
[18]勾慧蘭,劉光超. 基于STM32的最小系統及串口通信的實現[J]. 工業控制計算機,2012,09:26-28.
附錄
部分程序設計:
/**
*********************************************************************
* @file
* @author 陳騰奎
* @version
* @date 2015-05-10
* @brief 軟解Mp3(helix解碼庫)
*********************************************************************
* @attention
*
* 實驗平臺:野火 ISO STM32開發板
*
***********************************************************************/
#include ""
#include ""
#include ""
#include ""
#include ""
#include ""
#include ""
#include ""
#include ""
#include ""
#include ""
#include ""
int main(void)
{
uint8_t k;
/* 初始化LCD */
LCD_Init();
LCD_Clear(0, 0, 240, 320, BACKGROUND);
/* 初始化SD卡文件系統*/
Sd_fs_init();
/*初始化串口 */
USART1_Config();
}
/* 初始化LED */
LED_GPIO_Config();
/*初始化外部FLASH */
SPI_FLASH_Init();
//SPI_FLASH_SectorEra(0);
/* 初始化觸摸屏IO中斷*/
Touch_Init();
/*初始化設置 I2S */
I2S_Bus_Init();
/*初始化化PCM1770 */
PCM1770Init();
/*---------------------------------------------------------------------------------------------*/
#if 1
SPI_FLASH_BufferRead(&cal_flag, 0, 1);
if( cal_flag == 0x45 )
{
SPI_FLASH_BufferRead((void*)cal_p, 1, sizeof(cal_p));
SPI_FLASH_CS_HIGH();
for( k=0; k<6; k++ )
printf("rn rx = %LF rn",cal_p[k]);
}
el
{
/* 等待觸摸屏校正完畢*/
while(Touch_Calibrate() !=0);
}
/* 顯示MP3界面圖片*/
Lcd_show_bmp(0, 0,"/mp3player/");
/*運行PM3播放器*/
player_run();
while(1);
/***************************end of file*****************************/
本文發布于:2024-02-20 14:10:35,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/88/50712.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:基于stm32單片機的mp3播放器設計畢業論文[管理資料].doc
本文 PDF 下載地址:基于stm32單片機的mp3播放器設計畢業論文[管理資料].pdf
| 留言與評論(共有 0 條評論) |