Reported by Joerg Reisenweber, Dec 8, 2013
freescale touchscreen/digitizer controller CRTOUCHB10 http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=CRTOUC H&nodeId=0112698268 (intro) http://cache.freescale.com/files/32bit/doc/data_sheet/CRTOUCHDS.pdf?p 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. Availability: http://it.mouser.com/search/refine.aspx?Ntk=P_MarCom&Ntt=10761580 6 http://it.mouser.com/ProductDetail/Freescale-Semiconductor/CRTOUCHB10 VFM/?qs=sGAEpiMZZMsLOentiaxFGAHzN1npZW9rE5HLYxcJWfw%3d €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, resistance 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 tap: <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 touch).
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 5 by Joerg Reisenweber, Jul 18, 2014
Comment 6 by Joerg Reisenweber, Jul 18, 2014
http://www.freelancer.com/projects/Software-Architecture-CPlusPlus-Pr ogramming/Linux-Multi-Touch-Driver.html?t=b&utm_expid=294858-205. srtFykaOR_ulbzvw6_f6Sw.1 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 form" "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 information)... 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