TI中文支持网
TI专业的中文技术问题搜集分享网站

BQ76940能对寻址信号响应,但接着对寄存器信号响应不了

这个问题困扰很久了,CAP1,CAP2,CAP3,REGOUT上都有电压

我现在想读寄存器0x50里的数据,用如下程序

IIC_Start(); IIC_Send_Byte((0X08<<1 | 0)); IIC_Wait_Ack(); IIC_Send_Byte(0x50); IIC_Wait_Ack();

BQ76940对第一个IIC_Wait_Ack();有ACK,但第二个没ACK,这是什么问题?

Hugo Zhang:

建议把实测的波形附上。

user3927583:

回复 Zhengxing Li:

确实是软件语句的问题,IIC_Wait_Ack()这个函数的问题,第6行开始,SDA输出模式延时了5us,应该是时间太长了

u8 IIC_Wait_Ack(void)
{
     u8 ucErrTime=0;
     SDA_OUT(); 
     IIC_SDA=1;
     delay_us(5);
     IIC_SCL=1;
     delay_us(5);
     SDA_IN(); //SDAÉèÖÃΪÊäÈë
     while(READ_SDA)
     {
            ucErrTime++;
           if(ucErrTime>250)
           {
                 IIC_Stop();
                 return 1;
           }
      }
      IIC_SCL=0;
      return 0;
}

user6144994:

回复 user3927583:

这个问题解决了吗?    我也出现这个问题了

user6234485:

回复 user3927583:

请问你的问题解决了吗,我也出现这个问题了,我发送写地址0x10,然后寄存器地址,例如03,然后数据,然后CRC所有这些时序都OK,有CRC响应,但是我发送读指令0x11,这个时候还是有ACK响应,下一个寄存器地址的时候就没有ACK了,甚至我发03寄存器地址,会被BQ拉成0x00

user6234485:

回复 user6144994:

请问你的问题解决了吗,我也出现这个问题了,我发送写地址0x10,然后寄存器地址,例如03,然后数据,然后CRC所有这些时序都OK,有CRC响应,但是我发送读指令0x11,这个时候还是有ACK响应,下一个寄存器地址的时候就没有ACK了,甚至我发03寄存器地址,会被BQ拉成0x00

赞(0)
未经允许不得转载:TI中文支持网 » BQ76940能对寻址信号响应,但接着对寄存器信号响应不了
分享到: 更多 (0)