tag 标签: vs1063

相关博文
  • 热度 14
    2012-3-5 18:40
    2048 次阅读|
    0 个评论
      // register name;   adder ;      value ; #define SPI_MODE        0x0   #define SPI_STATUS      0x1   #define SPI_BASS        0x2   #define SPI_CLOCKF      0x3   #define SPI_DECODE_TIME 0x4   //RW 解码时间寄存器,正常解码是 里面是解码所用的时间,单位秒。 #define SPI_AUDATA      0x5   //RW 采样率和通道数寄存器。当正常解码是,里面显示的是采样率和通道。 #define SPI_WRAM        0x6   #define SPI_WRAMADDR    0x7   #define SPI_HDAT0       0x8   // #define SPI_HDAT1       0x9   // #define SPI_AIADDR      0xa   #define SPI_VOL         0xb   //音量控制寄存器  最大值 ==0 #define SPI_AICTRL0     0xc   // 编码用  采样率8K~48K #define SPI_AICTRL1     0xd   //人工设定编码增益或者设定自动增益。语音编码推荐用自动增益 #define SPI_AICTRL2     0xe   //在设定自动增益的情况下 最大的增益 1024(1)~64 //spi_aictrl2控制最大的增益,这个功能可能用在没有信号时对放大增益的限制。 //这个意思是:如果没有信号,放大增益太大的话会有白噪声进入到编码通道。 #define SPI_AICTRL3     0xf /****************************************************/ union { struct  {  unsigned sm_diff:1;         //0 正常的同相音频  unsigned sm_layer12:1;      // 0 不允许  unsigned sm_reset:1;   //软件复位  1 复位  unsigned sm_cancel:1;   //取消当前的文件解码  1 取消  unsigned :1;   unsigned sm_tests:1;     //0---no  test;  1---- into SDI test mode;  unsigned :1;     unsigned :1;   unsigned sm_dact:1;       //dclk的有效边缘,0  上升沿  1  下降沿  unsigned sm_sdiord :1;    // 0  Msb在前  unsigned sm_sdishare:1;  //0  不共享SPI片选  unsigned sm_sdinew:1;  //1  本机模式  unsigned sm_encode:1;   //1 录音激活  unsigned :1;     // NO USE  unsigned sm_line1:1;   // 0  MIC  unsigned sm_clk_range:1;  // 0  12..13MHZ  }bits;  unsigned char bt ;  unsigned int lt; }Vs1063_MODE; //---------------------------------------------------------------------------------------- /*SPI_AICTRL3 //15   编解码模式  包含编码和解码 此位不能被忽略  set 1 //14  AEC enable //13   uart tx enable ;选择SCL 还是 UART 输出。 //12  set 0 //11  暂停enable //10  No RIFF WAV header inserted (or expected in codec mode) //9   set 0 //8   set 0 // 4:7        编码格式                0=1 IMA ADPCM,PCM,                2= G.711                3= G.711 A律                4=支持G.722协议的ADPCM                5= Ogg Vorbis格式                6=  MP3               110 // 3    SET 0 // 2:0            0 ----联合立体声  0 00                    1 ---- 双声道  001      2 --- 左通道  010      3 --- 右通道  011                   4 --- 单声道缩混   100 */   /*SPI_WRAMADDR   bits: 15,14 比特率模式                0 = Quality Mode,                1 = VBR,                2 = ABR,                3 = CBR   bits: 13,12   比特乘法器   bits: 11   特别的编码     SET 0   bits: 10   limited frame length 有限帧长度设置位。 当编码设置为MP3时,流媒体可以SET 1   bits: 9    内部使用 SET 0   bits: 8:0;  0到511比特率的基地(或质量0到9,如果质量模式选择 */ 解码时,  HDAT1 #define WAV   0x7665 #define ADTS 0x4154 #define ADIF 0x4144 #define MP4 0x4d34 #define WMA 0x574d #define OGG 0x4f67 #define FLAC 0x664c #define MP3 0XFFE0 ~ 0XFFFF; //********************************************* 编码顺序  1)  Load the VS1063a Patches package WriteVS10xxRegister(SCI_WRAMADDR, 0x50); // Activation Recommended: If you use the VS1063a Patches package, start encoding as follows: set bit SM_ENCODE in SCI_MODE, then write 0x50 to AIADDR. – If you do not use the VS1063a Patches package, start encoding mode by setting SM_ENCODE and SM_SOFTRESET in register SCI_MODE. 2 )初始化下列寄存器 SCI_AICTRL0 for samplerate (SCI_WRAMADDR for bitrate/quality setting) SCI_AICTRL1 for gain/AGC SCI_AICTRL2 for AGC max gain SCI_AICTRL3 for channel selection, encoding format and options SCI_WRAMADDR to set bitrate/quality (mp3 and Ogg Vorbis only)   3)SCI_AICTRL3bits.13  可以选择是通过SPI 还是UART 来进行数据传输。 4)当要结束编码 ,设置SCI_MODEbits.SM_CANCEL = 1;    SCI_MODEbits.SM_CANCEL 将会在100MS内被清除。   当编码完成, SCI_MODEbits.SM_ENCODE = 0;    SCI_HDAT1 SCI_HDAT0也会变成0;