Touch Panel on Android using I2C?

Started by kbro, May 29, 2014, 01:20:35 PM

Previous topic - Next topic


I know that the Android build on the A20 supports touch panel input from devices such as the A13-LCD7-TS through the TP[XY][12] pins on the LCD_CON connector.  The question is, does it support touch input through an I2C interface instead?

The reason for asking is that I'm investigating using an FPD-link version III serialiser/deserialiser to connect a remote touchscreen, and this technology multiplexes an I2C control channel on top of the video link, so I'd like to use it to interface to the digitiser (rather than run potentially long wires for the TP[XY][12] inputs).

Does anyone have any experience with this?


What type of touch panel? Resistive or capacitive?

Capacitive panels have built in I2C controllers. Resistive do not so you need something like the TSC2014 from TI to handle this at the panel end.

I was looking at the FPD LINK III and I think this allows a GPIO back from the panel side. You will need this as the touch controller generates an interrupt output when the panel is touched otherwise your driver is going to have to continually poll for touch. Drivers for cap touch I've come across in the kernel are IRQ based.

Better you get this working with the FPD link as long wires with I2C will very likely fail.


Thanks for the reply.  I hadn't got as far as choosing between capacitive and resistive, I just wanted to know whether it was possible at all.  It sounds like it is, and it's maybe easier with capacitive.

With a capacitive screen I'd have the FPD-link III deserialiser connected to the screen's LCD input, with the touch panel I2C output also connected to the deserialiser.  Then comes the long bit of 2-core wire that carries the LVDS video signal with the I2C data multiplexed over it.  At the A20 end the serialiser would connect to LCD-CON and break out a connection to a I2C interface on one of the UEXT sockets.  I assume there's already an Android driver for I2C capacitive touch screen - is that right?

With a resistive screen you could add a 4-wire-to-I2C converter at both ends, then present the touchscreen to the A20's TP[XY][12] inputs, with the board being blissfully ignorant of the I2C and FPD-link leg of the connection.  Would that work?  Alternatively, if there's an I2C driver that can talk to the 4-wire-to-I2C converter at the screen end then we wouldn't need a converter at the A20 end.  Does one already exist?


The Touch Revolution display has a driver and I have documented how to get this working with Android but if you are going for LVDS you should consider a higher resolution 7" LCD instead.

Other panels that use the FT5xxx driver are also supported. Newhaven have new 7" LCD with cap touch that is under $100 in 1 offs. It's not as elegant as the Touch Revolution and you would have a lip around the panel when mounted.

Your idea to I2C the touch won't work. The TP inputs to the CPU are ADC and it ouputs 2 as GPIO and reads in the ADC on the other 2. The only way I2C works is to use the TSC2014 and write a driver for it.

Easier will cap touch will depend on the driver. TI have a sample Linux driver for the TSC2014