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.

TSC2046 returning strange results

Other Parts Discussed in Thread: TSC2046

I have the TSC2046 interfaced to a micro via the micro's hardware SPI port, which appears to be working correctly. The waveforms are exactly as shown in the datasheet, particularly regarding where the data edges are relative to the SPI clock. I have slowed the SPI down to about 125 KHz clock.

When I run my planned code, I respond to a touch (\PenIRQ) by reading X then Y. X returns some intermediate value around 0x1100 to 0x1500, and Y in the area of 0x4000. The values change a bit from reading to reading, but don't seem to correlate to the touch position. On release, the X value is always zero, and the Y value a bit higher than on the previous touch. Touch and release are detected quite reliably.

If I try to read all 8 of the possible readings in order, I sometimes get 0x5FF8 for the first, but always 0x7FF8 for the rest. If I read instead, as suggested in another post, X, Z1, Z2, Y in that order, all come back 0x7FF8.

I have tried switching the \CS pin for every reading, and also just leaving it on for a whole sequence. No noticeable difference.

I have looked carefully at the waveforms on a scope and they're absolutely squeaky clean, full swing, nice square edges.

I tried using the Busy signal (it's connected to an I/O on the controller), but it seems to always go high upon a command, staying high until the next SPI clock (whenever I time out), regardless of how soon or long the delay is. Thus it seems rather less than useful.

The sample code in tsc2046_reference_firmware.zip didn't offer any suggestions.

Any suggestions welcome!