⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 audio.c

📁 这是基于dsp来实现语音算法的一个程序
💻 C
📖 第 1 页 / 共 2 页
字号:
                             //-----0000 0011 0001 0111
  
  mcbsp0_write_rdy(0x05f9);  //REG2 Left Channel Headphone Volume Control
  asm(" nop ");              //Address  (bits 15-9) 0000010
                             //LRS      (bits 8)           1         Left/right headphone channel simultaneous volume/mute update 1 = Enabled
                             //LZC      (bits 7)            1        Left-channel zero-cross detect 0 = Off
                             //LHV[6:0] (bits 6-0)           1111001 Left Headphone volume control (1111001 = 0 dB default)
                             //-----0000 0101 1111 1001 
                             
  mcbsp0_write_rdy(0x07f9);  //REG3 Right Channel Headphone Volume Control
  asm(" nop ");              //Address  (bits 15-9) 0000011
                             //RLS      (bits 8)           1         Left/right headphone channel simultaneous volume/mute update 1 = Enabled
                             //RZC      (bits 7)            1        Left-channel zero-cross detect 0 = Off
                             //RHV[6:0] (bits 6-0)           1111001 Left Headphone volume control (1111001 = 0 dB default)
                             //-----0000 0111 1111 1001
 


  mcbsp0_write_rdy(0x0814);  //选择麦克风输入
  asm(" nop ");              //REG4 Analog Audio Path Control
                             //Address  (bits 15-9) 0000100
                             //X        (bits 8)           0         Reserved
                             //STA[1:0] (bits 7-6)          00       Sidetone attenuation 00 = –6 dB
                             //STE      (bits 5)              0      Sidetone enable 0 = Disabled
                             //DAC      (bits 4)               1     DAC select 1 = DAC selected
                             //BYP      (bits 3)                0    Bypass 0 = Disabled 1=Enabled,ONLY FOR TEST
                             //INSEL    (bits 2)                 0   Input select for ADC 0 = Line 
                             //MICM     (bits 1)                  0  Microphone mute 0 = Normal
                             //MICB     (bits 0)                   0 Microphone boost 0=OdB
                             //-----0000 1000 0001 0000
                             
  mcbsp0_write_rdy(0x0A01);  //REG5 Digital Audio Path Control
  asm(" nop ");              //Address  (bits 15-9) 0000101
                             //X        (bits 8-4)         00000     Reserved
                             //DACM     (bits 3)                0    DAC soft mute 0 = Disabled
                             //DEEMP[1:0] (bits 2-1)             00  De-emphasis control 00 = Disabled
                             //ADCHP    (bits 0)                   1 ADC high-pass filter 1 = Enabled 
                             //----- 0000 1010 0000 0001
                                                          
  mcbsp0_write_rdy(0x0C00);  //REG6 Power Down Control
  asm(" nop ");              //Address  (bits 15-9) 0000110
                             //X        (bits 8)           0         Reserved
                             //OFF      (bits 7)            0        Device power 0 = On
                             //CLK      (bits 6)             0       Clock 0 = On
                             //OSC      (bits 5)              0      Oscillator 0 = On
                             //OUT      (bits 4)               0     Outputs 0 = On
                             //DAC      (bits 3)                0    DAC 0 = On
                             //ADC      (bits 2)                 0   ADC 0 = On
                             //MIC      (bits 1)                  0  Microphone input 0 = On
                             //LINE     (bits 0)                   0 Line input 0 = On
                             //----- 0000 1100 0000 0000 
                             
  mcbsp0_write_rdy(0x0E73);  //REG7 Digital Audio Interface Format
  asm(" nop ");              //Address  (bits 15-9) 0000111
                             //X        (bits 8-7)         00         Reserved
                             //MS       (bits 6)             1        Master/slave mode  1 = Master
                             //LRSWAP   (bits 5)              1       DAC left/right swap  1 = Enabled
                             //LRP      (bits 4)               1      DAC left/right phase,1 = Right channel on, LRCIN low; "DSP mode", 1 = MSB is available on 2nd BCLK rising edge after LRCIN rising edge
                             //IWL[1:0] (bits 3-2)              00    Input bit length 00 = 16 bit
                             //FOR[1:0] (bits 1-0)                11  Data format 11 = DSP format, frame sync followed by two data words           
                             //----- 0000 1110 0111 0011 
                             
 mcbsp0_write_rdy(0x100C); //8KHZ采样频率 
                             
 
  asm(" nop ");              //Address  (bits 15-9) 0001000
                             //X        (bits 8)           0         Reserved 
                             //CLKOUT   (bits 7)            0        Clock input divider 0 = MCLK
                             //CLKIN    (bits 6)             0       Clock output divider 0 = MCLK
                             //SR[3:0]  (bits 5-2)            0011   MCLK = 12.288 MHz, sampling rates=8KHZ                        
                             //BOSR     (bits 1)                  0  Base oversampling rate Normal mode: 0 = 256 fs
                             //USB/Normal(bits 0)                  0 Clock mode select: 0 = Normal
                             //----- 0001 0000 0000 1100            
                             
  mcbsp0_write_rdy(0x1201);  //REG9 Digital Interface Activation
  asm(" nop ");              //Address  (bits 15-9) 0001001
                             //X        (bits 8-1)         00000000  Reserved
                             //ACT      (bits 0)                   1 Activate interface 1 = Active
                             //----- 0001 0010 0000 0001
  Delay(0);                  //延迟 4000*CPU 时钟周期
  asm(" nop ");

}

