关于TPA6130A2芯片没有反馈问题:
程序:
void IIC_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB ,GPIO_Pin_5| GPIO_Pin_6|GPIO_Pin_7);
}
void IIC_Start(void)
{
SDA_OUT(); //SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}
IIC_SDA=1;
IIC_SCL=1;
delay_us(10);
IIC_SDA=0;
delay_us(5);
IIC_SCL=0;
}
void IIC_Stop(void)
{
SDA_OUT();
IIC_SCL=0;
IIC_SDA=0;
delay_us(10);
IIC_SCL=1;
IIC_SDA=1;
delay_us(10);
}
u8 IIC_Wait_Ack(void)
{
u8 ucErrTime=0;
IIC_SDA=1;delay_us(1);
SDA_IN(); IIC_SCL=1;delay_us(1);
while(READ_SDA)
{
ucErrTime++;
if(ucErrTime>250)
{
IIC_Stop();
return 1;
}
}
IIC_SCL=0;
return 0;
}
void IIC_Send_Byte(u8 txd)
{
u8 t;
SDA_OUT();
delay_us(1);
for(t=0;t<8;t++)
{
IIC_SCL=0; delay_us(1);
if((txd&0x80)>>7) IIC_SDA=1;
else IIC_SDA=0;
txd<<=1; delay_us(1);
IIC_SCL=1; delay_us(1);
}
IIC_SCL=0;
}
u8 TPA6130_ReadOneByte(u8 ReadAddr)
{
u8 temp=0;
IIC_Start();
IIC_Send_Byte(0xC0);
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr);
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte(0xC1);
IIC_Wait_Ack();
temp=IIC_Read_Byte(0);
IIC_Stop();
return temp;
}
u8 TPA6130_ReadOneByte(u8 ReadAddr)
{
u8 temp=0;
IIC_Start();
IIC_Send_Byte(0xC0);
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr);
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte(0xC1);
IIC_Wait_Ack();
temp=IIC_Read_Byte(0);
IIC_Stop();
return temp;
}
int main(void)
{
u8 temp;
SystemInit();
while(1)
{
IIC_Start();
IIC_Send_Byte(0xC0);
IIC_Wait_Ack();
IIC_Send_Byte(0X04);
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte(0xC1);
IIC_Wait_Ack();
temp=IIC_Read_Byte(0);
IIC_Stop();
}
}
实际读寄存器4的版本号,应答位总是高。
蓝色波形为SCL时钟,黄色为SDA波形.
输入音频信号正常,TPA6130A2黄色图示为管脚18CPP,方波均值高电压5V,低电压为2V;蓝色为管脚17CPN.CPVSS(管脚15和管脚16)电压-2.7V
原理图:
不知哪里原因程序中应答位总是高电平,请求技术高手能给与解答。