基于ATmega128L的大容量MP3播放機
摘要:介紹Atmel公司生產(chǎn)的ATmega128L單片機的特點;提出一種以硬盤為存儲介質(zhì)的MP3播放機的設計方案;給出硬件設計結(jié)構(gòu)和軟件設計思路。 關(guān)鍵詞:ATmega128L MP3播放機 解碼器LCD 引言 以Flash為存儲介質(zhì)的MP34播放器,由于其體積小、攜帶方便、價位合理及其時尚的外圍觀設計,受到很多人的青睞。但Flash的價位由于受其制造工藝的制約一直居高不下,從而使MP3播放器的容量僅限于32M、64M、128M等幾個檔次。本文旨在提出一種以筆記本硬盤為存儲介質(zhì)的MP3播放機的設計方案。該款播放機既具有移動硬盤的功能,又可作為MP3播放機使用。 在該系統(tǒng)的設計中,采用Atmel公司生產(chǎn)的ATmega128L作為主控MCU。整個系統(tǒng)的結(jié)構(gòu)框圖如1所示。PC機通過USB接口實現(xiàn)對硬盤的管理和對MP3歌曲、文檔等數(shù)據(jù)信息的存儲。系統(tǒng)啟動后,首先將硬盤上的一部分MP3歌曲送入Flash中存儲,由MCU控制將儲存于Flash中歌曲的碼流信息送入MP3解碼芯片中解碼,并產(chǎn)生解碼輸出。在系統(tǒng)的DAC模塊把解碼輸出轉(zhuǎn)換為模擬音頻聲音后,經(jīng)一級音頻放大并驅(qū)動耳機,實現(xiàn)MP3歌曲的播放功能。在按鍵的控制下,通過LCD中菜單選項的選擇,實現(xiàn)對歌曲播放模式、聲音音效、液晶對比度的調(diào)度以及歌曲選擇等功能;在播放的同時,LCD上顯示的信息除滾動的歌曲名稱、演唱者、碼流率等ID3信息外,還包括系統(tǒng)供電電池的電量及歌曲播放模式等圖標。 系統(tǒng)包括主控MCU、硬盤、Flash緩存、按鍵、LCD、解碼器和D/A轉(zhuǎn)換器等幾部分。 2 ATmega128L的主要特點 ATmega128L內(nèi)核為AVR,具有以下特點: *先進的RISC架構(gòu),內(nèi)部具有133條功能強大的指令系統(tǒng),而且大部分指令是單周期;32個8位通用工作寄存器+外圍接口控制寄存器。 *內(nèi)部有128KB在線可重復編程Flash、4KBEEPROM和4KB SRAM。 *有53個I/O引腳,每個I/O口分別對應輸入、輸出、功能選擇、中斷等多個寄存器,使功能口和I/O口可以復用,大大增強了端口功能和靈活性,提高了對外圍的開發(fā)能力。 *內(nèi)部有2個8位定時器/計數(shù)器和2個具有比較/捕捉寄存器的16位定時器/計數(shù)器;1個具有獨立振蕩器的實時計數(shù)器;1個可編程看門狗定時器;2通道8位PWM通道;8路10位A/D轉(zhuǎn)換器;雙向I2C串行總線接口;主/從SPI串行接口;可編程串行通信接口;片內(nèi)精確的模擬比較器等。 *帶JTAG接口。通過該口利用JTAG仿真器,可以很方便地實現(xiàn)程序的在線調(diào)試和仿真,編譯調(diào)試正確的代碼,通過JTAG口直接寫入ATmega128的Flash代碼區(qū)中。另外,支持Bootloader功能,即MCU上電后,首先通過駐留在Flash中的BootLoader程序,將存儲在外部媒介中的應用程序搬移到ATmega128L的Flash代碼區(qū)。搬移成功后自動去執(zhí)行代碼,完成自啟動。這對于產(chǎn)品化后程序的升級和維護提供了極大的方便。 *電源電壓為2.7~5.5V 3 系統(tǒng)硬件設計中的各個接口模塊 3.1 MCU與硬盤的接口設計 系統(tǒng)設計中選擇2.5英寸的筆記本硬盤作為存儲介質(zhì)。筆記本硬盤接口是標準并行IDE接口。MCU與硬盤的接口電路如圖2所示。ATmega128L的PA、PC口與硬盤的16根數(shù)據(jù)線相連。IDE接口是基于寄存器結(jié)構(gòu)的,所有對硬盤的控制操作均通過對相應寄存器操作來實現(xiàn)。IDE接口的硬盤驅(qū)動器有16個寄存器,分為2段,每段有8個寄存器,兩段寄存器的選擇由CS0、CS1來確定,通過DA0、DA1、DA2來選通每個段的8個寄存器。寄存器如表1所列。IDE接口有兩種傳輸模式:PIO模式和DMA模式。在本系統(tǒng)的設計中,采用PIO傳輸模式。PIO傳輸模式由處理器負責信息的傳輸,硬盤以扇區(qū)為單位與處理器進行數(shù)據(jù)交換;在進行扇區(qū)讀寫時,一次通過端口的數(shù)據(jù)為16位。8G以上的硬盤支持CHS、LBA兩種尋址方式,尋址方式的選擇通過驅(qū)動器/磁頭寄存器的第6位控制。通過LBA尋址方可以實現(xiàn)對硬盤的每一個物理地址的訪問。
3.2 Flash接口 作為便攜式產(chǎn)品的設計,功耗問題是一個要重點解決的問題。作業(yè)存儲介質(zhì)的硬盤,其工作電壓為5V,最大功耗可達20W,硬盤工作時間的長短對系統(tǒng)功耗將產(chǎn)生直接的影響。由于硬盤提供了STANDBY、IDLE、SLEEP等幾種低功耗運行模式,因此在系統(tǒng)設計過程中,考慮使用一片F(xiàn)lash存儲器作業(yè)緩存,即首先將存儲硬盤中的一部分音頻壓縮文件送入Flash中存儲(文件數(shù)目由Flash的容量決定),然后控制硬盤進入SLEEP低功耗模式。存儲在Flash中的數(shù)據(jù)進入解碼芯片中進行解碼。待Flash中所有音頻文件播放完,則喚醒硬盤重新進入正常的工作模式,啟動下一次的數(shù)據(jù)緩存任務。 3.3 解碼和D/A接口 壓縮音頻數(shù)據(jù)的解碼和D/A轉(zhuǎn)換采用Micronas Intermetall公司專為個人音頻播放器設計的MAS3507D和DAC3550A芯片組。MAS3507D是單芯片解碼器,數(shù)據(jù)的處理由內(nèi)部嵌入的RISC DSP核來完成。單芯片上嵌入的還有電源管理器、程序存儲器、時鐘管理器、音頻基帶處理器以及I2S、I2C、PIO多種接口。采用集成I2S的音頻輸出方式,可方便地與DAC3550A連接。在芯片內(nèi)集成了數(shù)字、音量、立體聲、聲道混合、低音、高音控制等功能。DAC3550A是與MAS3507D匹配的高質(zhì)量的音頻DAC,內(nèi)部集成了耳機放大器;內(nèi)置時鐘振蕩器并由CLKOUT端提供給MAS3507D;具有I2S總線音頻輸入和I2C控制總線;具有低功耗模式。它把MP3播放機中D/A轉(zhuǎn)換和音頻放大兩部分集成在一起,非常適合于便攜式MP3播放機的開發(fā)。 圖3所示為MCU、MAS3507D和DAC3550A的接口示意圖。ATmega128L通過SPI串行總線與解碼器MAS3507D的I2S接口相連,實現(xiàn)音頻壓縮碼流的傳輸。當解碼芯片MAS3507D需要數(shù)據(jù)碼流時,通過DEMAND口向MCU發(fā)出請求信號。解壓縮后的音頻碼流通過MAS3507D的I2S的輸出端口送入DAC3550A進行D/A轉(zhuǎn)換和放大。MAS3507D和DAC3550A都具有I2C總線,Atmega128L通過I2C總線實現(xiàn)對MAS3507D和DAC3550A各個寄存器的讀寫控制,完成音量、音效等調(diào)節(jié)。 3.4 其它模塊接口 人機界面是便攜式系統(tǒng)的重要組成部分,尤其對本系統(tǒng),由于硬盤可以存儲海量的歌曲,如果能夠?qū)τ脖P中的歌曲進行有效管理和搜索,無疑會大大提高系統(tǒng)使用的方便性和靈活性?;谠摽紤],本系統(tǒng)采用了多個按鍵和1塊點陣式LCD,用于控制和顯示。LCD液晶模塊采用Solomon公司的SSD1815。SSD1815是單片CMOS LCD控制器,有串/并行兩種控制方式。本系統(tǒng)中采用串行控制方式。SSD1815內(nèi)部有一個用于存放圖形點陣信息的存儲區(qū),將要顯示的圖形或字符的點陣信息送入該區(qū)域即可完成顯示。由于控制的復雜性,系統(tǒng)需要羅多的按鍵,為了盡可能地減少I/O口的占用和降低控制復雜性,對按鍵的查詢采用I2C串行口,通過一片I2C擴展芯片PCF8574,可以實現(xiàn)對多個按鍵的查詢。 筆記本硬盤是MP3文件的存儲介質(zhì),由于其容量較大,PC機通過USB接口對硬盤進行管理和操作時采用FAT32文件系統(tǒng)。文件以簇號鏈的形式在硬盤上存放,由磁盤分區(qū)信息和文件分配表的相關(guān)信息計算出文件在硬盤中的起始地址,通過硬盤數(shù)據(jù)口將該地址的數(shù)據(jù)讀出來。連續(xù)的讀操作將實現(xiàn)一個文件的讀取。 在該系統(tǒng)中,MCU需要完成數(shù)據(jù)從硬盤到Flash緩沖區(qū)的拷貝、送Flash中的壓縮音頻數(shù)據(jù)流給解碼器解碼、按鍵的監(jiān)測、根據(jù)按鍵的控制對歌曲播放模式和歌曲相關(guān)信息的顯示等幾個主要任務。考慮到Flash的讀寫速度較慢,為保證歌曲的連續(xù)播放,在SRAM中劃分2×512字節(jié)的區(qū)域作為二級緩存,用于暫存從Flash傳送過來的音頻數(shù)據(jù)。根據(jù)解碼器的反饋需求信號,從該緩沖區(qū)中取數(shù)送給解碼器進行解碼。歌曲的播放具有實時性的要求,即如果解碼芯片的DEMAND信號為高,MCU必須停止目前正在執(zhí)行的任務來響應發(fā)送碼流的任務。為保證數(shù)據(jù)碼流的不間斷,在系統(tǒng)軟件設計中,將硬盤→Flash、Flash→RAM的數(shù)據(jù)緩沖任務以及給解碼芯片發(fā)送碼流的任務用中斷來實現(xiàn)。系統(tǒng)的軟件設計流程如圖4所示。由于給解碼器發(fā)送碼流的任務實時性要求最高,故單獨用一中斷實現(xiàn)該任務,且設置該中斷的優(yōu)先級最高。硬盤→Flash、Flash→RAM的數(shù)據(jù)緩沖任務作為另一中斷的中斷服務程序;而按鍵檢測、液晶顯示和電源管理作為前臺的三個任務,MCU輪流分配給各個任務使用。這樣的設計既能滿足歌曲播放的實時性要求,又能對按鍵檢測、顯示等其它任務作出響應。模塊化設計和分時操作系統(tǒng)思想在軟件設計中得到了充分的體現(xiàn)。 結(jié)語 本文討論了基于ATmega128L的大容量MP3播放機的設計思路,對系統(tǒng)中的各個模塊接口作了簡要的描述,并提出了系統(tǒng)軟件設計的總體思想。以上軟硬件設計思想已經(jīng)實現(xiàn)產(chǎn)品化。該產(chǎn)品功耗低、功能強,性能穩(wěn)定可靠,具有友好的用戶界面和操作性。 |