电竞比分网-中国电竞赛事及体育赛事平台

分享

單片機(jī)創(chuàng)意小制作,ARM7音樂(lè)播放器

 嶺南書(shū)館1 2019-03-27

在校學(xué)習(xí)期間,教我單片機(jī)的王老師時(shí)常提起ARM處理器。她提醒我說(shuō),我們是計(jì)算機(jī)專(zhuān)業(yè)的,應(yīng)該研究嵌入式系統(tǒng)。起因是,我喜歡單片機(jī),而單片機(jī)偏偏在我們學(xué)校是電子系的專(zhuān)業(yè)。把單片機(jī)玩轉(zhuǎn)了,對(duì)于計(jì)算機(jī)專(zhuān)業(yè)的我,就顯得偏離專(zhuān)業(yè)了。那時(shí),我還是頭腦一熱,在網(wǎng)上買(mǎi)了一個(gè)AT91SAM7S64最小系統(tǒng)。但是,一直沒(méi)有像樣地玩它。只是斷斷續(xù)續(xù)地寫(xiě)了幾個(gè)簡(jiǎn)單的程序,像學(xué)習(xí)51單片機(jī)一樣學(xué)它。隨著時(shí)間的推移,它被遺忘在一邊了。不過(guò)這幾天在整理零碎時(shí),我又開(kāi)始注意到它了。

這次制作的主題是——做一款能夠媲美山寨CD機(jī)的音樂(lè)播放器。隨著MP3、MP4、手機(jī)、PMP等便攜播放器的出現(xiàn),在市場(chǎng)上很少看到專(zhuān)門(mén)賣(mài)CD機(jī)的柜臺(tái)了。想想也是,現(xiàn)在馬路上很少看到有人拿個(gè)碩大的CD機(jī)聽(tīng)音樂(lè)。最主要的原因,估計(jì)是CD光盤(pán)尺寸偏大,攜帶不便,所以現(xiàn)在聽(tīng)MP3的人越來(lái)越多了。但是,不管怎樣,CD的音質(zhì)還是相當(dāng)好的。還記得去年,我制作了一款M8音樂(lè)播放器,朋友聽(tīng)了后,直接評(píng)價(jià)那音質(zhì)不行。我解釋說(shuō),那是8位的播放器,還是被他鄙視了。太傷我心了。于是,我又琢磨著做一款新的播放器,希望它超過(guò)普通MP3的音質(zhì)。這回做好后,又特意給那位朋友試聽(tīng)了一下,這次他評(píng)價(jià)說(shuō),這音質(zhì)的確超過(guò)普通MP3了。下面我會(huì)和大家分享制作它的過(guò)程。

主要芯片介紹

這次制作的音樂(lè)播放器使用了TI公司的PCM1770,它是24位低功耗立體聲音頻DAC。由于它能夠直接驅(qū)動(dòng)耳機(jī),所以選擇它作為音頻解碼器。當(dāng)耳機(jī)的阻抗為16Ω時(shí),它的輸出功率為13mW。PCM1770使用的電源范圍為1.6~3.6V,支持標(biāo)準(zhǔn)的I2S音頻接口。對(duì)DAC的操作是通過(guò)SPI接口實(shí)現(xiàn)的。它的音量也由軟件控制,音量控制一共分為64個(gè)等級(jí)。

電路的處理器使用Atmel公司的AT91SAM7S64。它有64KB的FLASH程序存儲(chǔ)器,16KB的內(nèi)部SRAM,是高性能的32位RISC架構(gòu)的ARM7處理器,最高工作頻率可達(dá)55MHz。它一共有64個(gè)引腳,PIO控制的I/O驅(qū)動(dòng)電流可以達(dá)到8mA,PA0~PA3可以達(dá)到16mA,但所有I/O電流之和不能超過(guò)150mA。這款處理器具有SSC同步串行控制器,支持I2S標(biāo)準(zhǔn),也有SPI接口,可以設(shè)定8到16位的數(shù)據(jù)長(zhǎng)度,每個(gè)SPI接口有4個(gè)片選線(xiàn)。這樣,處理器與DAC解碼器的數(shù)據(jù)傳輸、控制命令的發(fā)送都可以在硬件上連接實(shí)現(xiàn)。

可實(shí)現(xiàn)功能

