Issue 527: replace TSC2007IYZG touch controller by CRTOUCHB10

Reported by Joerg Reisenweber, Dec 8, 2013

freescale touchscreen/digitizer controller CRTOUCHB10
H&nodeId=0112698268 (intro)
spll=1 (datasheet)
offers two-point touch gesture pinch/rotate detection on 4-wire 
resistive digitizer.

Evaluate if we can replace the currently used digitizer countroller 
TSC2007 by this component.


€1.72@100  in-stock:342

Comment 1 by Nikolaus Schaller, Dec 8, 2013

Interesting. It appears to have some algorithms integrated into the 
chip that we could be able to add to the TSC2007 driver.
It is known that the TSC2007 can distinguish between single or 
double finger touches. In double finger touch the 
"pressure" value is far beyond the maximum that can be 
achieved by a single finger.
And it is known that the standard x and y coordinates reported are 
more or less the center. So we may need to more cleverly use the 4 
ADC values to estimate distance and rotation.
So in the end we may not even need a different chip but different 
analysis of the data that is available.

Comment 2 by Joerg Reisenweber, Dec 8, 2013

to do multitouch on r-ts you need a way to probe the current that 
flows thru the planes. That's why the CRTOUCH has those two series 
resistors. We *might* be able to retrofir something similar to 
current design but I rather would use a proven solution.

Comment 3 by Nikolaus Schaller, Dec 8, 2013

more aspects to consier:
* power consumption - compare Page 60 (A.6) saying something about 
11mA @ 3.3V of Freescale chip with TSC2007 (39uA @ 1.8V)
* package dimensions (5x5mm vs. 1.5x2mm)

Both were the reasons to choose the TSC2007 in the GTA04 design 
being a low power and miniaturized design.

But, it looks as if the TSC2007 has not all possible options to 
connect the 4 wires between voltage and measurement. Maybe it would 
need additional external FETs for pull-up/down.

Control of these is problematic and needs space.

Anyways, it should not be too difficult to swap the chips. We may 
find room for both on the PCB (at least for prototypes).

Addendum - some tests with TSC2007 (GTA04) but not with trying to 
keep the pressure value constant:

Values		x, y, pressure, pendown(0/1), z1, z2, temp0, temp1, aux, 

raw:		x,y,z1,z2,temp0,temp1,aux
calculated:	pressure,pendown,resistance

no touch	0,0,0,0,306,0,0,1316,1586,101,65535
lower left	337,579,278,1,280,195,2366,1316,1583,102,506
upper left	358,3594,275,1,280,319,3708,1318,1585,103,512
center		1979,1911,294,1,331,1092,3055,1296,1566,102,478
upper right	3544,3709,271,1,306,1878,3924,1317,1584,102,519
lower right	3562,627,273,1,306,1404,2917,1315,1582,102,515
ll+ur		2409,2528,1679,1,357,1950,2455,1286,1560,101,83
ul+ur		2338,3461,823,1,331,2217,3423,1298,1568,103,171
ur+lr		3511,2244,941,1,331,2417,3184,1296,1567,104,149
ll+lr		2117,665,823,1,331,1216,1948,1294,1564,103,171
ll+center	1498,1618,1268,1,331,1294,2008,1291,1563,104,111
ul+center	1490,2475,912,1,331,1637,2900,1289,1561,103,154
ur+center	3028,3046,1133,1,331,2413,3150,1288,1561,103,124
lr+center	2655,1269,1036,1,331,1872,2586,1289,1559,104,135

So 'pressure' allows to easily decide between no, single, double 
<50	no touch
<500	single touch
>500	double touch

Getting the direction is difficult. One observation is that while 
trying to rotate two touches around a fixed center, x/y remain 
rougly constant (reporting the center) while the value of z2 changes 
between orientations, but not very much so that it may not be 
reliable enough to deduce some rotation angle. And it is unknown how 
that depends on the X vs. Y resistance.

The TSC2007 appears to more or less report the dimension (through 
pressure) and center of the touched area (being some rectangle for 
two fingers and treating a single finger as a small round area of 

Comment 4 by Joerg Reisenweber, Dec 8, 2013

yes, that's how 4-wire without currentsense/resistance-probe works. 
"Pressure" is actually the resistance between the two 
planes which is largely defined by area of contact. For a 2-touch 
function you need to probe resistance of each single blane (XL-> 
XR; YU -> YD) and that cna't get done without current sensing.

The power consumption of CTROUCH is pretty reasonable in idle mode 
(no touch) when using sleepmode. The 11mA are during touch 
detection. I think 5*5mm is not THAT huge, for sure smaller than 
TSC2007 with additional gear.

BTW this chip comes with free(?) linux/android drivers (pretty 
simple since it's already providing almost plaintext /dev/input data)

Comment 6 by Joerg Reisenweber, Jul 18, 2014

This guy (aldoilsant) seems to have done linux drivers. Might be 
worth offering a few bucks to him for sending the supposedly FOSS 
sources so we could upstream them

Comment 7 by Nikolaus Schaller, Jul 18, 2014

licence conditions are fun to read :)
"which contains an i.MX processor"
"You will not  ... disclosed or distributed in source code 
"redistributable at no charge"

But: "Open source software is not licensed under the terms of 
this Agreement, but is instead licensed under the terms of 
applicable open source license(s), such as the BSD License, Apache 
License or the GNU Lesser General Public License."

Looks as if someone must write a GPL compatible driver just by 
looking into the data sheet (which is IMHO sufficient 

A driver skeleton can likely be derived from the TSC200x I2C drivers.

Comment 8 by Joerg Reisenweber, Jul 18, 2014

strange. Haven't read the license conditions. But the datasheet 
calims "Linux(R) drivers available" - and the source I 
linked to above which the license seems to apply to are just .patch 
files which are meant to get applied to a linux-3.6.x kernel. I 
don't think such a kernel wouldn't be FOSS anymore, even with the 
patches applied. 
So maybe we just need to publish the patch *result* instead of the 
.patch files?

Comment 9 by Joerg Reisenweber, Jul 18, 2014

touchscreen_crtouch.patch results in a crtouch_mt.c file with GPLv2

Created: 8 months 22 days ago by Joerg Reisenweber

Updated: 1 month 11 days ago

Status: New

Owner: Joerg Reisenweber

Followed by: 1 person