Dear Everybody,
probably we have discovered the bad issue in the TSC interface of the iMX6UL.
The "detect" action is taken with a correct h/w setup but with possibly with a wrong reading method.
The h/w setup for the detect action is made by the TSC interface inside the iMX6UL with a big 200K pullup to the Xleft side of the RTP (resistive touch panel). Notice that typical resistance of an RTP (e.g.: 7") is about 700 Ohms on X axis (300 Ohms on Y axis).
The Xright side is connected to the ADC input.
The Y foil is set to GND level.
When there is a touch, the huge pullup and the small X resistance make a very low voltage to the Xright pin. Typically this voltage should be around 10 to 20 mV for a "good" contact.
But if the RTP is just slightly touched, this voltage can go up to 300mV or in some cases 500mV.
The "bad" issue is that TSC interface does not check the touch reading the ADC analog input, but manages the same input as digital GPIO input.
So the "logic 0" will result in "0" also for false/partial/unstable touches. Because the valid input range of a "0" for a GPIO used as digital input is quite large.
This leads to the erratic behavior discussed in the posts before.
We have dismantled the standard driver.
When we get interrupt from TSC which "detects" a touch we stop the state machine of the TSC, reprogram the ADC input to make an analog conversion, read the value, and we accept the detect interrupt as "true detect" only if we read below 25mV.
This action is still under development and analysis, but so far we can reject almost 98% of false touches, and the RTP response is now reasonable.
I would advice h/w designers that RTP is still largely used in cheap applications, where the 2 US$ overprice of an RTP on an LCD, compared to the 10+ US$ of a CTP brings a huge saving if the control system is used in thousands.
But end user will never accept any erratic behavior, because everybody is used to make touches on his smartphone: there you have a CTP (capacitive touch) with multiple touch detection and very fast response even for quick soft touches.
So it is likely that end users of a control device with RTP will touch the RTP in the same manner of a smartphone's CTP.
The only way to "train" the end user to the correct usage of an RTP is to apply a threshold to cut (un-detect) light touches. So the user will begin to give stable good-pressure touches to the RTP.
This is what we have done. It works. And usually this is done internally by RTP interface chipsets like Microchip AR1100 where you can set the touch sensitivity threshold.
It's a pity that the TSC interface inside the iMX6UL does not check the detection using analog conversion with a presettable threshold for the touch sensitivity.
I suggest that everybody using iMX6UL TSC should modify the driver to make the detect checking with analog measurement of the touch, against a threshold of a few mV (to be set by s/w).
We can eventually give more details to whom is interested.
Best regards
Paolo