This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BQ34110: CAN NOT COMMUNICATE DEVICE CORRECTLY

Part Number: BQ34110

I send the command 0x08 to BQ34110 directly , then read BQ34110 via iic immediatly . I get a invalid response(0xff).I add delay between sending a command and reading the respons ,i get another a invalid  response(0x7f).Why can't i get correct response?

  • I would suggest you first check the following app note and be familiar with the sequence to communicate with bq34110.

    https://www.ti.com/lit/an/slua790/slua790.pdf

  • I have followed the sequence of the file slua790 many times.I get the same result.Check my program,help me to find the mistake,thank you!

    u16 tempDwei;
    u16 tempGwei;
    u16 tempValue;
    u16 Bq34110_cmd(u8 cmd)
    {
     
                    IIC_Start();                                          
     IIC_Send_Byte(0XAA);                          
      delay_us(10);                                 
     if(IIC_Wait_Ack())                         
     {
     return 0;                                       
     }
     
                     delay_us(10);                                
                      IIC_Send_Byte(cmd);    //cmd 0x08                  

     delay_us(10);                                  
     
     if(IIC_Wait_Ack())                           
     {
      return 0;                                     
     }
     
     delay_us(10);                                
                    IIC_Start();                                   
     IIC_Send_Byte(0XAB);                       
     delay_us(10);                                   
     
     if(IIC_Wait_Ack())                              
     {
      return 0;                                         
     }
     
      delay_us(10);                                  
     
     tempGwei=IIC_Read_Byte(0);         
                    delay_us(10);                                   
     IIC_Ack();                                       
     delay_us(10);                               
     tempDwei=IIC_Read_Byte(0);        
                    tempValue=(tempGwei<<8)|tempDwei;
     delay_us(10);                                            
      IIC_Stop();
     return tempValue;
     
    }

  • Unfortunately, I am not able to verify your code.  I would suggest you get a logic analyzer to sniffer the i2c bus and compare the results to see what is wrong with your code.