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.

TLC59108F: Outputs will not function.

Part Number: TLC59108F
Other Parts Discussed in Thread: TLC59116F

Hello,

I'm using a TLC59108F Driver, and cannot get the outputs to function.

I have scoured forums, google, datasheets, and any apnotes, including anything for the TLC59116F. I even replaced the IC thinking it may be defective.
The Power Rails are good, the ground is solid, and the reset line is pulled high through a 10K Resistor.

Hardware Setup:
VCC: 3V3
Micro: Arduino Due
Communication: I2C1 (running at 100KHz, 3K3 Pullup Resistors)
I2C Address: 0x41 (A0 pulled to 3V3 through 10K, A1-A3 to GND)

- Each TLC59108F output connects to an external P-CH Mosfet (NDS336P) gate being pulled high by a 10K resistor.
- I have confirmed the external P-FET functions by manually pulling the Gates to GND.
- I have confirmed the I2C waveform on a scope, and observed a good clean clock/data train.
- The TLC59108F provides it's ACK after every byte sent, and the Start/Stop bits are good.

Test Firmware Flow:
1. I write 0x00 to the Mode1 Register.
2. wait 50mS (100x longer than the datasheeet states)
3. write 0xFF to LEDOUT0 Register
4. wait 50mS
5. write 0xFF to LEDOUT1 Register
6. wait 50mS
7. Write 0xFF to all individual Registers. (PWM0-PWM7)

Nothing....

I switched the LEDOUT Regs to full on, on all channels, and still nothing.

I am at a loss. I spent all weekend troubleshooting this, and I'm out of ideas. help.

  • Hi,

    Would you send 0x01 to Mode1 and try allcall assress (90h or 1001 000) to check if it's caused by I2C address?

    Thanks.
    Regards,
    Kenneth
  • I will try this tonight! Fingers crossed. Did I pick an address that brings out a bug maybe?

    In my troubleshooting last weekend, I ran an address loop for I2C addresses. Starting at 0x00, to 0x80, with the same code as I listed above, and as expected, only address 0x41 responded with an ACK.

    Thanks for the reply. :)
  • I used the allcall to address it, the Arduino "wire" library has some limit on addresses, and it crashes if the address is above 127.

    As it turns out, that addressing issue caused me to look deeper into it, and I found my [user-error] ... ugh... I was calling my TLC59108F Initialization routine, before I Initialized the I2C.  So I was not clearing the OSC bit.

    Thanks for your help, anyway Kenneth.  I got it working now.