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.

BQ79731Q1EVM-060: Problems with freeze command

Part Number: BQ79731Q1EVM-060

Tool/software:

Hi Experts!

I work with the Demoboard (single device) of the BQ79731. I have parameterized the chip (hopefully) correctly and started the ADCs. I use the sync mode (V_I_SYNC) because for my application it is very important to sample voltage and current synchronously. Before I readout the data, I set the FREEZE_EN bit. However, I only read reset values. If I don't set the FREEZE_EN bit everything works fine. Am I doing something wrong here or have I parameterized something incorrect?

BR, Christoph

  • Christoph,

    It is possible that you are reading too fast after the sync or you are not setting the ADCs correctly. Could you give us the exact commands that you are sending to the device and their timings?

    Regards,

    Ben

  • Hi Ben!

    Thanks for the quick reply. Here are the commands I send and the timing...

    1.) After switching on, I wait for 100ms and then send the wakeup ping. The ping is 2.3ms long. After that I wait for 10.2ms.
    2.) Then comes the auto-addressing:
       2.1) CONTROL1: Enable auto-addressing: 0xD0; 0x03; 0x09; 0x01; 0x0F; 0x74;
       2.2) DIR0_ADDR: Set device address: 0xD0; 0x03; 0x06; 0x00; 0xCB; 0x44;
       2.3) COMM_CTRL: Set base device as top of stack: 0xD0; 0x03; 0x08; 0x01; 0x0E; 0xE4;
    After that I wait for 68.9us.
    3.) Then comes the parameterization...
       3.1) DEV_CONF1: disable nfault: 0xD0; 0x00; 0x02; 0x00; 0x39; 0x84;
       3.2) GPIO_CONF1: GPIO1/2 inputs: 0xD0; 0x00; 0x1E; 0x12; 0xB1; 0x49;
       3.3) GPIO_CONF2: GPIO3/4 inputs: 0xD0; 0x00; 0x1F; 0x12; 0xB0; 0xD9;
       3.4) GPIO_CONF3: GPIO5/6 inputs: 0xD0; 0x00; 0x20; 0x12; 0xA1; 0x29;
       3.5) GPIO_CONF4: GPIO7 disabled GPIO8 input: 0xD0; 0x00; 0x21; 0x10; 0x21; 0x78;
       3.6) ADC_CTRL1: vs adc and cs adc in sync (256us), gp adc 4096us, cs low pass filter disabled: 0xD0; 0x03; 0x10; 0x85; 0x04; 0x87;
       3.7) FAULT_RST1: reset fault: 0xD0; 0x03; 0x40; 0x83; 0xB8; 0x85;
       3.8) FAULT_RST2: reset fault: 0xD0; 0x03; 0x41; 0xFF; 0x40; 0x2E;
       3.9) FAULT_RST3: reset fault: 0xD0; 0x03; 0x42; 0x1F; 0xB9; 0x8C;
       3.10) SW_CTRL: set sw1 and sw3 to high: 0xD0; 0x03; 0xB0; 0x0A; 0x3D; 0x23; 
       3.11) ADC_CTRL2: vs low pass filter disabled, continuous run, start all adcs: 0xD0; 0x03; 0x11; 0x05; 0x04; 0xB7;
    Then I wait 64ms (just for testing)
    4.) ADC_CTRL2: Enable freeze: 0xD0; 0x03; 0x11; 0x85; 0x05; 0x17;
    Then I wait 62ms (just for testing)
    5.) Request: Readout vf2/1: 0xC0; 0x05; 0x94; 0x03; 0x02; 0xE4;
    6.) The BQ79731 then responds: 0x03; 0x00; 0x05; 0x94; 0xFF; 0xFF; 0xFF; 0xFF; 0x30; 0x02 (These are not the right values!)
    7.) ADC_CTRL2: After the response -> Disable freeze: 0xD0; 0x03; 0x11; 0x05; 0x04; 0xB7;

    If I do not use a freeze command, the voltage measurement works without any problems. I hope you can help me with this problem.

    BR, Christoph

  • Christoph,

    I am consulting with team members about this issue. Your patience is appreciated. 

    Regards,

    Ben

  • Christoph,

    Sorry for the delay.

    Could you try to change the command where you send FREEZE_EN so that it does not also send ADC_GO? 

    Regards,

    Ben

  • Hi Ben!

    It's working now. Thanks for your help.

    BR, Christoph