Main Site Documentation

Touch driver with ChipworkX


#1

I have a custom board using the ChipworkX module with a custom 4.3" LCD board connected via a 40 way FPC cable.

My MicroSD card is working so I know SPI is fine.

The issue I have is with touch. If I put the device into calibration mode it waits for the 1st touch on the centre. If I then touch this point, it accepts it and then starts in each corner except for the fact that is proceeds to each corner on its own as if being touched. This is not the case.

With a scope on the IRQ line I can see that the touch goes LOW when the centre point is touched and then goes high. At this point it stays high as the 4 corners go off and do their own thing. the PENIRQ output has a 10K pullup otherwise the line is always LOW as it is an open collector output.

Looking at the CS line to the touch controller I can see regular access to it so I am assuming that either the touch driver is polling the controller or that it thinks the IRQ line is still low, which it is not.

I am using the ADS7846 which is compatible with the TSC2046 that is on the ChipworkX demo board but in my case, the IC is located on the back of the LCD PCB.

Is the touch driver setup for polling or interrupt driven?


#2

The driver uses interrupt to get started but then it polls the chip until the results are out of bound.


#3

Thanks Gus.

This is kind of what I expected and it looks like it could be noise. I’ll see about adding some capacitors to the touch screen lines to see if this will filter it out.


#4

Hi Gus,

What I am seeing is MISO activity on the PENIRQ line of my touch driver. I have tried running a separate line for PENIRQ and it still appears on the output!

I am going to replace the ADS7846 with a TSC2046 to see if that cures the problem.


#5

I switched to the TSC2046 and I am no longer getting MISO cross talk on the PENIRQ line but I still can’t calibrate the touch screen.

If I put a break point in the calibration routine within glide, I see the following values’

Centre 3167, 1826
Top left 3553, 2482
Bot left 3267,. 1572
Bot right 2227, 226
Top right 2406, 2579

Each time I run the calibration I get wildly different values. Above is just one set I recorded.

Running the same code on the Dev board I get consist values that increment in the correct direction.

I have double checked all the wiring and it matches the dev system.

I have decoupling on the supply to the TSC2046. The design is a copy of one I have with an Atmel microcontroller and it works fine.

Any ideas what could be wrong?


#6

No clue. Something has to be different than the devsys.


#7

Hi Gus

Does the driver use the internal 2.5V reference?

I am assuming it does as the ref input on the dev board only goes to the header pins and doesn’t have any voltage when I measure it.


#8

Yes it does