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.

TLC59208F I2C Programming-Reading the Registers

Hello!

I am able to read the registers by creating an I2C transaction and sending 0x80 + addrbyte (shifted by 1 bit).

I get back 18 bytes of data (expected), however, the data looks to be a little different than what I thought.

Reference the TLC document page 20 Table 3 (section 9.6.1) which describes the 18 bytes of the registers.

at byte 0, instead of getting MODE1, it appears like I'm getting MODE2 which by default is 3 (and this is what I get in byte 0).

All the other bytes down to the 17th byte seem to follow in order with the description but are all shifted up by 1 byte (since MODE1 is not present in byte 0).

However, the last byte is 0x81 and I have no idea what that is supposed to be.  Normally the last byte should be the all call address but that seems to be

in the previous byte.  Here is an example:

[0] expect MODE1     but  I get  [0] MODE2    (I think it is mode2 because it has the default value = 3)

[1] expect MODE2    but get      [1] pwm #1

[2] expect pwm#1      but get     [2] pwm#2

... etc

...etc

[16] expect SUBADDR3 but get [16] ALL CALL ADDR

[17] expect ALL CALL ADDR but get [17]  0x81  ???? what is this???

Here are the actual values I get from reading the register when I power up:

byte [0] = 3,  [1] through [8] = 0, [9] = 255 (which matches GRPPWM default), [10] through [12] = 0,

[13] = 146, [14] = 148, [15]=152 ---> [13] through [15] appear to be subaddresses.

[16] = 144 which seems to match up with the ALL CALL ADDR, then [17] = 129 (0x81) which I don't see defined in the document.

Can someone explain why I don't get MODE1 back and also explain what is it I'm getting in the last byte.

thanks!