ISL97901 output voltage problem

I am using ISL97901 for one of my project and having following issues:

> When I am modifying D1's current gain values, all D1, D2 and D3's output currents are changing. 

> When D2 and D3 data is modified, none of outputs are getting modified.

void ISL_init(I2C_HandleTypeDef *hi2c)
{
    Bus_Write(ISL97901_ENABLE_CONTROL, val_ENABLE_CONTROL , hi2c);
    Bus_Write(ISL97901_CLOCK_CONTROL, val_CLOCK_CONTROL , hi2c);
    Bus_Write(ISL97901_LED_R_LSB, val_LED_R_LSB , hi2c);
    Bus_Write(ISL97901_LED_G_LSB, val_LED_G_LSB , hi2c);
    Bus_Write(ISL97901_LED_B_LSB, val_LED_B_LSB , hi2c);
    Bus_Write(ISL97901_LED_RGB_MSB, val_LED_RGB_MSB , hi2c);
}

#define ISL97901_LED_STATUS            0x01
#define ISL97901_ENABLE_CONTROL        0x02
#define val_ENABLE_CONTROL            0x14
#define ISL97901_CLOCK_CONTROL        0x04
#define val_CLOCK_CONTROL            0x87
#define ISL97901_LED_R_LSB            0x13
#define val_LED_R_LSB                0x0D
#define ISL97901_LED_G_LSB            0x14
#define val_LED_G_LSB                0x0D
#define ISL97901_LED_B_LSB            0x15
#define val_LED_B_LSB                0x0D
#define ISL97901_LED_RGB_MSB        0x17
#define val_LED_RGB_MSB                0x00

Even each gain status registers are showing different values that I am setting in the gain registers. So output is getting programmed as per the code but I am not able to get different currents as output. The next doubt might be hardware but the outputs are not shorted I have checked properly. Can you help me in pinpointing the issue.

Parents Reply Children
  • Hi , 

    There is no sample code for ISL97901. To debug the issue Kindly read back all registers values and capture the waveform of EN1/2/3 pins and FB1 pin. 

    1. When I am modifying D1's current gain values, all D1, D2 and D3's output currents are changing.
    2. When D2 and D3 data is modified, none of outputs are getting modified.”

    Thanks

    AB

  • Hi AB, I am able to get the voltages of 5v now. But I need help in programming: what is the relation between sequence of RGB control and the voltage and current setting that we are doing. Because when we are programming the current control registers first time for RGB separately and then starting enabling the RGB. That first time they getting set to the required voltage and current. But after that When the 2nd RGB sequence comes It goes back to default value.

    So does the current register needed to be addressed each and every time when any of the RGB gets enabled. if not then How can I control that.

    There is no information regarding this on the data sheet. Please provide me this sequence data if possible. Hence I asked for a sample code so that I can understand the sequence using the firmware.