/*
*************************************************************************
- 函数名称 : void mcbsp0_write_rdy(UINT16 out_data);
- 函数说明 : MCBSP0发送一个数据
- 输入参数 : data
- 输出参数 : 无
- 补充说明 : 内部带是否发送完成的判断
**************************************************************************
*/


void mcbsp0_write_rdy(UINT16 out_data) 

{  
    UINT16 j;
    
    *(unsigned int*)McBSP0_SPSA=0x0001;  //McBSP0_SPSA  指向 SPCR2
 
    while ((*(unsigned int *)McBSP0_SPSD&0x0002)==0); 
   
         //mask XRDY bit,XRDY = 1 Transmitter is ready for new data in DXR[1,2].
    
    for(j=0;j<50;j++); //delay
       
    *(unsigned int *)McBSP0_DXR1= out_data;
    
}


/*
*************************************************************************
- 函数名称 : void mcbsp0_init_SPI(void);
- 函数说明 : MCBSP0设置为SPI模式
- 输入参数 : 无
- 输出参数 : 无
- 补充说明 : 
**************************************************************************
*/
void mcbsp0_init_SPI(void)
 
{
   //-------------------------------------------------------- 
  //复位 McBSP0
  *(unsigned int*)McBSP0_SPSA=0x0000;//SPCR1
  *(unsigned int*)McBSP0_SPSD=0x0000;//设置SPCR1.0(RRST=0)
                  
  *(unsigned int*)McBSP0_SPSA=0x0001;//SPCR2
  *(unsigned int*)McBSP0_SPSD=0x0000;//设置SPCR1.0(XRST=0)
  //---------------------------------------------------------
  //延迟                            
  Delay(0);                  //延迟 4000*CPU 时钟周期                            
                             //等待复位稳定
  //---------------------------------------------------------                           
   //配置 McBSP0为 SPI 模式
  *(unsigned int*)McBSP0_SPSA=0x0000;//SPCR1
  *(unsigned int*)McBSP0_SPSD=0x1800;
 
  
  *(unsigned int*)McBSP0_SPSA=0x0001;//SPCR2
  *(unsigned int*)McBSP0_SPSD=0x0000;
 
  
  *(unsigned int*)McBSP0_SPSA=0x000E;//PCR
  *(unsigned int*)McBSP0_SPSD=0x0A0C;
  
  
  *(unsigned int*)McBSP0_SPSA=0x0002;//RCR1
  *(unsigned int*)McBSP0_SPSD=0x0040;//
      
  *(unsigned int*)McBSP0_SPSA=0x0003;//RCR2
  *(unsigned int*)McBSP0_SPSD=0x0041;//  
 
  
  *(unsigned int*)McBSP0_SPSA=0x0004;//XCR1
  *(unsigned int*)McBSP0_SPSD=0x0040;
  
    
  *(unsigned int*)McBSP0_SPSA=0x0005;//XCR2
  *(unsigned int*)McBSP0_SPSD=0x0041;
  
  
  *(unsigned int*)McBSP0_SPSA=0x0006;//SRGR1
  *(unsigned int*)McBSP0_SPSD=0x0063;
  
   
   *(unsigned int*)McBSP0_SPSA=0x0007;//SRGR2                                                           
   *(unsigned int*)McBSP0_SPSD=0x2000;
  

  *(unsigned int*)McBSP0_SPSA=0x0001;//SPCR2    
  *(unsigned int*)McBSP0_SPSD=(*(unsigned int*)McBSP0_SPSD)|0x0040;
                          
  Delay(0);                  //延迟 4000*CPU 时钟周期                            
                             //等待时钟稳定
                             
  *(unsigned int*)McBSP0_SPSA=0x0000;//SPCR1    
  *(unsigned int*)McBSP0_SPSD=(*(unsigned int*)McBSP0_SPSD)|0x0001;
  //RRST=1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -