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.

TCA8418 reset question

Other Parts Discussed in Thread: TCA8418

Hi,

we are using TI TCA8418 chip to control matrix keypad (please see our previous post with all the details at this link http://e2e.ti.com/support/logic/f/151/p/64748/235709.aspx#235709 ). We have written a device driver for it for Windwws CE 6 on Atmel AT91SAM9263EK platform and everything works most of the time.

However I came across an issue when there is heavy use of keypad. It is a stress test when QA person presses and releases key on keypad quickly enough to stress the device driver and ensure that failures, if any, are handled properly.

During such stress test one case was found when i2c communication between Atmel i2c master controller and TI TCA8418 chip stops after a i2c read operation on one of TI TCA8418 registers fails. I have tried to reset master i2c controller on Atmel side and try again but no luck. Then I also added a reset step of TI TCA8418 chip using RESET line, and i2c communication still is dead. However after powering off and back on TCA8418 chip i2c communication resumes normally.

My question is : does reset of TCA8418 by using its RESET line perform full reset of the chip, including its i2c sussystem (page 7 of its datasheet does not show a connection between RESET line and i2c bus control block) or not ?

Thanks

Sergey, MCTS

  • Hello Sergey,

    Sorry for the delayed reply.

    Reset does go to the I2C control portion of the circuitry. The block diagram is simplified. I am not sure why the reset is not working.

    When you say I2C communication is dead, what exactly do you mean? Are you able to write to the device and receive an ACK? Does the SDA line behave as expected, only no ACK from the TCA8418? 

  • Hi,

    thank you for your reply.

    I am working at the moment with the reset option and after doing more steps it seems that the reset line can reset entire TCA8418 chip including its i2c subsystem, but I also need to go through all the steps to reconfigure TCA8418 chip as we do in power-on procedure, as all settings seem to be lost upon reset of TCA8418 (which was not obvious to me at the time when I had asked this question).

    When I notice i2c communication becomes dead, then what I see on the scope is no clock and no data signals on i2c wires between Atmel i2c controller and TCA8418 after this problem occurs, power is still on. Atmel i2c controller, even after being reset a few times, cannot read nor write to TCA8418 past that point, until TCA8418 chip is reset and reconfigured. Then it is possible for Atmel i2c controller to resume communication with TCA8418, but only until this problem happens again (can be in a few seconds if you type keys fast). Then I need to repeat reset and reconfigure and so on.

    I have tried different clock speeds and the problem can be reproduced at 60, 100 and 400 kHz i2c clock speed in our setup.

    Do you know any situation under TCA8418 can encounter an internal condition, when it stalls and thus cannot perform i2c communication ? Maybe there is a limitation on how fast keypad keys should be pressed or released  for TCA8418 to work properly ? Maybe there is a setting which must be changed I am not aware of ?

    Thanks

    Sergey

  • No clock indicates to me the problem is with the Atmel controller. This is the master device, and should drive the CLK. 

    The signal is high on the I2C wires?

    I have not seen any issues like this before with the TCA8418. 

  • Hi,

    thank you for your quick reply.

    You are correct, both clock and data i2c lines remain high after such problem is encountered.

    As I mentioned, after such situation occurs, I first attempt to to reset Atmel i2c controller several times and re-read or re-write TCA4818 register, and if that still fails, then reset TCA4818 chip, reconfigure it and then again re-read or re-write its register, whichever operation was failing. The fact that resetting only Atmel master i2c does not help [sort of] tells me that the problem may be not just in Atmel ic2 master controller, but rather in a slave holding a line high, i.e. may be in TCA4818. I am not saying Atmel i2c controller is perfect, but we have used it before for a while with another i2c peripheral, EEPROM device, and never saw a problem.

    Thanks

    Sergey

  • Sergey,

    Is there anything else on the line that could hold the SCL high?

    The SCL input of the TCA8418 is a single direction input buffer. It has no way to hold the line high unless physically damaged in an unrecoverable way. And the more likely result of damage is a short to GND. 

    If there was CLK and no data I would agree it's possibly an issue with the TCA8418, but lack of CLK points to some other cause.