在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設計應用 > 單片機實現(xiàn)MP3播放的方法

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

      作者: 時間:2016-12-02 來源:網絡 收藏

      6)VS1003的功能寄存器

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

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

      bit0:SM_DIFF

      SM_DIFF=0 正常音頻相位

      SM_DIFF=1 左聲道反轉

      當SM_DIFF置位時,VS1003將左聲道反相輸出,立體聲輸入將產生環(huán)繞效果,對于單聲道輸入將產生差分(反相)左/右聲道信號。

      bit1:SM_SETTOZERO

      置零。

      bit2:SM_RESET

      SM_RESET=1,VS1003軟復位。軟復位之后該位會自動清零。

      bit3:SM_OUTOFWAV

      SM_OUTOFWAV=1,停止WAV解碼。

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

      bit4:SM_PDOWN

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

      bit5:SM_TESTS

      SM_TESTS=1,進入SDI測試模式。

      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;

      該位的設置不會影響SCI總線。

      bit10:SM_SDISHARE

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

      bit11:SM_SDINEW

      SM_SDINEW=1,VS1002本地模式(新模式)。VS1003在啟動后默認進入該模式。(這里所說的模式指的是總線模式。)

      bit12:SM_ADPCM

      SM_ADPCM=1,ADPCM錄音使能。

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

      bit13:SM_ADPCM_HP

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

      bit14:SM_LINE_IN

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

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

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

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

      重音/高音設置寄存器。

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

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

      bit15~bit13:SC_MULT

      時鐘輸入XTALI的倍頻設置,設置之后將啟動VS1003內置的倍頻器。

      bit12~bit11:SC_ADD

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

      bit10~bit0:SC_FREQ

      當XTALI輸入的時鐘不是12.288M時才需要設置該位段,其默認值為0,即VS1003默認使用的是12.228M的輸入時鐘。

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

      解碼時間寄存器。當進行正確的解碼時,讀取該寄存器可以獲得當前的解碼時長(單位為秒)。可以更改該寄存器的值,但是新值須要對該寄存器進行兩次寫操作。在每次軟件復位或是WAV(PCM、IMA ADPCM、WMA、MIDI)解碼開始與結束時SCI_DECODE_TIME的值將清零。

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

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

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

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

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

      用于設置RAM讀寫的首地址。

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

      這兩個寄存器用來存放所解碼的音頻文件的相關信息,為只讀寄存器。

      當為WAV文件時,SPI_HDAT0=0X7761,SPI_HDAT1=0X7665;

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

      當為MIDI文件時,SPI_HDAT0的值可以參考VLSI的技術文檔第33頁,SPI_HDAT1=0X4D54;

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

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

      用戶應用程序的起始地址,初始化先于SCI_WRAMADDR和SCI_WRAM。如果沒有使用任何用戶應用程序,則該寄存器不應進行初始化,或是將其初始化為零。

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

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

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

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

      用于訪問用戶應用程序。

      7)VS1003有應用電路

      2、VS1003的驅動方法

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

      1)準備工作

      在對VS1003進行驅動之前,我們需要確保以下幾點已經沒問題,否則后面的工作都將是沒有意義的。

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

      供電部分

      最小電壓

      推薦電壓

      最大電壓

      AVDD(模擬部分)

      2.5V

      2.8V

      3.6V

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

      2.4V

      2.5V

      2.7V

      IOVDD(I/O電壓)

      CVDD-0.6V

      2.8V

      3.6V

      2.VS1003與單片機正確可靠連接。

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

      2)寫命令操作

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

      1.等待DREQ為高(當DREQ為低時,說明芯片還沒有就緒)

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

      3.寫入0x02

      4.寫入寄存器地址

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

      6.將XCS置高

      實現(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;

      }



      關鍵詞: 單片機MP3播

      評論


      技術專區(qū)

      關閉