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.

TSC2007 stuck with SCL low and read errors

Other Parts Discussed in Thread: TSC2007, TSC2003, TSC2017

I have 2 issues with the TSC2007:

1. After a couple of minutes, the SCL line gets stuck in low. I tried several things to solve this issue: I reduced the SCL clock frequency to about 74kHz, so there is no need for the TSC2007 to stretch the clock ever. I also tried a couple of different configurations, like power down between cycles and ADC converters always on, but the SCL line still gets stuck low. What can cause the TSC2007 to exhibit such a behavior?

2. I am sometimes getting erroneous readings, meaning too large numbers. I am expecting numbers in the range of about 400 when I am reading the X coordinate, but sporadically I am getting numbers in the range of 3000 thrown into the data stream. This happens also when I keep my finger pressed on the touch screen and just watch the numbers the TSC2007 spits out. I could not correlate anything to this behavior.

A little bit about my setup: I am communicating with the TSC2007 through a PCA9665A. VDD is 3.3V, decoupled with a 1µF capacitor and a 10µF Tantalium capacitor very close to the TSC2007. The SCL and SDA lines are pulled to 3.3V with 1.2kOhm resistors. The TSC2007 sits right next to the PCA9665A, so the SCL and SDA traces are only about 3/4" long. For diagnostic purposes I cut the SCL line, put a jumper in and added another (weak) pullup resistor. So I can disconnect the SCL line from the PCA9665A. Thus I was able to find out that the TSC2007 is keeping the SCL line low, not the PCA9665A. The PCA9665A supports clock stretching.

Any help is appreciated. I am already stuck with this issue for several days.

  • Hi Alex,

    I will take a look at your issue and get back to you soon.

    Andy

  • Hi Alex,

    Here are my comments:

    1. After a couple of minutes, the SCL line gets stuck in low. I tried several things to solve this issue: I reduced the SCL clock frequency to about 74kHz, so there is no need for the TSC2007 to stretch the clock ever. I also tried a couple of different configurations, like power down between cycles and ADC converters always on, but the SCL line still gets stuck low. What can cause the TSC2007 to exhibit such a behavior?

    Comment: The i2c interface of TSC2007 supports up to 3.4MHz and the reference code written by me worked well with 400k clock frequency, so I don't think TSC2007 will have to stretch the clock.

    I guess you have some working firmware already, don't you? Cold you try constantly writing some value to tsc2007 or reading from tsc2007 via i2c? To make the debugging easier for you, I suggest the host communicates with tsc2007 via i2c directly.

    Andy
  • Hello Andy,

    I have a working firmware; just some kinks need to be ironed out. I meanwhile replaced the TSC2007 with a TSC2003, and this chip does not exhibit the issue with getting stuck with SCL low. With the TSC2007 I was able to work for only a few minutes before it got stuck, the TSC2003 is already running for hours without this issue. So the issue with the SCL stuck in low seems to be specific to the TSC2007. According t the I2C specification, the devices need to be able to pull down 3mA, thus with a 3.3V supply the minimum resistor value is 1.1kOhm. I am using 1.2kOhm, which should be fine. May there is an issue with the TSC2007, so it cannot handle 3mA and gets locked?

    Alex

  • Hi Alex,

    Did you tried other pull up resistors for the SCL and SDA pins? In the TI TSC2007EVM, we use 2.7k pull up resistors, which work very well with a 3.3V supply.

    Andy
  • Hello Andy,


    I now replaced the 1.2kOhm resistors by 3.32kOhm (I did not have 2.7kOhm on hand). Let's see if the touchscreen controller survives the overnight run. Still I like to know what can cause the TSC2003 / TSC2007 to get stuck with SCL or SDA low. Someone at TI must know this. It is very unsettling that this can happen without any obvious reason. So I need to know.


    Alex

  • Hi Alex,

    One common issue for the TSC2007 is the POR issue. There are some time / sequence requirements for the POR. If these requirements are not met, something abnormal will occur.

    Take a look at this application note for the details: www.ti.com/.../sbaa161.pdf

    I suggest you use TSC2017 instead of TSC2007 if possible because TSC2017 has a reset pin and the POR issue doesn't exist.

    Andy

  • Hi Andy,


    It is certainly no reset issue. After replacing the resistors for SCL and SDA with 3.3kOhm, the controller was working for almost 24 hours. And then it crashed again with SCL stuck in low. Why???? This is certainly the most problematic chip I ever worked with in my entire life. It simply does not make sense that SCL gets stuck low after the chip was working fine for such a long time. I even did not touch the touchscreen when it happened. I need a solution for this, and I need it fast. The PCB is already build, and I only can replace the chip with something of the same package. The TSC2017 is not an option, since I always try to avoid BGA chips.

    Any suggestions?


    Alex

  • Hi Alex,

    Here is what I just did:
    a) I attached a Cortex-M3 MCU board to a TSC2007 EVM and connected a fixed resistor network to the 4 analog inputs of TSC2007 to simulate a constant touch, which caused the PENIRQ to stay low forever.
    b) Then I launched the reference firmware for TSC2007. The firmware keeps reading data via i2c with 400k clock frequency from the tsc2007 device since the PENIRQ is low.
    c) The firmware has been running for over 30 mins. NO i2c error has ever occurred.

    I can repeat this experiment next Monday for a longer time, like 2 hours, but I don't think I will find the any i2c issue since this device has been shipped to quite a few different customers all over the world in a large quantity for several years.

    Any suggestion from me?
    Step 1: Order aTSC2007EVM from TI or get one from any TI Disty.
    Step 2: Try to duplicate this issue using the TSC2007 EVM.
    Step 3: a) If you cannot duplicate the issue with the EVM, you need to compare the schematic and PCB layout files of your failing board and the TSC2007EVM.
    b) If you can duplicate the issue, take a close look at the i2c module of the host MCU. I doubt that there is something wrong with your i2c code.

  • Hi Andy,

    I am getting a TSC2007 EVM. Still, I need to know what conditions can cause the SCL line to get stuck (except for the reset issue). Is it spikes on the SCL or SDA line, maybe spikes on the touchscreen lines X+, X-, Y+, Y-, maybe noise on ground or supply, maybe on the IRQ line? I need a hint so I can start searching for the root cause. Right now I am completely in the dark about what can cause the issue.

    Alex
  • Hi Andy,

    I meanwhile got a TSC2007 EVM. I cannot learn anything from the layout, since on that PCB there is a TSC2007 in BGA. I am using TSSOP. However I noticed that there are positions for capacitors at the touchscreen lines, which are currently not stuffed. The datasheet does state something about the need for capacitors at these lines to filter out noise in certain applications, but does not give any typical values. What is a typical value for these capacitors? I expect them in the range of 1-10nF. In my application, the traces from the controller to the touch screen are quite long, about 9 inches. Does this cause an issue and may be responsible for the SCL lock (though I don't see the mechanism for that)?

    I don't like to repeat myself, but the main question here still is: What can cause the SCL line to lock at low after the controller was operating nicely for quite some time?

    Alex
  • Hi Alex,

    The capacitors on the analog inputs lines are used when you have a noisy LCD underneath the touch screen panel. I don't think they have anything to do with your i2c issue. If you are curious about why and how these capacitors are used, take a look at this application note: www.ti.com/lit/an/sbaa155a/sbaa155a.pdf

    To give you an answer on the root cause of your issue, I should be enabled to repeat your issue in my office with my TSC2007 EVM. However, as I told you last Friday, my bench board didn't show any i2c failure after running over 30 mins. I have not got any compliant from other customers on this issue before.

    Andy
  • Hi Andy,

    We are not getting closer to a solution. Fact is that you cannot reproduce my error. Fact also is that I am getting this error. Up to now I do not even have a hint of why SCL could get stuck in low after the device was working well for hours. It is time to contact the engineering team which designed the TSC2007. They will know what the issue may be. Doing anything else is just a bit waste of time.

    Alex
  • Alex,

    I did a quick search and found this post that might possibly answer your question.

    e2e.ti.com/.../214469

    Regards,
    Gautham
  • Hello Gautham,

    I read that thread and document already. I even reduced the clock frequency to 74kHz, so there is never a need for the TSC2007 to strech the clock, and still it gets stuck with SCL low. So I really don't know what is going wrong.

    Alex