這個(gè)制作完成后,將CD音質(zhì)的WAV文件復(fù)制到SD卡內(nèi),文件必須存放在根目錄下。程序通過(guò)AT91SAM7S64的SSC串行控制器,把音頻的數(shù)據(jù)流通過(guò)SSC接口傳輸?shù)絋I的音頻DAC上。這樣,耳機(jī)就播放出動(dòng)聽(tīng)的音樂(lè)了。播放器使用普通的微動(dòng)按鈕控制,一共用了5個(gè)按鈕,分別實(shí)現(xiàn)音量、選曲、播放、暫停等控制。

工作原理

整個(gè)制作,由圖11.1所示的AT91SAM7 S64 最小系統(tǒng)(左邊)、洞洞板(中間)和轉(zhuǎn)接成DIP封裝的PCM1770 DAC(右邊)組成。

單片機(jī)創(chuàng)意小制作,ARM7音樂(lè)播放器

圖11.1 制作所需的各部分實(shí)物

這款音樂(lè)播放器的工作原理并不復(fù)雜。主要由5大部分組成:

(1)AT91SAM7S64最小系統(tǒng),比51單片機(jī)最小系統(tǒng)稍微復(fù)雜些。

(2)PCM1770 I2S音頻解碼器,用于驅(qū)動(dòng)耳機(jī)或音響,播放音樂(lè)。

(3)SD卡存儲(chǔ)卡,存放44.1kHz/16位的WAV格式的音樂(lè)文件。

(4)5個(gè)普通的微動(dòng)按鈕,功能分別為:控制音量、前后選擇音樂(lè)和播放/暫停音樂(lè)。

(5)簡(jiǎn)單的用穩(wěn)壓芯片將5V的USB電源轉(zhuǎn)換成3.3V的電路工作電源。

音樂(lè)播放器的原理圖如圖11.2所示,可分為5大部分:左上角為穩(wěn)壓電路,左下角為5個(gè)微動(dòng)按鈕,右上角為SD卡,右下角為T(mén)I的音樂(lè)DAC芯片,中間的就是AT91SAM7S64的最小系統(tǒng)了。

1.穩(wěn)壓電源

單片機(jī)創(chuàng)意小制作,ARM7音樂(lè)播放器

圖11.2 電路原理圖

它使用1117-3.3V的穩(wěn)壓芯片,把USB接口的5V電源轉(zhuǎn)換成3.3V。4個(gè)電容起到濾波作用。穩(wěn)壓芯片可以采用SPX1117-3.3V、LM1117-3.3V或AMS1117-3.3V。如果使用有極性的電解電容,不要粗心地把正負(fù)極性弄反。

2. 5個(gè)微動(dòng)按鈕

這5個(gè)微動(dòng)按鈕排列成經(jīng)典的上下、左右、中間的十字結(jié)構(gòu),它的控制功能大家很容易理解,分別是上下為音量控制、左右為切換歌曲控制、中間為暫停/繼續(xù)播放控制。

3. SD 卡

使用了它的SPI接口,直接和ATM7的SPI接口的NPCS0、MOSI、MISO、SPCK連接,在程序中我使用了系統(tǒng)時(shí)鐘16.9344MHz作為SPCK時(shí)鐘,這樣它的傳輸速率才可以超過(guò)CD音樂(lè)格式標(biāo)準(zhǔn)的數(shù)據(jù)流速度。

4. TI的DAC

這是這個(gè)系統(tǒng)最關(guān)鍵的地方,它需要SPI接口控制它,同時(shí)又需要I2S接口給它提供數(shù)據(jù)流。它的SPI控制接口與AT91SAM7S64的NPCS1、MOSI、MISO、SPCK引腳相連,程序通過(guò)拉低 NPCS0 與 NPCS1 這兩個(gè)引腳來(lái)片選 SD 卡或 DAC 芯片。在傳輸數(shù)據(jù)時(shí),可以拉低不同的片選信號(hào)來(lái)指定傳輸?shù)姆较?。DAC的LRCK、DATA、BCK接口分別與RAM7的TF、TD、TK連接。但由于DAC芯片還需要系統(tǒng)時(shí)鐘,它可以是128fs、192fs、256fs或384fs(fs為音樂(lè)的采樣率,如44.1kHz采樣率)。所以,我通過(guò)ARM7的PCK0引腳輸出384fs頻率的時(shí)鐘。最后,還可以通過(guò)控制DAC的PD引腳為0,讓DAC休眠,減低它的功耗。

