📄 audio.c
字号:
//-----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 + -