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.