<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          6)VS1003的功能寄存器

          VS1003共有16個(gè)16位的寄存器,地址分別為0X0~0XF;除了模式寄存器(MODE,0X0)和狀態(tài)寄存器(STATUS,0X1)在復(fù)位后的初始值分別為0X800和OX3C外,其余的寄存器在VS1003初始化后的值均為0。下面將VS1003各寄存器逐一進(jìn)行介紹。

          1.MODE(地址:0X0 可讀寫(xiě))

          bit0:SM_DIFF

          SM_DIFF=0 正常音頻相位

          SM_DIFF=1 左聲道反轉(zhuǎn)

          當(dāng)SM_DIFF置位時(shí),VS1003將左聲道反相輸出,立體聲輸入將產(chǎn)生環(huán)繞效果,對(duì)于單聲道輸入將產(chǎn)生差分(反相)左/右聲道信號(hào)。

          bit1:SM_SETTOZERO

          置零。

          bit2:SM_RESET

          SM_RESET=1,VS1003軟復(fù)位。軟復(fù)位之后該位會(huì)自動(dòng)清零。

          bit3:SM_OUTOFWAV

          SM_OUTOFWAV=1,停止WAV解碼。

          當(dāng)你要中途停止WAV、WMA或者M(jìn)IDI文件的解碼時(shí),置位SM_OUTOFWAV,并向VS1003持續(xù)發(fā)送數(shù)據(jù)(對(duì)于WAV文件發(fā)送0)直到將SM_OUTOFWAV清零;同時(shí)SCI_HIDAT1也將被清零。

          bit4:SM_PDOWN

          SM_PDOWN=1,軟件省電模式,該模式不及硬件省電模式(可由VS1003的XRESET來(lái)激活)。

          bit5:SM_TESTS

          SM_TESTS=1,進(jìn)入SDI測(cè)試模式。

          bit6:SM_STREAM

          SM_STREAM=1,使能VS1003的流模式。

          bit7:SM_PLUSV

          SM_PLUSV=1,MP3+V解碼使能。

          bit8:SM_DACT

          SM_DACT=0,SCLK上升沿有效;SM_DACT=1,SCLK下降沿有效。

          bit9:SM_SDIORD

          SM_SDIORD=0,SDI總線字節(jié)數(shù)據(jù)MSB在前,即須先發(fā)送MSB;

          SM_SDIORD=1,SDI總線字節(jié)數(shù)據(jù)LSB在前,即須先發(fā)送LSB;

          該位的設(shè)置不會(huì)影響SCI總線。

          bit10:SM_SDISHARE

          SM_SDISHARE=1,SDI與SCI將共用一個(gè)片選信號(hào)(同時(shí)SM_SDINEW=1),即將XDCS與XCS這兩根信號(hào)線合為一條,能省去一個(gè)IO口。

          bit11:SM_SDINEW

          SM_SDINEW=1,VS1002本地模式(新模式)。VS1003在啟動(dòng)后默認(rèn)進(jìn)入該模式。(這里所說(shuō)的模式指的是總線模式。)

          bit12:SM_ADPCM

          SM_ADPCM=1,ADPCM錄音使能。

          同時(shí)置位SM_ADPCM和SM_RESET將使能VS1003的IMA ADPCM錄音功能。

          bit13:SM_ADPCM_HP

          SM_ADPCOM_HP=1,使能ADPCM高通濾波器。同時(shí)置位SM_ADPCM_HP、SM_ADPCM和SM_RESET將開(kāi)啟ADPCM錄音用高通濾波器,對(duì)錄音時(shí)的背景噪音有一定的抑制作用。

          bit14:SM_LINE_IN

          錄音輸入選擇,SMLINE_IN=1,選擇線入(line in);SM_LINE_IN=0,選擇麥克風(fēng)輸入(默認(rèn))。

          2.SCI_STATUS(地址:0X1 可讀寫(xiě))

          SCI_STATUS為VS1003的狀態(tài)寄存器,提供VS1003當(dāng)前狀態(tài)信息。

          3.SCI_BASS(地址:0X2 可讀寫(xiě))

          重音/高音設(shè)置寄存器。

          VS1003的內(nèi)置的重音增強(qiáng)器VSBE是種高質(zhì)量的重音增強(qiáng)DSP算法,能夠最大限度的避免音頻削波。當(dāng)SB_AMPLITUDE(bit:7~4)不為零時(shí),重音增強(qiáng)器將使能??梢愿鶕?jù)個(gè)人需要來(lái)設(shè)置SB_AMPLITUDE。例如,SCI_BASS=0x00f6,即對(duì)60Hz以下的音頻信號(hào)進(jìn)行 15dB的增強(qiáng)。當(dāng)ST_AMPLITUDE(bit:15~12)不為零時(shí),高音增強(qiáng)將使能。例如,SCI_BASS=0x7a00,即10kHz以上的音頻信號(hào)進(jìn)行10.5dB的增強(qiáng)。

          4.SCI_CLOCKF(地址:0X3 可讀寫(xiě))

          bit15~bit13:SC_MULT

          時(shí)鐘輸入XTALI的倍頻設(shè)置,設(shè)置之后將啟動(dòng)VS1003內(nèi)置的倍頻器。

          bit12~bit11:SC_ADD

          用于在WMA流解碼時(shí)給倍頻器增加的額外的倍頻值。

          bit10~bit0:SC_FREQ

          當(dāng)XTALI輸入的時(shí)鐘不是12.288M時(shí)才需要設(shè)置該位段,其默認(rèn)值為0,即VS1003默認(rèn)使用的是12.228M的輸入時(shí)鐘。

          5.SCI_DECODE_TIME(地址:0X4 可讀寫(xiě))

          解碼時(shí)間寄存器。當(dāng)進(jìn)行正確的解碼時(shí),讀取該寄存器可以獲得當(dāng)前的解碼時(shí)長(zhǎng)(單位為秒)??梢愿脑摷拇嫫鞯闹?,但是新值須要對(duì)該寄存器進(jìn)行兩次寫(xiě)操作。在每次軟件復(fù)位或是WAV(PCM、IMA ADPCM、WMA、MIDI)解碼開(kāi)始與結(jié)束時(shí)SCI_DECODE_TIME的值將清零。

          6.SCI_AUDATA(地址:0X5 可讀寫(xiě))

          當(dāng)進(jìn)行正確的解碼時(shí),該寄存器的值為當(dāng)前的采樣率(bit:15~bit1)和所使用的聲道(bit0)。采樣率須為2的倍數(shù);bit0=0,單聲道數(shù)據(jù),bit0=1,立體聲數(shù)據(jù)。寫(xiě)該寄存器半直接改變采樣率。

          7.SCI_WRAM(地址:0X6 可讀寫(xiě))

          讀寄存器用來(lái)加載用戶應(yīng)用程序和數(shù)據(jù)到VS1003的指令的數(shù)據(jù)RAM中。起始地址在SCI_WRAMADDR中進(jìn)行設(shè)置,且必須先于讀寫(xiě) SCI_WRAM。對(duì)于16位的數(shù)據(jù)可以在進(jìn)行一次SCI_WRAM的讀寫(xiě)中完成;而對(duì)32位的指令字來(lái)說(shuō)則需要兩次連續(xù)讀寫(xiě)。字節(jié)順序是大端模式,即高字節(jié)在前,低字節(jié)在后。在每一次完成全字讀寫(xiě)后,內(nèi)部指針將自動(dòng)增加。

          8. SCI_WRAMADDR(地址:0X7 可讀寫(xiě))

          用于設(shè)置RAM讀寫(xiě)的首地址。

          9.SPI_HDAT0gng SPI_HDAT1(地址:0X8 只讀)

          這兩個(gè)寄存器用來(lái)存放所解碼的音頻文件的相關(guān)信息,為只讀寄存器。

          當(dāng)為WAV文件時(shí),SPI_HDAT0=0X7761,SPI_HDAT1=0X7665;

          當(dāng)為WMA文件時(shí),SPI_HDAT0的值為解碼速率(字節(jié)/秒),要轉(zhuǎn)換為位率的話則將SPI_HDAT0的值乘8即可,SPI_HDAT1=0X574D;

          當(dāng)為MIDI文件時(shí),SPI_HDAT0的值可以參考VLSI的技術(shù)文檔第33頁(yè),SPI_HDAT1=0X4D54;

          當(dāng)為MP3文件時(shí),SPI_HDAT0和SPI_HDAT1包含較為復(fù)雜的信息(來(lái)自于解壓之后的MP3文件頭),包括當(dāng)前正在 解碼的MP3文件的采樣率、位率等,具體請(qǐng)參考數(shù)據(jù)手冊(cè)的第33頁(yè)到第34頁(yè)。復(fù)位后SPI_HDAT0和SPI_HDAT1將清零。

          10.SCI_AIADDR(地址:0XA 可讀寫(xiě))

          用戶應(yīng)用程序的起始地址,初始化先于SCI_WRAMADDR和SCI_WRAM。如果沒(méi)有使用任何用戶應(yīng)用程序,則該寄存器不應(yīng)進(jìn)行初始化,或是將其初始化為零。

          11.SCI_VOL(地址:0XB 可讀寫(xiě))

          音量控制寄存器。高八位用于設(shè)置左聲道,低八位用于設(shè)置右聲道。設(shè)置值為最大竟是的衰減倍數(shù),步進(jìn)值為0.5dB,范圍為0到255.最大竟是的設(shè)置值為 0x0000,而靜音為0xffff。例如,左聲道:-2.0dB,右聲道:-3.5dB,則SCI_VOL=(4X256)+7=0x0407。硬件復(fù)位將使SCI_VOL清零(最大音量),而軟件復(fù)位將不改變音量設(shè)置值。

          (設(shè)置靜音(SCI_COL=0XFFFF)將關(guān)閉模擬部分的供電。)

          12.SCI_AICTRL[X](地址:0XC~0XF 可讀寫(xiě))

          用于訪問(wèn)用戶應(yīng)用程序。

          7)VS1003有應(yīng)用電路

          2、VS1003的驅(qū)動(dòng)方法

          這里就來(lái)介紹單片片對(duì)VS1003的控制方法,最終實(shí)現(xiàn)MP3播放。

          1)準(zhǔn)備工作

          在對(duì)VS1003進(jìn)行驅(qū)動(dòng)之前,我們需要確保以下幾點(diǎn)已經(jīng)沒(méi)問(wèn)題,否則后面的工作都將是沒(méi)有意義的。

          1.VS1003各部分的供電電壓與輸出電壓值是不同的。

          供電部分

          最小電壓

          推薦電壓

          最大電壓

          AVDD(模擬部分)

          2.5V

          2.8V

          3.6V

          CVDD(數(shù)字部分,內(nèi)核)

          2.4V

          2.5V

          2.7V

          IOVDD(I/O電壓)

          CVDD-0.6V

          2.8V

          3.6V

          2.VS1003與單片機(jī)正確可靠連接。

          VS1003與單片機(jī)連接的引腳主要有7個(gè),分別為 SO、SI、SCLK、/XCS、/XRESET、DREQ、/XDCS。只有保證它們與單片機(jī)正確可靠的連接,才能對(duì)VS1003進(jìn)行有效的操作與控制。

          2)寫(xiě)命令操作

          要控制VS1003首先要實(shí)現(xiàn)的就是寫(xiě)命令,這是控制是否成功的前提。關(guān)于通信接口部分,是一種同步串行接口方式(SPI從機(jī)模式),它要求SCLK信號(hào)必須由外部電路產(chǎn)生,數(shù)據(jù)(SDATA)在SCLK的上升沿或下降沿時(shí)被寫(xiě)入。在筆者的實(shí)驗(yàn)中,采用的是軟件模擬SPI,讀者也可以選用帶有硬件SPI的單片機(jī)(如STC12系列、AVR系列等),驅(qū)動(dòng)效果會(huì)更好。寫(xiě)命令的過(guò)程如下:

          1.等待DREQ為高(當(dāng)DREQ為低時(shí),說(shuō)明芯片還沒(méi)有就緒)

          2.將XCS(命令片選)拉低

          3.寫(xiě)入0x02

          4.寫(xiě)入寄存器地址

          5.分別寫(xiě)入數(shù)據(jù)的高字節(jié)與低字節(jié)

          6.將XCS置高

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

          void wr_commad(unsigned char addr,unsigned char hdat,unsigned char ldat )

          {

          DREQ=1;

          while(!DREQ);

          XCS=0;

          spi_write(0x02);

          spi_write(addr);

          spi_write(hdat);

          spi_write(ldat);

          XCS=1;

          }



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

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();