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.

TLC 59208F Software Reset

Other Parts Discussed in Thread: TLC59208F

Hello!

Well, my last post was never answered, but I'll try again with this one.

First of all, at least the main things I need to do with programming this chip are working ok.

The thing I need now is how to do a software reset.  From the document, section 9.3.3 Software Reset,

2. The reserved SWRST I 2C bus address 1001 111 with the R/W bit set to 0 (write) is sent by the I 2C bus master.

3. The TLC59208F device(s) acknowledge(s) after seeing the SWRST Call address 1001 0110 (9Eh) only. 

I tried different addresses as it is not clear what the real address should be, with this software reset.

It seems like I have a special software reset address, then need to send 0xA5 and 0x5A, then the board should reset, but it doesn't.

If you look at #2 above, you think this address is 7bits = 0x4F, but if you look at #3, you think it is 0x4B but then you see the incorrect

translation of 1001 0110 as (9Eh), so that throws another kink in what you think the address should be.

(1001 0110 = 96h  and not 9Eh).

Can someone help me with this?  I've guessed and tried various permutations but nothing is working (resetting the board).

thanks!

  • Hi David,

    Sorry to hear about the other post. I'll start working on this one now.
  • Hi Harry,

    Did you ever look into this?

    thx

    David
  • David,

    I just finished this up.

    I confirmed that the hex address in bullet 2 of section 9.3.3 is incorrect.

    The correct sequence to send is

    1001 0110 - 96 (keep in mind bit0 here is the R/W bit)

    1010 0101 - A5

    0101 1010 - 5A

    I confirmed this in the lab today to make sure that it turned off the LED and reset the oscillator bit.

    I'm working on getting the datasheet updated to correctly show the right value. Thanks again for highlighting this

    (Also, I'll follow back with the unanswered post since I have the setup made).

  • Thanks a lot Harry!
    I think I tried that sequence already but will try again.........

    Maybe if you have a chance, you can look into my other problem with Mode 1.
    REally appreciate your help!!

    David
  • Looking into it now, I got backed up trying to get my setup to work, but now my bench is ready to help you to get this device fully integrated in your solution.
  • Harry,

    From your post, you said:

    The correct sequence to send is

    1001 0110 - 9E (keep in mind bit0 here is the R/W bit)  

    1010 0101 - A5
    0101 1010 - 5A

    1001 0110 is NOT 9E,  ---------------> I cannot tell if you mean 1001 0110 (0x96) or 1001 1110 (0x9E)

    I tried both + other addresses but reset is not working for me.

    What is the reset address?

  • My apologies David,

    I meant (0x96h). Since it's the initiation from the master, bit 0 here is the R/W bit. This is the value that I confirmed in the lab.
    Are you looking at the I2C through a scope? If so can you post it? That should help us get to the bottom of this.
  • Thanks for your quick response.

    I don't have a scope, but perhaps can get one at some point.

    Maybe it has something to do with going through the Microsoft functions or perhaps some timing issue.
    I can see that the function to execute the read/write action is returning a 1 for each write which means the address is recognized.
    If it does not recognize the address , it always returns 0.
    There is no data returned after each write but don't know if that is correct or not.

    ie
    write to address 0x96 --> 1001 0110 function returns 1 which is length of data sent, but no data returned in receive buffer.
    write to address 0x96 --> 1010 0101 same as above
    write to address 0x96 --> 0101 1010 same as above

    also tried one transaction:
    write 3 bytes to address 0x96 --> 1001 0110 1010 0101 0101 1010

    The Microsoft function handles the low level handshaking. It works ok for the other messages, such as all call and read/write to a register. As long as there is nothing special about this reset message, I would think it should work as any other message.....
  • David,

    I think the issue is that the reset function is looking for a certain sequence. in both transactions, you never get the correct sequence from the starting command. Try these two things.

    write TWO bytes to address 0x96 --> 1010 0101 0101 1010 - This would give the sequence that I sent to the device. If this does not work, you may need to adjust the address in case Microsoft function is changing the address due to the initialization
  • Harry,

    thx for continuing to try to help me on this.

    I write 2 bytes to 0x96 --> 1010 0101 0101 1010     ---> but it didn't work

    I put in a loop and tried all addresses from 0x60 through 0xA0 but nothing works.

    most of those addresses I get return 0 since those addresses don't exist, but for 0x96, I get a return which

    means the address exists but I don't see any reset (ie led go off, etc).

    As to the address, I have to shift to the right by 1 bit as it seems the Microsoft function will shift the address automatically to bring in the write bit.

    So, for address 0x96, I have to pass the function a value of 0x4B or (0x96>>1).

    If I try to just send 0x96 in the function, I get an exception when I try to write.

    Note that I do this for the all call addr (0x90) and it works ok, ie Configuration((ushort)(0x90>>1),100);

    Therefore, I believe I am sending the address correctly since my code works by sending 0x10 for 0x20 and 0x48 for 0x90, etc.

    I assume by sending 0x4B (=75) would translate for 0x96.

    Here is a question, when you send the first byte (0xA5), what do you get in return as a response and is that response instantaneous

    or do you have to wait??  I am wondering if I should send 1 byte, and wait x number of ms before sending the next byte (0x5A).......

    thx,

    David