📄 dspcodectest_fori2cset.c
字号:
ioport int * gpio_iic;
#define DEV_ADDR 0x1a;
void IIC_delay(void)
{
int i;
for (i = 0; i < 3210; i++); //10700 is 1ms
}
void IIC_reset(void)
{ gpio_iic=0;
gpio_iic[0xf002]=0x0140;
// setI2CDev(3);
}
void IIC_start(void)
{
IIC_delay();
gpio_iic=0;
/* Pull SDA down... */
gpio_iic[0xf002]=0x0040;
// setI2CDev(1);
IIC_delay();
/* ...and then SCL -> start condition. */
gpio_iic[0xf002]=0x0000;
// setI2CDev(0);
IIC_delay();
}
void IIC_stop(void)
{ gpio_iic=0;
/* Let SCL go up */
gpio_iic[0xf002]=0x0040;
// setI2CDev(1);
IIC_delay();
/* ...and then SDA up -> stop condition. */
gpio_iic[0xf002]=0x0140;
// setI2CDev(3);
IIC_delay();
gpio_iic[0xf002]=0x0140;
// setI2CDev(3);
}
void IIC_outBit(int bout)
{
int dat;
unsigned int dat1;
dat = (bout?4:0);
dat1=(dat<<6)&0x140;
gpio_iic[0xf002]=dat1;
// setI2CDev(0+dat);
IIC_delay();
/* Let SCL go up */
dat1=((dat+1)<<6)&0x140;
gpio_iic[0xf002]=dat1;
// setI2CDev(1+dat);
IIC_delay();
/* Pull SCL back down */
// setI2CDev(0+dat);
dat1=(dat<<6)&0x140;
gpio_iic[0xf002]=dat1;
IIC_delay();
}
void IIC_outByte(int dat)
{
int bit_count = 8;
while(bit_count) {
IIC_outBit(dat & 0x80);
dat <<= 1;
bit_count--;
}
gpio_iic=0;
/* Disable outputs */
gpio_iic[0xf002]=0x100;
//setI2CDev(2);
IIC_delay();
gpio_iic[0xf002]=0x0140;
// setI2CDev(3);
IIC_delay();
gpio_iic[0xf002]=0x100;
// setI2CDev(2);
// !!! LMK Added to delay to compensate for increase in clock speed
// for (i = 0; i < 18; i++)
//for (i = 0; i < 20; i++)
IIC_delay();
}
void IIC_send(int addr, int data)
{
IIC_reset();
IIC_start();
// Write the address, ensuring we only use the LSB
//IIC_outByte((DEV_ADDR<<1) & 0xfe);
IIC_outByte(0x34);
IIC_outByte( ((addr<<1)&0xfe) + (data&0x100?1:0) );
// Write the data
IIC_outByte(data&0xff);
IIC_stop();
}
void IIC_AIC23(void ){
IIC_send(0xf,0x0); //reset!
IIC_send(6,0x00); //
// IIC_send(2,0x1F0); //Left Channel HeadPhone Ctrl 0xf9 is 0dB
// IIC_send(3,0x1F0); //Right Channel
//while(1)
IIC_send(2,0x1ff); //Left Channel HeadPhone Ctrl 0xf9 is 0dB
IIC_send(3,0x1ff); //Right Channel
// IIC_send(4,0x12); //0x25:sidetone, 0x12:passby off, dac on
IIC_send(4,0x0a);
IIC_send(5,0x04); //de-emphasis control 44k?
// IIC_send(5,0x06); //de-emphasis disable
IIC_send(7,0x43); //Master mode,16 bit,0x43:dsp mode , 0x42:IIS mode
IIC_send(8,0x20); // 44.1k
IIC_send(9,0X01);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -