stm32F769 IIC与WM894通讯,读ID(16位)异常,读高八位第一个字节正常0x89,但是读第二个字节始终为0x00,代码如下:
uint8_t WM8994_Read(uint16_t Chip_ADD,uint16_t Reg_Add,uint16_t *Read_Data)
{
uint8_t ak;
uint8_t Reg_Add_H,Reg_Add_L;
uint8_t Temp_Chip_ADD;
Reg_Add_H = (uint8_t)(Reg_Add>>8);
Reg_Add_L = (uint8_t)(Reg_Add);
//Temp_Chip_ADD = Chip_ADD<<1;
Temp_Chip_ADD = Chip_ADD&0xFE;
flag=Temp_Chip_ADD;
IIC_Start();
IIC_Send_Byte(Temp_Chip_ADD|0x00);
ak=IIC_Wait_Ack();
if(ak==1)
{
return KO;
}
IIC_Send_Byte(Reg_Add_H);
ak=IIC_Wait_Ack();
if(ak==1)
{
return KO;
}
IIC_Send_Byte(Reg_Add_L);
ak=IIC_Wait_Ack();
if(ak==1)
{
return KO;
}
//IIC_Stop();
IIC_Start();
IIC_Send_Byte(Temp_Chip_ADD|0x01);
ak=IIC_Wait_Ack();
if(ak==1)
{
return KO;
}
Read_Data[0]=IIC_Read_Byte(1);
Read_Data[1]=IIC_Read_Byte(0);
IIC_Stop();
return OK; |