5. AT91SAM7S64 最小系統(tǒng)

正確連接好處理器各內(nèi)部控制器的電源,如VDDFALSH、VDDIO、VDDCORE、VDDPLL等,確認(rèn)USB的D+上拉電阻到3.3V。在播放44.1kHz音樂(lè)時(shí),確認(rèn)使用的是16.9344MHz晶體(在下載程序時(shí)使用18.432MHz)。最后,在AT91SAM7S64的PLL RC引腳上連接 PLL濾波用的電容。這樣,ARM7上電后就能運(yùn)行代碼了。

AT91SAM7S64的電源系統(tǒng)比較復(fù)雜,但還好僅僅需要單一的3.3V電壓,即可解決所有供電問(wèn)題。電源使用USB的5V電壓,經(jīng)過(guò)1117-3.3V穩(wěn)壓芯片穩(wěn)壓,然后給DAC、AT91SAM7S64、SD卡供電。AT91SAM7S64還需要1.8V的電源電壓,好在它內(nèi)部集成的電壓調(diào)節(jié)功能,能輸出1.8V電壓。

AT91SAM7S64處理器只要正確連接好需要的2種電源電壓(3.3V、1.8V),焊接上18.432MHz的外部晶體,并且連接上簡(jiǎn)單的USB接口電路,在物理上就能夠下載程序了。注意,當(dāng)使用18.432MHz的外部晶體時(shí),燒錄文件才能通過(guò)USB接口下載。但由于音樂(lè)播放器需要16.9344MHz的外部晶體,才能以正常的速率播放CD采樣率(44.1kHz)的音樂(lè)。因此,下載好程序后,還需要切換晶體。這一步麻煩些。

程序首先初始化AT91SAM7S64的SPI接口和SSC接口,并使能PIOA引腳(連接按鈕的引腳)和SSC接口(I2S接口)的中斷。等初始化接口完畢后,程序才能通過(guò)已經(jīng)正確配置的接口,初始化音頻DAC、SD卡設(shè)備。等這些操作完成后,程序會(huì)通過(guò)讀取SD卡的特定扇區(qū),識(shí)別文件系統(tǒng)種類(lèi),并搜索根目錄下的第1個(gè)音樂(lè)文件。最后,通過(guò)按鈕控制,實(shí)現(xiàn)音樂(lè)的播放。

使用方法

先要格式化SD卡,使用FAT(FAT12與FAT16的合集)或FAT32都可以。然后,復(fù)制44.1kHz、16位的WAV音樂(lè)到SD卡上(注意,請(qǐng)復(fù)制到根目錄)。插上USB電源后,按中間的播放/暫停按鈕播放音樂(lè)(音樂(lè)播放器在上電時(shí)不能自動(dòng)播放,還需要按下播放/暫停按鈕才能播放)。

燒錄文件的下載與使用

1. 引導(dǎo)代碼簡(jiǎn)介

AT91SAM7S64內(nèi)部含有一段叫SAM-BA BOOT的程序,它在出廠(chǎng)時(shí)已被固化,不會(huì)被擦除,也不會(huì)被改變。在特定的條件下,它會(huì)被復(fù)制到內(nèi)部Flash中,這個(gè)復(fù)制的過(guò)程叫系統(tǒng)程序恢復(fù)。系統(tǒng)程序恢復(fù)后,下一次上電或手動(dòng)復(fù)位時(shí),SAM-BA BOOT代碼就會(huì)運(yùn)行了,它使用片上集成的USB或DEBUG串口與上位機(jī)通信,實(shí)現(xiàn)自編程。

2. 恢復(fù)啟動(dòng)代碼

在PA0、PA1、PA2、TST這4個(gè)引腳保持高電平的狀態(tài)下,上電并等待10s。由于上電時(shí)PA0、PA1、PA2默認(rèn)上拉電阻使能了,所以這3個(gè)引腳可以懸空。而TST引腳內(nèi)部下拉電阻使能,因此需要通過(guò)外部電路將TST引腳拉高。

10秒后當(dāng)芯片再次上電時(shí)(記得恢復(fù)TST引腳為低電平),就會(huì)運(yùn)行SAM-BA BOOT程序了。這時(shí),把芯片的USB接口連接上電腦,電腦上就會(huì)發(fā)現(xiàn)新硬件,并自動(dòng)安裝驅(qū)動(dòng)。當(dāng)然,前提是你在電腦上已經(jīng)安裝了SAM-BA ISP下載軟件。

