Problem:
PWM values are not being consistently set when writing to these registers using I2C multiple byte write.
Test Setup:
After I enable the chip I run my driver_init() method that does the following:
1. Init the I2C peripheral
2. Set CTRL1 register: Enable chip and set engines to execute in free run mode
3. Set CTRL2 register: Disable all engines
4. Set MISC register: Enable auto inc, charge pump to auto, force internal clock
5. Set all driver currents: multiple byte I2C transfer starting at register 0x26
6. Turn on all drivers: set register 0x05 for drivers 1-8, set register 0x05 for driver 9
7. Set pwm on all drivers to 255 using multiple byte write or single byte write methods (preprocessor switch)
Results:
I'm getting inconsistent PWM values when writing to the LP5523 PWM registers when I do a multiple byte write vs looping through each pwm register individually. The multiple byte write method is being used throughout the code in other areas without issue (specifically when we write the SRAM sequences). I've tested this by doing both types and writes and performing a read back on all the pwm registers. I captured the I2C transmissions on a logic analyzer and verified that each byte in the multiple byte write is acknowledged by the LED driver, but when reading those registers back some of the registers read back as 0x00 after setting them to 0xff. I don't see these issues when writing these registers one at a time. Any help would be appreciated.
Question:
Q1: Are there any known issues when performing a multiple byte write on the PWM registers specifically?
Q2: Are there any or setup issues that I may have overlooked that would cause this issue?