在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)實(shí)現(xiàn)MP3播放的方法

      單片機(jī)實(shí)現(xiàn)MP3播放的方法

      作者: 時(shí)間:2016-12-02 來源:網(wǎng)絡(luò) 收藏

      3)VS1003的初始化

      如其它芯片一樣,初始化對(duì)于VS1003來說同樣是極其重要的。初始化的過程大致是這樣的:

      1.硬件復(fù)位:接XRESET拉低

      2.延時(shí),將XDCS、XCS、XRESET置高

      3.向MODE中寫入0X0804

      4.等待DREQ為高

      5.設(shè)置VS1003的時(shí)鐘:SCI_CLOCKF=0x9800,3倍頻

      6.設(shè)置VS1003的采樣率:SPI_AUDATA=0xbb81,采樣率48k,立體聲

      7.設(shè)置重音:SPI_BASS=0x0055

      8.設(shè)置音量:SCI_VOL=0x2020

      9.這一步被很多人忽視,向VS1003發(fā)送4個(gè)字節(jié)的無效數(shù)據(jù),用以啟動(dòng)SPI發(fā)送

      實(shí)現(xiàn)代碼如下:

      void Mp3Reset(void)

      {

      XRESET=0;

      delay(100);

      XDCS=XCS=XRESET=1;

      wr_commad(0x00,0x08,0x04);

      delay(10);

      DREQ=1;

      while(!DREQ);

      wr_commad(0x03,0x98,0x00);

      delay(10);

      wr_commad(0x05,0xbb,0x81);

      delay(10);

      wr_commad(0x02,0x00,0x55);

      delay(10);

      wr_commad(0x0b,VOL_VALUE,VOL_VALUE); // 音量

      delay(10);

      spi_write(0);

      spi_write(0);

      spi_write(0);

      spi_write(0);

      }

      在進(jìn)行了正確的初始化后,還要著重檢查一下VS1003的模擬部分是否正常

      將VS1003的所有DVDD、AVDD管腳以及XRESET、TEST(第32個(gè)引腳)接+3.0V,然后測(cè)量RCAP引腳,它應(yīng)該是1.3V左右,否則芯片模擬部分未正常工作。

      4)正弦測(cè)試

      在上面的各種操作與檢測(cè)沒有問題后,就可以讓VS1003放出聲音了。可以利用VS1003自帶的正弦測(cè)試對(duì)音頻輸出進(jìn)行測(cè)試。要啟動(dòng) VS1003的正弦測(cè)試,需要向其寫入正弦測(cè)試命令。這里提供啟動(dòng)正弦測(cè)試的流程,在真實(shí)的硬件運(yùn)行通過,最終的效果是在耳機(jī)中聽到單一頻率的正弦音(頻率可以通過程序來更改)。

      具體流程如下:

      1.進(jìn)入VS1003的測(cè)試模式:SPI_MODE=0X0820

      2.等待DREQ為高

      3.將XDCS接低,而XCS要置高,選擇VS1003的數(shù)據(jù)接口

      4.向VS1003發(fā)送正弦測(cè)試命令:0X53 0XEF 0X6E 0X30 0X00 0X00 0X00 0X00

      其中0X30為頻率,用戶可以修改為其它值

      5.延時(shí)一段時(shí)間

      6.退出正弦測(cè)試,發(fā)送命令:0X45 0X78 0X69 0X74 0X00 0X00 0X00 0X00

      7.延時(shí)一段時(shí)間

      8.循環(huán)以上流程

      實(shí)現(xiàn)代碼如下:

      void Sintest(unsigned char x)

      {

      wr_commad(0x00,0x08,0x20);

      DREQ=1;

      while(!DREQ);

      XDCS=0;XCS=1;

      spi_write(0x53);

      spi_write(0xef);

      spi_write(0x6e);

      spi_write(x);

      spi_write(0);

      spi_write(0);

      spi_write(0);

      spi_write(0);

      delay(5000);

      spi_write(0x45);

      spi_write(0x78);

      spi_write(0x69);

      spi_write(0x74);

      spi_write(0);

      spi_write(0);

      spi_write(0);

      spi_write(0);

      delay(5000);

      XDCS=1;

      }

      如果能夠通過這一步,就說明你的VS1003已經(jīng)做好了為你播放MP3的準(zhǔn)備了。下面的工作 就是將MP3文件的數(shù)據(jù)有條不紊地發(fā)給VS003,讓它來為你完成MP3的解碼和播放任務(wù) 。

      5)MP3文件數(shù)據(jù)寫入

      以上的對(duì)VS1003的初始化與測(cè)試都通過后,現(xiàn)在就可以給它發(fā)送MP3文件了。但是這時(shí)就又出現(xiàn)一個(gè)新的問題。MP3文件通常是比較大的,小的也要1M~2M,如果使單片機(jī)內(nèi)部的Flash Rom的話,容量是遠(yuǎn)遠(yuǎn)不夠的。需要有一種大容量的存儲(chǔ)器來作為MP3文件的載體。在筆者的調(diào)試系統(tǒng)中采用了SD卡(256M)、U盤(1G)與移動(dòng)硬盤(40G)來存儲(chǔ)MP3文件。關(guān)于SD卡與U盤的讀寫方法可以參看相關(guān)章節(jié)。這些大容量的存儲(chǔ)設(shè)備通常也是按照扇區(qū)來進(jìn)行讀寫的,但在實(shí)際的應(yīng)用中更多的是結(jié)合FAT32等文件系統(tǒng)來進(jìn)行文件讀寫。文件系統(tǒng)部分可以參照《FAT32的存儲(chǔ)機(jī)制及其在單片機(jī)中的實(shí)現(xiàn)》。

      這里拋開存儲(chǔ)介質(zhì)不談,只談數(shù)據(jù)的寫入方法。其實(shí)寫入數(shù)據(jù)的方法十分簡(jiǎn)單。主要就是看DREQ信號(hào),在VS1003的FIFO能夠接受數(shù)據(jù)的時(shí)候輸出高電平。每次可以寫入32個(gè)字節(jié)的數(shù)據(jù)。而DREQ變低時(shí),單片機(jī)就要停止數(shù)據(jù)的發(fā)送。

      具體的寫數(shù)據(jù)的方法如下:

      1.將XDCS拉低

      2.等待DREQ為高

      3.通過SPI寫入數(shù)據(jù)

      4.在文件沒有結(jié)束前不斷重復(fù)2與3操作

      5.在所有的數(shù)據(jù)都發(fā)送完畢后,最后發(fā)送2048個(gè)無效字節(jié),用以清除VS1003的數(shù)據(jù)緩沖區(qū)

      6.將XDCS置高

      以下是筆者的程序中的寫數(shù)據(jù)部分:

      XDCS=0;

      for(j=621;j<2783;j++)

      {

      for(k=0;k<8;k++)

      {

      MMC_get_data_LBA(j,64,get);

      for(i=0;i<64;i++)

      {

      DREQ=1;

      while(!DREQ);

      spi_write(get[i]);

      //delay(60000);

      }

      }

      }

      for(temp=0;temp<2048;temp++)

      {

      DREQ=1;

      while(!DREQ);

      spi_write(0);

      }

      XDCS=1;


      上一頁 1 2 3 下一頁

      關(guān)鍵詞: 單片機(jī)MP3播

      評(píng)論


      技術(shù)專區(qū)

      關(guān)閉