3. 關(guān)于 ERASE 引腳

上電時(shí)ERASE引腳的上拉可以用來(lái)擦除內(nèi)部Flash的安全位,并且會(huì)在50ms的時(shí)間內(nèi)完成。它的作用是使整個(gè)內(nèi)部Flash存儲(chǔ)器的內(nèi)容被清除掉。當(dāng)完成這些操作后,安全位才會(huì)清除。

當(dāng)你使用SAM-BA對(duì)器件編程后,執(zhí)行了Enable Security Bit操作,即編程了Flash安全位,那么下一次恢復(fù)系統(tǒng)程序前必須拉高ERASE引腳。

4. SAM-BA 軟件使用

首先,安裝SAM-BA ISP軟件,它會(huì)連同驅(qū)動(dòng)一起安裝的。這樣,當(dāng)把已經(jīng)恢復(fù)啟動(dòng)代碼的ARM7插入U(xiǎn)SB接口時(shí),驅(qū)動(dòng)即可自動(dòng)安裝,并在設(shè)備管理器里多出如圖11.3所示的設(shè)備。

然后,雙擊軟件運(yùn)行,出現(xiàn)圖11.4所示的運(yùn)行畫(huà)面。選擇圖11.4所示的連接方式“\usbARM0”和開(kāi)發(fā)環(huán)境“AT91SAM7S64-EK”后,按“Connect”后連接。接著,燒錄軟件的主界面就會(huì)跳出,如圖11.5所示。

單片機(jī)創(chuàng)意小制作,ARM7音樂(lè)播放器

圖11.3

單片機(jī)創(chuàng)意小制作,ARM7音樂(lè)播放器

圖11.4

單片機(jī)創(chuàng)意小制作,ARM7音樂(lè)播放器

圖11.5

然后,點(diǎn)擊“Send File”按鈕,選擇燒錄用的BIN文件。最后,點(diǎn)擊“Send”發(fā)送即可。期間會(huì)彈出扇區(qū)解鎖確認(rèn)和扇區(qū)鎖定確認(rèn)對(duì)話(huà)框,點(diǎn)擊“Yes”即可。

幾秒后,程序就燒錄完畢了。重新上電后,音樂(lè)播放器的代碼就能成功運(yùn)行了。

制作簡(jiǎn)介

其實(shí),整個(gè)制作對(duì)剛學(xué)習(xí)ARM7處理器的人也不難。買(mǎi)一個(gè)AT91SAM7S64的最小系統(tǒng),它的32個(gè)PIO口一般都會(huì)引出來(lái)的,并用插針連接。只需要自己做底板,焊接好插座,就能方便地合并了。

我做的這個(gè)底板是用萬(wàn)用板制作的,尺寸大約是10cm×10cm。仔細(xì)觀(guān)察的朋友,還會(huì)發(fā)現(xiàn),這個(gè)底板的功能不僅僅是特意用來(lái)做音樂(lè)播放器的,還可以做許多關(guān)于ARM7的小實(shí)驗(yàn)。

底板的反面我用絕緣導(dǎo)線(xiàn)連接線(xiàn)路,這也是我目前喜歡的做法(見(jiàn)圖11.6)。如果覺(jué)得難看,大家還可以自制PCB的底板,這樣也能輕松焊接。

為了使自己的制作更美觀(guān),我又在網(wǎng)上買(mǎi)了片1.8mm厚的有機(jī)玻璃板。用小鋸切割成10cm×10cm大小后,用砂紙仔細(xì)打磨。打磨好后在合適的位置上鉆孔,最后用2mm的螺絲和對(duì)應(yīng)的銅座固定,這個(gè)制作的外觀(guān)就完成了(見(jiàn)圖11.7)。

大家會(huì)發(fā)現(xiàn)制作的正面還有一根飛線(xiàn),這是由于我買(mǎi)的最小系統(tǒng),3.3V的電源插針沒(méi)有向下引出,只好拿了條杜邦線(xiàn)連接到底板了。

單片機(jī)創(chuàng)意小制作,ARM7音樂(lè)播放器

圖11.6 用絕緣導(dǎo)線(xiàn)連接底板背面的線(xiàn)路

單片機(jī)創(chuàng)意小制作,ARM7音樂(lè)播放器

圖11.7 用有機(jī)玻璃制作播放器的外殼

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多