基于STM32F單片機的音樂播放器設計.doc_第1頁
基于STM32F單片機的音樂播放器設計.doc_第2頁
基于STM32F單片機的音樂播放器設計.doc_第3頁
基于STM32F單片機的音樂播放器設計.doc_第4頁
基于STM32F單片機的音樂播放器設計.doc_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

STM32單片機課程設計 題 目: 基于的大容量音樂播放器設計 指導教師: 曹利鋼 所在學院: 機械電子工程 專業班級: 14自動化2班 姓名: 張志浩 學號: 114040200227 聯系電話:實踐時間: 2017年5月30日 目錄一 引言 .1二 系統整體概述設計.1三 硬件設計3.1控制器.23.2電源.33.3 PCM1770音頻播放模塊.43.4 SD卡數據存儲模塊.43.5 W25Q32數據存儲模塊和OLED顯示模塊.43.6按鍵控制.5四 軟件設計4.1 軟件.64.2軟件設計流程圖.7五 程序設計.8六 課程小結.12摘要:采用具有內核的等芯片進行相關的硬件設計,使用進行固件程序和驅動程序的開發,設計了一種基于的協議的讀卡器該讀卡器支持符合規范的接觸式卡。實驗表明,該設計可以提高智能卡系統的通信速度和中斷響應速度。關鍵詞:;協議;1. 引 言 隨著社會的快速發展,現今社會生活緊張,而欣賞音樂是其中最好的舒緩壓力的方式之一,音樂成了我們生活工作中的一個重要的部分。位次我設計了一個基于的大容量音樂播放器。二 系統總體設計概述 基于PCM1770芯片播放器三 硬件設計 3.1控制器15 STM32F105互聯型系列微處理器使用高性能的ARM Cortex-M3 32位的RISC內核。工作最高頻率為72MHZ,內置256K字節的閃存和64K字節的SRAM。豐富的I/O端口和聯接到兩條APB總線的外設。包含標準的通訊接口(2個IIC接口,3個SPI接口,2個IIS接口,1個USB OTG 全速接口,5個USART接口和2個CAN接口),2個12位的ADC和4個通用的16位定時器。它具有高性能、低功耗、低電壓等特性,同時還具有高集成度和易于開發的特點,使該系列產品成為小型項目和作為完整平臺的理想選擇。STM32的使用需要一個最小系統,包括晶振電路,復位電路。1)晶振電路的設計:晶振電路用于向處理器提供工作時鐘。本系統使用72MHZ無源晶振作為系統的主振蕩器。晶振的負載電容應當按照要求選取, 電容不正確可能導致晶振起振緩慢甚至不起振,這將影響整個系統的穩定性。2)復位電路的設計:采用簡單的“RC+按鍵”復位形式,該復位電路可以實現上電自動復位和手動按鍵復位 。上電自動復位是通過外部復位電路的電容充電來實現的,按鍵復位是通過復位端經電阻與電源接通而實現的。 3.2電源 本系統所需要的硬件輸入電源為3.3V, 采用AS1 l173.3穩壓芯片來提供,輸入電壓范圍是4.75V-10V,輸出電壓3.3V。在使用過程中用5V電源供電即可。 3.3 PCM1770音頻播放模塊 DAC芯片選擇德州儀器的PCM1770PWR芯片提供音頻播放功能,它是具有耳機放大器的 24 位低功耗立體聲音頻 DAC(解碼器)。可支持工業標準音頻數據格式,包括標準模式、I2S飛利浦標準、MSB對齊標準。可直接驅動耳機,具有軟件控制音量大小,芯片模式和模擬語音合成等功能。PCM1770的I2S共4路信號,I2S_SD 串行數據用來接收2路左右聲道時分復用通道的數據、I2S_WS 字選(左右聲道選擇)從模式下作為輸入、I2S_CK 串行位時鐘 從模式下作為輸入、I2S_MCK 主時鐘 PCM1770工作需要的時鐘。PCM1770的SPI共三路信號,SPI2_CS 接口片選、SPI2_SD 數據接收、SPI2_CLK 時鐘信號。本系統中處理器通過I2S接口(處理器帶有I2S接口)傳送音頻信號到PCM1770,由它進行解碼輸出到音頻座。處理器通過SPI接口訪問PCM1770的寄存器,實現配置和控制功能。如圖1所示。 3.4 SD卡數據存儲模塊SD卡(Secure Digital Memory Card)安全數碼卡,是一種基于半導體快閃記憶器的新一代記憶設備,它被廣泛地于便攜式裝置上使用。SD卡具有大容量、高性能、安全等多種特點的多功能存儲卡 。SD卡支持兩種接口訪問模式,SDIO模式和SPI模式。本系統選擇kingston 8G的SD卡,采用SPI模式通訊。3.5 W25Q32數據存儲模塊和OLED顯示模塊 本系統選擇型號為CT242864PMY的OLED屏以及16Mbit的串行FLASH存儲芯片W25Q32,OLED(Organic Light Emitting Display)有機發光二極管顯示面板,是一門相當年輕的顯示技術。它利用有機半導體材料和發光材料在電流的驅動下產生發光來實現顯示。與LCD相比有很多優點,超輕、超薄、高亮度、大視角、像素自身發光、低功耗、高清晰等等。CT242864PMY與一般LCD接口相似,包括數控選擇D/C、讀寫選擇W/R、復位和8個并行數據傳輸位。W25X系列FLASH存儲器可以為用戶提供存儲解決方案,具有PCB板占用空間少,引腳數量少,功耗低等特點。與不同串行FLSH相比,使用更靈活,性能更出色。它非常適合做代碼下載應例如存儲聲音,文本和數據。工作電壓在2.7V-3.6V。在這里選擇W25Q32型號,存儲容量為4M,存儲漢字和字母,供OLED顯示屏使用。如圖3所示。3.6按鍵控制本系統中選擇普通三個四角按鍵作為控制輸入端,可以控制播放、暫停、音樂選擇、聲音調節等。四 軟件設計 RealView MDK開發套件源自德國Keil公司,是ARM公司目前最新推出的針對各種嵌入式處理器的軟件開發工具, 支持ARM7、ARM9和最新的Cortex-M3核處理器.本次設計的軟件平臺是建立在MDK Vision4之上的。系統軟件設計包括應用層的主程序和驅動層的PCM1770音頻、W25Q32漢字存取、OLED顯示、SD卡和FatFS文件系統、按鍵模塊。 4.1 軟件1)為了能夠實時在OLED屏幕上顯示所播放音樂的名稱,必須將數字、字母、漢字以及圖形符號所對應的的OLED顯示碼(16*8或者16*16點陣)存于W25Q32。這里是按照國標GB2312-80中規定的區位碼的順序存儲。由于處理器的FLASH為256K,要存儲區位碼中所有漢字圖形可以分兩次燒錄存儲。在每次使用時根據機內碼與區位碼的對應規則調用。第一步:將區位碼轉換為國標碼。兩區位碼改寫成十六進制前兩位是區碼,后兩位是位碼。將十六進制數加2020H得到的就是國標碼。第二步:國標碼轉換成機內碼。將所得到的國標碼加8080H,就可得機內碼。2)FatFS是一個通用的文件系統模塊,用于在小型嵌入式系統中實現FAT文件系統。 FatFs 的編寫遵循ANSI C,因此不依賴于硬件平臺。它可以嵌入到便宜的微控制器中,如 8051, PIC, AVR, ARM 等等。本系統將通過FatFS文件系統訪問SD卡文件。FatFs模塊為應用程序提供了部分函數,在此基礎上再編寫遍歷文件等函數即可滿足應用。3)處理器STM32F105的I2S接口為主模式和16bitMSB 對齊標準,PCM1770為從設備模式和MSB對齊標準。SPI2接口(訪問PCM1770寄存器接口)為主模式和數據傳輸從MSB位開始。4.2軟件設計流程圖 處理器上電后先配置各模塊的GPIO接口并初始化,通過FatFS文件系統遍歷SD卡中音頻文件并將文件名存儲。從W25Q32中讀取上次停止時正在播放的音樂文件顯示在OLED屏幕,準備播放。在主程序大循環中有兩個工作,第一判斷正在讀取的文件是否讀取完成,第二判斷是否有按鍵按下。處理器采用中斷的方式通過I2S接口播放音頻文件。五 程序設計 1、初始化的一般流程如下: (1)硬復位,xReset = 0; (2) 延時,xDCS、xCS、xReset置1; (3)等待DREQ為高; (4)軟件復位:SPI_MODE = 0x0804;(5)等待DREQ為高(軟件復位結束); (6)設置VS1003的采樣率:SPI_AUDATA = 0xBB81,采樣率,立體聲; (7)設置重音:SPI_BASS = 0x0055; (8)設置音量:SCI_VOL = 0x2020; (9)發送4個字節無效數據,用以啟動SPI發送;2、 播放MP3的一般流程如下: (1)打開一個指定的MP3文件; (2)發32個字節的數據到VS1003; (3)檢測DREQ,當DREQ為高時發下一個32字節的數據; (4)是否發完32個字節,否,則回到第3步; (5)是否發完打開的MP3文件,否,則回到第2步; (6)關閉打開的MP3的文件;讀寫函數如下: u16 Vs1003_REG_Read(u8 address);/讀寄存器 void Vs1003_DATA_Write(unsigned char * buf);/寫數據 void Vs1003_CMD_Write(u8 address,u16 data);/寫命令 void Vs1003_Init(void); /初始化VS1003 void Mp3Reset(void); /硬復位 void Vs1003SoftReset(void); /軟復位 void set1003(void); /設置VS1003的音量,播放模式等 void VsRamTest(void); /RAM測試 void VsSineTest(void); /正弦測試 u16 GetDecodeTime(void); /得到解碼時間 u16 GetHeadInfo(void); /得到比特率 void ResetDecodeTime(void);/重設解碼時間 void LoadPatch(void); /加載頻譜分析代碼 void GetSpec(u8 *p); /得到分析數據TFT顯示屏驅動程序驅動TFT顯示屏實際上就是對ILI9320驅動IC的操作。對ILI9320的初始化操作如下:(1)向ILI9320控制器寫入0x00.(2)如果返回的數據為不是0x9320,則驅動IC不是ILI9320,停止初始化。(3)如果返回的數據為0x9320,則向相應的寄存器寫入默認的數據,啟動驅動IC。(4)拉低片選信號CS,再寫R22h寄存器,接著寫入要寫的數據。(5)寫結束后再將CS拉高。TFT顯示屏的讀寫函數如下:externvoidTFT_Write_Start(void);/寫開始externvoidTFT_Write_End(void);/寫結束externvoidTFT_SetGRAMHVA(u16x0,u16y0);/設置GRAM的最初地址externvoidTFT_SetGRAMArea(u16HSA,u16HEA,u16VSA,u16VEA);/設置一個GRAM顯示區域externvoidTFT_init(void);/TFT顯示屏初始化/externvoidTFT_Test_Square(u16x0,u16x1,u16y0,u16y1,u16Color);externvoidTFT_Clear(u16x0,u16x1,u16y0,u16y1,u16Color);/清屏函數externvoidDrawOnePixel(u16x,u16y,u16Color);/畫點函數externvoidWrite_Asc8x16E(u16x,u16y,u16TextColor,u16BackColor,u16W_Char);/8*16英文字符externvoidWrite_Asc12x24E(u16x,u16y,u16TextColor,u16BackColor,u16W_Char);externvoidWrite_Asc12x24E_String(u16x,u16y,u16TextColor,u16BackColor,u8*W_String);externvoidWrite_Asc20x40E(u16x,u16y,u16TextColor,u16BackColor,u16W_Char);externvoidWrite_GB16(u16x,u16y,u16TextColor,u16BackColor,u8*W_Char);/16*16中文字符externvoidWrite_GB_16_And_Asc8x16E(u16x,u16y,u16TextColor,u16BackColor,u8*W_String);externvoidWrite_GB_24_And_Asc12x24E(u16x,u16y,u16TextColor,u16BackColor,u8*W_String);externvoidDisplay_Picture(u16x,u16y,u16Width,u16Height,u16*Picture);/顯示圖片SD卡驅動程序1、驅動模選擇SD卡上電時,如果CS接地,SD將進入SPI模式,CS接高電平,將進入SDBUS模式。在SDBUS模式時,發送CMDOSD卡不會回應,在SPI模式時,發送CMD0,SD卡能回應R1信息。2、初始化SD卡進入SDBUS模式后,發送CMDO復位SD卡。由于處于SDBUS模式,SD卡此時不會回復信息。發送命令的時候需要注意SD卡命令狀態,不同的狀態只能響應待定的命令,下面為初始化命令發送流程:(1)CMDO復位卡。(2)CDM55用戶命令。(3)CMD41SD卡工作電壓設置命令。(4)CMD2從默認地址獲取SD卡ID。(5)CMD3獲取一個新地址。(6)CMD9從新地址讀取SD卡ID。(7)CMD7選擇新地址的SD卡為有效卡。(8)CMD55用戶命令。(9)CMD6設置數據位寬。(10)CMD16設置BLOCK長度。(11)CMD13讀取當前SD卡狀態。(12)初始化完成。3、發送SD卡支持的操作命令不同的SD卡所支持的命令稍有不同,但基本命令都是支持的。詳細支持哪類命令要從SD卡的ID中獲得。這一步主要為讀,寫,擦這三個功能。讀CMD17,寫CMD24,擦CMD38。4、退出SD卡操作如果總線上掛有多個SD卡,就需要用CMD7命令退出當前SD卡,從面選擇其他的SD卡操作。CMD7命令為選擇卡或取消卡,在初始化的時候發送CMD7命令,SD卡將進入數據發送模式,在數據模式里發送CMD7則退出當前卡的操作。需要注意的是,在數據模式里不同的狀態只支持特定命令。SD卡讀寫函數如下:u8SPI_ReadWriteByte(u8TxData);/SPI總線讀寫一個字節u8SD_WaitReady(void);/等待SD卡就緒u8SD_SendCommand(u8cmd,u32arg,u8crc);/SD卡發送一個命令u8SD_SendCommand_NoDeassert(u8cmd,u32arg,u8crc);u8SD_Init(void);/SD卡初始化u8SD_ReceiveData(u8*data,u16len,u8release);/SD卡讀數據u8SD_GetCID(u8*cid_data);/讀SD卡CIDu8SD_GetCSD(u8*csd_data);/讀SD卡CSDu32SD_GetCapacity(void);/取SD卡容量u8SD_ReadSingleBlock(u32sector,u8*buffer);/讀一個sectoru8SD_WriteSingleBlock(u32sector,constu8*buffer);/寫一個se

溫馨提示

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

評論

0/150

提交評論