BQ76940能对寻址信号响应,但接着对寄存器信号响应不了
时间:10-02
整理:3721RD
点击:
这个问题困扰很久了,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,这是什么问题?
建议把实测的波形附上。
检查下软件语句吧,这里的硬件上已经ready肯定是可以读取
- 确实是软件语句的问题,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;
- }