TCA6408A: Sequential writing to speed operation?

Part Number: TCA6408A
Other Parts Discussed in Thread: MSP430G2001

By my calculations, at 400KHz I2C bus, the fastest I can change the outputs on the device is 3 bytes, 9 bits each -> 67.5uS.

I need to go faster than this, so I'm wondering if there is some way to shortcut the communications and for example start a message, send the output register, and the just keep sending new values for the output without the overhead of the first two bytes.   Is this an option?  If not can you recommend a part which would allow rapid changing of the output?  I'm using the device to switch a mux channel, and the bottleneck in the system is the writing to the TCA6408A.


  • Hello,

    There is no way you could change the I2C standard communication to the device. The device has it's own internal logic that will make it wait until it sees it's address and then wait for the register and the data for that register. If you just kept sending data bytes it would not respond since most likely the data bytes you are sending wouldn't match the address of the device. It has no functionality for sequential writing.

    There are some I2C devices that work up to 1000 kHz and more. Before we look at other options can you explain in further detail the purpose of this I2C device? Is level translation necessary? Do you need 8 output ports? Is I2C even necessary for this application? What are the voltage requirements of your system? Lastly what speed are you hoping to operate at?

    This will all help me give you a recommendation for an alternate device.



  • I'd also like to add that technically you can run this device faster than 400 kHz. The minimum clock low time and high time is 1.3 us and 0.6 us respectively. Without a rise and fall time this would give you a speed of 526kHz. However, the rise and fall times of the clock depends on the capacitance of bus and the pull up resistors. The maximum fall/rise time on the bus is 300 ns. So by decreasing your capacitance and therefore decreasing your fall/rise time you can reach clock speeds that are higher than 400 kHz.

    TI does not guarantee that this device will work past 400 kHz. I would not recommend trying to operate this device at a higher speed and I would just look for an alternative.

  • Thanks for the reply.  
    I already have a pcb that was designed for a different purpose. I was hoping that I could simply re-use it,  and hoped that if I didn’t send a stop on the i2c bus that the device would keep interpreting the successive messages as new values to use as outputs;  you never know...
    I don’t need level shifting, and need 6 outputs (only output no input needed).  I may even install a simple micro instead and use it to sequence the channels automatically,  instead of requiring the i2c messages.   But it would be great to know you suggestion for alternates.
    I’d like to be able to change the output value about every 25us.
  • Let me know if my understanding is correct. You don't even need I2C in this scenario right, you just simply want to send a switching signal to 6 outputs?

    There is no I2C P2P solution that supports a faster clock rate. We do make an 18 bit I/O expander than can run at 1000kHz. However even at that speed I think it would be cutting it very close. I personally think that I2C isn't the right solution for this problem, like you send a micro would work a lot better. 

    For instance the MSP430G2001 is cheaper than the TCA6408, it has 10 GPIO pins, and has a 16MHz clock speed.

    Let me know if you have any further questions.