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

📄 aic23cfg.c

📁 用dsp tms320f2812 实现的itu g.711音频压缩算法
💻 C
字号:
#include "DSP281x_Device.h"     // DSP281x Headerfile Include File
#include "DSP281x_Examples.h"   // DSP281x Examples Include File
#include "aic23cfg.h"
#define ADC_CLK 	0x0020 //2812a  pwm12 gpiob.5 27  30 sclk aic23
#define ADC_CS  	0x0008 //2812a  pwm10 gpiob.3 25  28 cs   aic23
#define ADC_DATA   	0x0010 //2812a  pwm11 gpiob.4 26  24 sin  aic23
#define ADC_DELAY   40
void AIC23_Write(unsigned short , unsigned short );
void adc_sck( void );
void delay(long j);

void AIC23_cfg( void )
{
	EALLOW;
    // Configure MUXs as digital I/Os or
    GpioMuxRegs.GPBMUX.all=GpioMuxRegs.GPBMUX.all&(~ADC_CS)&(~ADC_CLK)&(~ADC_DATA);         
    // GPIO PORTs  as output
    GpioMuxRegs.GPBDIR.all=GpioMuxRegs.GPBDIR.all|ADC_CS|ADC_CLK|ADC_DATA; 
    EDIS;
    GpioDataRegs.GPBSET.all=GpioMuxRegs.GPBDIR.all|ADC_CS|ADC_CLK|ADC_DATA;
    delay(ADC_DELAY*10);
   	// Reset the AIC23 and turn on all power
    AIC23_Write(AIC23_RESET_REG, 0);
    delay(ADC_DELAY*100);
    AIC23_Write(AIC23_POWER_DOWN_CTL, 0);    
    AIC23_Write(AIC23_ANALOG_AUDIO_CTL, ANAPCTL_DAC);
    AIC23_Write(AIC23_DIGITAL_AUDIO_CTL, DIGPCTL_ADCHP);
    // Turn on volume for line inputs
    AIC23_Write(AIC23_LT_LINE_CTL, 0x79);
    AIC23_Write(AIC23_RT_LINE_CTL,0x79);
    // Configure the AIC23 for master mode, 44.1KHz stereo, 16 bit samples
    // Use 12MHz USB clock
    AIC23_Write(AIC23_DIGITAL_IF_FORMAT, DIGIF_FMT_LRP|DIGIF_FMT_MS | DIGIF_FMT_IWL_16 | DIGIF_FMT_FOR_DSP  );
    AIC23_Write(AIC23_SAMPLE_RATE_CTL, SRC_SR_44 | SRC_BOSR | SRC_MO);
    // Turn on headphone volume and digital interface
    AIC23_Write(AIC23_DIG_IF_ACTIVATE, DIGIFACT_ACT);
    
}
void AIC23_Write(unsigned short regaddr, unsigned short data)
{
	unsigned short i;
	data=((regaddr&0x0f)<<9)|(data&0x1ff);

    GpioDataRegs.GPBCLEAR.all=ADC_CS;
    delay(ADC_DELAY);
	
	for(i=0;i<16;i++)
	{
		if(data&0x8000)
		    GpioDataRegs.GPBSET.all=ADC_DATA;
		else
		    GpioDataRegs.GPBCLEAR.all=ADC_DATA;
	    delay(ADC_DELAY);
		adc_sck();	
		data=data<<1;
		
	}	
    GpioDataRegs.GPBSET.all=ADC_CS;
}
void adc_sck( void )
{
    GpioDataRegs.GPBCLEAR.all=ADC_CLK;
    delay(ADC_DELAY);
    GpioDataRegs.GPBSET.all=ADC_CLK;
	delay(ADC_DELAY);
    GpioDataRegs.GPBCLEAR.all=ADC_CLK;
    delay(ADC_DELAY);

}
void delay(long j)
{
	long i;
	for (i=0;i<j;i++){asm(" NOP");}
}

⌨️ 快捷键说明

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