AN2376 PSoC® 1 – Interface to Four-Wire Resistive Touchscreen Author: Svyatoslav Paliy, Andrij Bilynskyy Associated Project: Yes Associated Part Family: CY8C24x94 Software Version: PSoC ® Designer™ 5.4 CP1 Related Application Notes: None Abstract AN2376 shows how PSoC 1 can be used to control a resistive touchscreen, and read (x,y) positions of single touches as well as touch pressure. It describes the essential mathematics in detail, and includes a method for calibrating a touchscreen to a display. A project is included that passes touchscreen readings to a PC through a USB HID interface. Contents Introduction Introduction .......................................................................1 Construction of Resistive Touchscreens ...........................2 Resistive Touchscreen Measurement Method ..................2 PSoC Implementation .......................................................5 Power Consumption (Pen Interrupt) ..................................7 Touchscreen Calibration ...................................................8 Appendix A: Hardware Setup (Not Actual Size) ..............11 Appendix B: Board Bill of Materials .................................12 Appendix C: Touchscreen Controller PC Test Application13 Appendix D: Three-Points Calibration Procedure ............14 Appendix E: Capacitive Touchscreens as Alternative to Resistive Touchscreens ..................................................16 About the Author .............................................................17 About the Author .............................................................17 Document History ............................................................18 Touchscreen interfaces are effective in many information appliances, in personal digital assistants (PDAs), and as generic pointing devices for instrumentation and control applications. This application note describes resistive types of touchscreens. Their construction is simple, their cost is low, and their operation is well understood by users. The only concern is that the resistive layers can be damaged by very sharp objects. This document considers the basic principles of how resistive touchscreens work and how to best convert these analog inputs into usable digital data using a PSoC. When developing more complex touch-assisted projects; there is often a need for additional peripheral units, such as operational and instrument amplifiers, filters, timers, digital logic circuits, AD and DA convertors. As a general rule, implementation of these extra peripherals brings in additional difficulties: space for new components, additional attention during production of a printed circuit board, power consumption increase. All of these factors can significantly affect the project price and development cycle. PSoC has made many engineers’ dreams come true; that is, to have all their project needs covered in one chip. www.cypress.com Document No. 001-15228 Rev. *D 1 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen Construction of Resistive Touchscreens Resistive touchscreens are constructed as shown in Figure 1. They consist of two top transparent glass or acrylic panels and a bottom transparent insulating panel. Both top panels are coated with electrically conductive layers. These layers have uniform resistance made from indium tin oxide (ITO). The panels are separated by invisible non-conducting spacers. Figure 1. Resistive Touchscreen Construction Transparent Conductor (ITO) Bottom Side YP The conductive bars are located on the opposite edges of the panel. The layer has uniform resistance; that is, the voltage applied to the layer produces a linear gradient across this layer. Both layers are orthogonal to each other, and voltage gradients in layers are orthogonal, too. In an equivalent circuit of a resistive touchscreen, we can offer conductive layers as resistors between the conductive bars in the corresponding layers. When we press a touchscreen, we get a connection between the resistive layers. In a circuit, we offer this connection as a resistor, too. Equivalent circuits for touched and untouched touchscreens are shown in Figure 2. Figure 2. Touchscreen Equivalent Circuits Transparent Conductor (ITO) Top Side YP YP RY+ RY+ YM YN YN RY- Conductive Bar (Silver Ink) RY- XN Rtouch Rx- XN Rx- XM Rx+ XP Untouched Rx+ XP Touched XP Insulating Material (Glass) The top layer panel is flexible and the bottom layer panel is rigid. Pressing the flexible top sheet creates an electrical contact between the resistive layers, essentially closing a switch in the circuit. The four electrical wires are connected to conductive bars. Resistive Touchscreen Measurement Method A touch can be defined by three parameters. The first and second parameters are X-position and Y-position. The third parameter relates to “touch pressure” and allows the touchscreen to differentiate between finger and stylus contacts. www.cypress.com To measure a 4-wire touch sensor, a VCC voltage is applied to a conductive bar on one of the layers while the other conductive bar on the same layer is grounded, see Figure 3a. In this powered layer we have a linear voltage gradient (0.. VCC). One of the conductive bars in the other layer is connected to an ADC through large impedance. The ADC reference is set to VCC, which makes the ADC range (0..max ADC value). When the screen is touched, the ADC reading corresponds to the position on one of the axes. To obtain the second coordinate, the other layer must be powered and read by the ADC. VCC, GND, Analog hi-Z, and ADC input are switched between the two layers, as shown in the Y-position measurement in Figure 3. The second ADC reading corresponds to the position on the other axis. Finally, to obtain the touch pressure, we take two measurements of the cross-layer resistance. VCC is applied to a conductive bar on one of the layers while a conductive bar on the other layer is grounded. We measure the voltages on the unconnected bars, shown in depictions c and d in Figure 3. Document No. 001-15228 Rev. *D 2 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen Figure 3. Various Parameter Measurements Vcc Analog hi-Z Analog hi-Z YP Rx+ ADC Vref=VCC XN XP Vcc YP Touch Screen Ry+ Touch Screen Rx+ XN GND XP Rx- ADC Vref=VCC Ry+ Rx- Rtouch Analog hi-Z Rtouch YN YN Ry- RyAnalog hi-Z PSoC a) X-position Measurement GND PSoC b) Y-position Measurement Analog hi-Z Current (when touched) YP Analog hi-Z Current (when touched) Vcc YP Touch Screen ADC Vref=VCC Ry+ Rx+ XN XP Touch Screen Ry+ Rx+ XN GND XP RxRtouch Vcc GND ADC Vref=VCC RxRtouch YN YN Ry- RyAnalog hi-Z Analog hi-Z c) Touch pressure Z1 Measurement PSoC Now it’s possible to develop a mathematical equation to calculate the cross-layer resistance, from our ADC results X, Y, Z1, Z2 (see Figure 3). From Figure 3a, you can write: d) Touch pressure Z2 Measurement PSoC By analogy from Figure 3b: Ry − Ry − Y = = ADmax R y − + R y + R y _ plate Equation 2 V V X = in = in = ADmax V ref Vcc iR x − Rx− = = i (R x − + R x + ) R x − + R x + Rx− R x _ plate Where, Ry_plate = Ry-+Ry+ – Y-plate resistant From Figure 3c: Rx − Z1 = ADmax Rx − + Rtouch + R y + Equation 1 Where, Equation 3 And from Figure 3d: X = ADC value when ADC input voltage is equal Vin ADC_resolution ADmax=2 –- Maximum ADC value + 1 Rx − + Rtouch Z2 = ADmax Rx − + Rtouch + R y + Vref – Reference ADC voltage, for measurements using Vref = Vcc Equation 4 Rx_plate = Rx-+Rx+ – X-plate resistance www.cypress.com Document No. 001-15228 Rev. *D 3 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen You can then obtain the cross-layer resistance that represents touch pressure, from Equations 1, 3, and 4: Rtouch = Rx _ plate ⋅ X 2 ADC _ resolution Z2 − 1 Z1 Equation 5 And the other cross-layer resistance, which also represents touch pressure, from Equations 1, 2, and 3: Rtouch 2 ADC _ resolution Y = Rx _ plate ⋅ ADC _ resolution − 1 − Ry _ plate 1 − ADC _ resolution 2 Z1 2 X Equation 6 Equation 5 requires a known X-plate resistance, measurements of X-position (X), and two additional cross-panel measurements (Z1 and Z2) of the touchscreen Equation 6 requires known X- and Y-plate resistance values but only allows measurement of Z1. For calculation touch pressure, you can use one of those equations. In the real projects, you must have three touchscreen parameters such as X-position, Y-position, and pressure. To calculate touch pressure, you can use either of these equations. Equation 6 requires three ADC measurements while Equation 5 requires four. Using Equation 6 is faster, but its arithmetic is more complicated. A flowchart for the touchscreen parameter measurement routine is shown in Figure 4. Figure 4. General Touchscreen Parameter Measurement Routine Flowchart Start Configure port to measure touch pressure Configure port for Y - position Measurement Measure Z1 and Z 2 Measure Y Configure port for X - position measurement Measure X and calculate touch pressure, P Configure port for touch detection and ensure that touch screen is still touched Return Parameters www.cypress.com Document No. 001-15228 Rev. *D 4 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen PSoC Implementation The PSoC internal structure is very simple (see Figure 5). Pins P0[1], P0[3], P0[5], and P0[7] are used for the touch panel interface. Signals from the input pins are switched through the analog column input multiplexer to the PGA, and then to the delta-sigma ADC. Figure 5. PSoC Configurations for each of the Measurement Diagrams in Figure 3 YN (Strong 0) YN (Hi-Z analog) YP (Hi-Z analog) YP (Strong 1) XN (Strong 0) XN (Hi-Z analog) XP (Strong 1) XP (Hi-Z analog) a) X-position Measurement b) Y-position Measurement YN (Hi-Z analog) YN (Hi-Z analog) YP (Strong 1) YP (Strong 1) XN (Strong 0) XN (Strong 0) XP (Hi-Z analog) XP (Hi-Z analog) c) Touch pressure Z1 d) Touch pressure Z2 measurment measurment www.cypress.com Document No. 001-15228 Rev. *D 5 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen The PSoC-based schematic is also very simple (see Figure 6). The touchscreen is directly connected to the PSoC device ports. Resistors R1 and R2 are used as pull downs to terminate the PSoC inputs when the plates are not driven. Figure 6. Device Schematic YP XM +5V XP P2[3] P2[1] P4[7] P4[5] P4[3] P4[1] P3[7] P3[5] P3[3] P3[1] P5[7] P5[5] P5[3] P5[1] 48 47 46 45 44 43 50 49 R3 24R 42 41 40 39 38 37 36 35 34 33 32 31 30 29 P7[7] P7[0] P1[0] P1[2] P1[4] P1[6] Vss D+ DVdd 19 20 21 22 15 16 17 18 P1[7] P1[5] P1[3] P1[1] CY 8C24794 P2[2] P2[0] P4[6] P4[4] P4[2] P4[0] P3[6] P3[4] P3[2] P3[0] P5[6] P5[4] P5[2] P5[0] 23 24 25 26 27 28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 R2 1M P0[6] P0[4] P0[2] P0[0] P2[6] P2[4] P2[5] P2[7] P0[1] P0[3] P0[5] P0[7] YM Vss Vdd U1 Touch Scren 56 55 54 53 52 51 R1 1M R4 24R +5V J1 Vdd -D +D Gnd 1 2 3 4 C1 0.1u USB To debug this project, measured data is transferred to the PC through the USB interface. The USB HID device class is used to simplify data transfer to the PC and to avoid writing a separate USB driver for the PC. The PSoC device sends a data packet to the PC that contains four 16-bit parameters. Table 1 shows the data packet structure. A simple PC application has been developed for evaluation (Appendix C). Table 1. Data Packet Structure Number Offset in Bytes Length in Bytes 1 0 2 X touch coordinate 2 2 2 Y touch coordinate 3 4 2 Z1 4 6 2 Z2 www.cypress.com Parameter Name Document No. 001-15228 Rev. *D 6 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen Power Consumption (Pen Interrupt) PSoC devices have very little power consumption in sleep mode. If a touchscreen has not been touched for a long period of time, there is no need for operation or measurement. The touchscreen is allowed into sleep mode and waits for a pen interrupt, at which time the controller wakes up and measures the touch parameters. To use this feature (see Figure 7), apply a voltage to the touchscreen XP connector through resistors with the resistance exceeding the maximal cross-panel touchscreen resistance in the touched mode by four or more times. In the proposed design, cross-panel touchscreen resistance values are about 1K. An internal pull-up resistor Rpull up with a resistance of 5.6 K can be used. The port pin that is connected to the touchscreen XP connector is configured to pull-up mode and set to a logic state of high. The port pin connected to the XN connector is configured as a digital input and the pin-interrupt is enabled by a falling edge. If the touchscreen is still untouched, XN holds the logic in a high state, while if the touchscreen is touched; the voltage of XN falls to a low logic level and initiates an interrupt that wakes up the PSoC. A flowchart for the touchscreen controller performance using sleep mode is shown in Figure 8. Pull up “ R pull up 1” Start Have Actions to Executing? No Configure Ports for Pen Interrupt Mode Go to Sleep Mode Yes Execute Actions Pen Interrupt Measure Touch Screen Parameters RETI Figure 7. Touchscreen Configured for a Waiting Pen Interrupt Current (when touched) Figure 8. General Touchscreen Controller Routine Flowchart Using Sleep Mode Wait, Low Power Consumption Vdd Analog hi-Z YP Touch Screen XP XN Rtouch YN Digital In Interrupt on falling edge Strong “0” PSoC www.cypress.com Document No. 001-15228 Rev. *D 7 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen Touchscreen Calibration In most cases, the touchscreen is mounted over an LCD or another display. If this is the case, the data measured by the touchscreen must be translated into true screen coordinates. Figure 9 shows some misaligned touchscreen and display coordinates. This figure also shows that it is possible to describe each point on the display as PD = [XD,YD] and each point on the touchscreen as PT = [XT,YT]. The calibration algorithm proposed in this application note allows eliminating scaling factors and mechanical misalignment of the touchscreen. The challenge for the calibration algorithm is to translate the set of coordinates reported by the touchscreen into a set of coordinates that accurately represents a point on the display. Three error factors are presented: [X D , YD ] = f ([X T , YT ]) Rotation of the touchscreen coordinates relative to the display coordinates. Linear shift of the coordinates. A scaling factor. Equation 7 dX LCD Touch LCD Touch (XD,YD)=(Rcos(α-dα),Rsin(α-dα)) (XD,YD)=(XT+dX,YT+dY) (XT,YT)=(Rcos(α),Rsin(α)) (XD,YD) P (X ,Y ) T T Scale KY Figure 9. Error Factors (XD,YD)=(XT*KX,YT*KY) (XD,YD) P (X ,Y ) T T (XD,YD) P (X ,Y ) T T α-dα dY Linear shift error LCD Touch α C 1 1 dα 11 C Rotation of the touch screen error Scale KX Scaling error The LCD coordinate XD can be expressed as: X D = K x R cos(α − dα ) + dX = K x R cos α cos dα + K x sin α sin dα + dX = K x X T cos dα + K xYT sin dα + dX = α x X T + β xYT + dX Equation 8 YD = K y R sin (α − dα ) + dY = K y R sin α cos dα − K y cos α sin dα + dY = K yYT cos dα − K y X T sin dα + dY = α y X T + β yYT + dY Equation 9 Where, αx = Kxcos(dα), βx = Kxsin(dα), αy = –Kysin(dα), and βy = Kycos(dα). www.cypress.com Document No. 001-15228 Rev. *D 8 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen From Equations 8 and 9, when there are three independent points (not on one line), you can get the coefficients αx, αy, βx, βy, dX, and dY. Assuming that (XD1, YD1), (XD2, YD2), and (XD3, YD3) are three independent points selected on the LCD, and (XT1, YT1), (XT2, YT2), and (XT3, YT3) are the corresponding points on the touchscreen, Equations 8 and 9 can be used to write Equation 10: X D1 = α x X T 1 + β xYT 1 + dX X D 2 = α x X T 2 + β xYT 2 + dX X D 3 = α x X T 3 + β xYT 3 + dX YD1 = α y X T 1 + β yYT 1 + dY YD 2 = α y X T 2 + β yYT 2 + dY YD 3 = α y X T 3 + β yYT 3 + dY Equation 10 Or in matrix form: X D1 αx X D 2 = A × β x and X dX D3 YD1 α y YD 2 = A × β y Y dY D3 Where, X T 1 YT 1 1 A = X T 2 YT 2 1 X T 3 YT 3 1 From Equation 10: αx X D1 −1 β x = A × X D 2 and dX X D3 α y YD1 −1 β y = A × YD 2 dY Y D3 Equation 11 Where, A-1 is the inverse of matrix A. The three points—(XD1, YD1), (XD2, YD2), and (XD3, YD3)—are selected on the display surface, and the elements in matrix A are measured from the touchscreen during calibration. The 3-points calibration’s equations, in a non-matrix form, and source code for it, optimized for 8-bit cores, are described in Appendix D. www.cypress.com Document No. 001-15228 Rev. *D 9 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen For best results, the first sample point must be located at the distance of approximately 10% of the screen size in the upperleft corner. The second and third points must be at a distance of approximately 10% of the screen size from the screen edges in the center of each side (see Figure 10). For the calibration process, points 1, 2, and 3 must be touched in an ascending order. Calibration must be performed before use for each device that contains a touchscreen. There is no need to perform calibration every time the device is powered on. However, it is prudent to save the calibration parameters in the energy-independent memory. Every time the device is used after calibration, it reads these coefficients and uses them to calculate the true screen coordinates. Figure 10. Calibration Point’s Placement on Screen In many applications, users may use more than three points in their calibration routines to average or filter the noisy readings from the touchscreen controller. For calibration with more than three points: X D1 X D2 αx . = A × β x and . dX . X DN YD1 YD 2 α y . = A × β y where . dY . Y DN X T 1 YT 1 1 X T 2 YT 2 1 . . . A= . . . . . . X Y 1 TN TN Equation 12 To resolve Equation 12, both sides can be multiplied by A’s pseudo-inverse matrix, (AT×A)–1×AT, where AT is A’s transpose matrix. X D1 X D1 αx . −1 T T and × × = × A A A β x . dX . X DN ( www.cypress.com ) YD1 YD1 α y . −1 T T = × × × A A A β y . dY . Y DN ( ) Document No. 001-15228 Rev. *D Equation 13 10 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen Appendix A: Hardware Setup (Not Actual Size) Top Layer Components www.cypress.com Bottom Layer Components Document No. 001-15228 Rev. *D Bottom Layer Wires 11 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen Appendix B: Board Bill of Materials Description Count Designator Manufacturer Manufacturer Part Number Digi-Key Part Number EVALUATION POD FOR CY8C24X94 1 U1 Cypress CY3210-24X94 428-1998-ND Touchscreen 1 - Bergquist 400426 BER275-ND Connector 1 J1 Molex Connector Corporation 52271-0479 WM7954TR-ND Connector 2 U1 sockets FCI 95200-301LF 95200-301LF-ND Resistors (R1, R2) 2 R1, R2 Panasonic - ECG ERJ-6GEYJ105V P1.0MATR-ND Capacitor 1 C1 Kemet C0805C104M5RACTU 399-1169-2-ND www.cypress.com Document No. 001-15228 Rev. *D 12 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen Appendix C: Touchscreen Controller PC Test Application www.cypress.com Document No. 001-15228 Rev. *D 13 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen Appendix D: Three-Points Calibration Procedure The calculation of inverse matrix is very difficult for 8-bit cores. Equation 11 in a non-matrix form: ( X D1 − X D 3 )(YT 2 − YT 3 ) − ( X D 2 − X D 3 )(YT 1 − YT 3 ) ( X T 1 − X T 3 )(YT 2 − YT 3 ) − ( X T 2 − X T 3)(YT 1 − YT 3 ) ( X − X T 3 )(YD 2 − YD 3 ) − ( X D 2 − X D 3 )(YT 1 − YT 3 ) β x = T1 ( X T 1 − X T 3 )(YT 2 − YT 3 ) − ( X T 2 − X T 3)(YT 1 − YT 3 ) αx = dX = YT 1 ( X T 3 X D 2 − X T 2 X D 3 ) + YT 2 ( X T 1 X D 3 − X T 3 X D1 ) + YT 3 ( X T 2 X D1 − X T 1 X D 2 ) ( X T 1 − X T 3 )(YT 2 − YT 3 ) − ( X T 2 − X T 3 )(YT 1 − YT 3 ) (YD1 − YD 3 )(YT 2 − YT 3 ) − (YD 2 − YD 3 )(YT 1 − YT 3 ) ( X T 1 − X T 3 )(YT 2 − YT 3 ) − ( X T 2 − X T 3)(YT 1 − YT 3 ) ( X − X T 3 )(YD 2 − YD 3 ) − (YD1 − YD 3 )( X T 2 − X T 3 ) β y = T1 ( X T 1 − X T 3 )(YT 2 − YT 3 ) − ( X T 2 − X T 3)(YT 1 − YT 3 ) Y ( X Y − X T 2YD 3 ) + YT 2 ( X T 1YD 3 − X T 3YD1 ) + YT 3 ( X T 2YD1 − X T 1YD 2 ) dY = T 1 T 3 D 2 ( X T 1 − X T 3 )(YT 2 − YT 3 ) − ( X T 2 − X T 3 )(YT 1 − YT 3 ) αy = The right sides of the all expressions contain the same denominator. This can be very useful for integer arithmetic, isolating the denominator and marking it as a C vector: C [0] = ( X T 1 − X T 3 )(YT 2 − YT 3 ) − ( X T 2 − X T 3 )(YT 1 − YT 3 ) C [1] = ( X D1 − X D 3 )(YT 2 − YT 3 ) − ( X D 2 − X D 3 )(YT 1 − YT 3 ) C [2] = ( X T 1 − X T 3 )(YD 2 − YD 3 ) − ( X D 2 − X D 3 )(YT 1 − YT 3 ) C [3] = YT 1 ( X T 3 X D 2 − X T 2 X D 3 ) + YT 2 ( X T 1 X D 3 − X T 3 X D1 ) + YT 3 ( X T 2 X D1 − X T 1 X D 2 ) C [4] = (YD1 − YD 3 )(YT 2 − YT 3 ) − (YD 2 − YD 3 )(YT 1 − YT 3 ) C [5] = ( X T 1 − X T 3 )(YD 2 − YD 3 ) − (YD1 − YD 3 )( X T 2 − X T 3 ) C [6] = YT 1 ( X T 3YD 2 − X T 2YD 3 ) + YT 2 ( X T 1YD 3 − X T 3YD1 ) + YT 3 ( X T 2YD1 − X T 1YD 2 ) Now Equations 8 and 9 look like: C[1] X T + C[2]YT + C[3] C[0] C[4] X T + C[5]YT + C[6] YD = C[0] XD = This method is optimal for 8-bit cores. The following code demonstrates it. www.cypress.com Document No. 001-15228 Rev. *D 14 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen // PSoC designer sample code for 3-points calibration procedure. // Define point type X,Y typedef struct tPoint{ signed int x; // signed value by calibration signed int y; // rotation or shift can return little neg value }tPoint; // Calibration vector C, init it default values static signed long CIndex[7]; // Global points on touch and display // Tp – received point on touch // Dp – calculated point on display static tPoint Dp, Tp; // Refresh the display point from the received touch point void DisplayPointGet(void) { Dp.x = (CIndex[1]*Tp.x + CIndex[2]*Tp.y + CIndex[3])/CIndex[0]; Dp.y = (CIndex[4]*Tp.x + CIndex[5]*Tp.y + CIndex[6])/CIndex[0]; } // // // // 3-point calculate calibration indexes Input: Tp - pointer to array of 3 points on touchscreen Dp - pointer to array of 3 points on display void CalculateCalibrationConstants(tPoint *Dp, tPoint *Tp) { CIndex[0] = (signed long)(Tp->x-(Tp+2)->x)*((Tp+1)->y-(Tp+2)->y) - (signed long)((Tp+1)->x-(Tp+2)->x)*(Tp->y-(Tp+2)->y); CIndex[1] = (signed long)(Dp->x-(Dp+2)->x)*((Tp+1)->y-(Tp+2)->y) - (signed long)((Dp+1)->x-(Dp+2)->x)*(Tp->y-(Tp+2)->y); CIndex[2] = (signed long)(Tp->x-(Tp+2)->x)*((Dp+1)->x-(Dp+2)->x) - (signed long)(Dp->x-(Dp+2)->x)*((Tp+1)->x-(Tp+2)->x); CIndex[3] = (signed long)Tp->y*((signed long)(Tp+2)->x*(Dp+1)->x -(signed long)(Tp+1)->x*(Dp+2)->x) + (signed long)(Tp+1)->y*((signed long)Tp->x*(Dp+2)->x -(signed long)(Tp+2)->x*Dp->x) + (signed long)(Tp+2)->y*((signed long)(Tp+1)->x*Dp->x -(signed long)Tp->x*(Dp+1)->x); CIndex[4] = (signed long)(Dp->y-(Dp+2)->y)*((Tp+1)->y-(Tp+2)->y) long)((Dp+1)->y-(Dp+2)->y)*(Tp->y-(Tp+2)->y); - (signed CIndex[5] = (signed long)(Tp->x-(Tp+2)->x)*((Dp+1)->y-(Dp+2)->y) - (signed long)(Dp->y-(Dp+2)->y)*((Tp+1)->x-(Tp+2)->x); CIndex[6] = (signed long)Tp->y*((signed long)(Tp+2)->x*(Dp+1)->y -(signed long)(Tp+1)->x*(Dp+2)->y) + (signed long)(Tp+1)->y*((signed long)Tp->x*(Dp+2)->y -(signed long)(Tp+2)->x*Dp->y) + (signed long)(Tp+2)->y*((signed long)(Tp+1)->x*Dp->y -(signed long)Tp->x*(Dp+1)->y); } www.cypress.com Document No. 001-15228 Rev. *D 15 ® PSoC 1 – Interface to Four-Wire Resistive Touchscreen Appendix E: Capacitive Touchscreens as Alternative to Resistive Touchscreens A capacitive touchscreen panel consists of an insulator such as glass coated with a transparent conductor such as indium tin oxide (ITO). Because a human body is also an electrical conductor, touching the surface of the screen results in a distortion of the screen's electrostatic field measurable as a change in its capacitance. Different technologies can be used to determine the location of a touch. The location is then sent to the controller for processing. Unlike a resistive touchscreen, you cannot use a capacitive touchscreen through most types of electrically insulating materials, such as gloves. You need a special capacitive stylus, or a special-application glove with finger tips that generate static electricity. This disadvantage especially affects capacitive touchscreens’ usability in consumer electronics, such as touch tablet PCs and capacitive smart phones in cold weather. In surface capacitance basic technology, only one side of the insulator is coated with a conductive layer. A small voltage is applied to the layer, resulting in a uniform electrostatic field. When a conductor, such as a human finger, touches an uncoated surface, a capacitor is dynamically formed. The sensor's controller can determine the location of a touch indirectly, basing on the change in the capacitance as measured from the four corners of the panel. Because it has no moving parts, the controller is moderately durable but has a limited resolution. It is prone to false signals from parasitic capacitive couplings, and needs calibration during manufacturing. It is therefore most often used in simple applications such as industrial controls and kiosks. Projected capacitive touch (PCT) technology is a capacitive technology that permits more accurate and flexible operation by etching the conductive layer. An X-Y grid is formed either by etching a single layer to form a grid pattern of electrodes, or by etching two separate, perpendicular layers of a conductive material with parallel lines or tracks to form a grid (comparable to the pixel grid found in many LCD displays). A greater resolution of PCT allows operation without a direct contact. The conducting layers can be coated with further protective insulating layers, and operate even under screen protectors, or behind weather and vandal-proof glass. PCT is a more robust solution www.cypress.com compared to the resistive touch technology because the PCT layers are made from glass. Depending on the implementation, an active or passive stylus can be used instead of or in addition to a finger. This is common with point-of-sale devices that require a signature capture. Gloved fingers may or may not be sensed, depending on the implementation and gain settings. Conductive smudges and similar interference on the panel surface can interfere with the performance. Such conductive smudges come mostly from sticky or sweaty fingertips, especially in high humidity environments. Collected dust, which adheres to the screen due to the moisture from fingertips, can also be a problem. There are two types of PCT: Self Capacitance and Mutual Capacitance. A PCT screen consists of an insulator such as glass or foil, coated with a transparent conductor (Copper, ATO, Nanocarbon, or ITO). If a finger (which is also a conductor) touches the surface of the screen, the local electrostatic field distorts. This distortion can be measured to obtain the finger coordinates. Nowadays, mutual capacitive technology is more common than PCT technology. In mutual capacitive sensors, there is a capacitor at every intersection of each row and each column. A 16-by-14 array, for example, has 224 independent capacitors. A voltage is applied to the rows or columns. Bringing a finger or conductive stylus close to the surface of the sensor changes the local electrostatic field, which reduces the mutual capacitance. The capacitance change at every individual point on the grid can be measured to accurately determine the touch location by measuring the voltage in the other axis. Mutual capacitance allows multi-touch operation where multiple fingers, palms, or styli can be accurately tracked at the same time. Self-capacitance sensors can have the same X-Y grid as mutual capacitance sensors, but the columns and rows operate independently. With self-capacitance, the capacitive load of a finger is measured on each column or row electrode by a current meter. This method produces a stronger signal than the mutual capacitive method, but it is unable to detect accurately more than one finger, which results in "ghosting", or misplaced location sensing. Document No. 001-15228 Rev. *D 16 ® PSoC 1 – Interface to Four-wire Resistive Touchscreen About the Author Name: Svyatoslav Paliy Title: Engineer Background: Svyatoslav Paliy graduated from Lviv Polytechnic National University (Ukraine) in 2000. His interests include various aspects of embedded systems design in addition to Windows and Linux programming. Contact: [email protected] Name: Andrij Bilynskyy Title: Application Engineer Background: Andrij Bilynskyy graduated from Ivan Franko National University of Lviv in 2003. His interests include SW/HW electronic design and Embedded OS. Contact: [email protected] www.cypress.com Document No. 001-15228 Rev. *D 17 ® PSoC 1 – Interface to Four-wire Resistive Touchscreen Document History Document Title: PSoC® 1 – Interface to Four-wire Resistive Touchscreen - AN2376 Document Number: 001-15228 Revision ECN Orig. of Change Submission Date Description of Change ** 1063380 XSG 05/11/2007 New application note. *A 1551303 XSG 10/05/2007 Changed title *B 3347438 ANBI_UKR 08/18/2011 Project support the latest version PSoC designer *C 3479341 ANJR_UKR 01/12/2011 Title Updated Major content update. *D 4528452 RJVB 10/08/2014 ® Updated Software Version as “PSoC Designer™ 5.4 CP1” in page 1. Updated attached example project to PD5.4 CP1. Updated to new template. Completing Sunset Review. www.cypress.com Document No. 001-15228 Rev. *D 18 ® PSoC 1 – Interface to Four-wire Resistive Touchscreen Worldwide Sales and Design Support Cypress maintains a worldwide network of offices, solution centers, manufacturer’s representatives, and distributors. To find the office closest to you, visit us at Cypress Locations. PSoC® Solutions Products Automotive cypress.com/go/automotive psoc.cypress.com/solutions Clocks & Buffers cypress.com/go/clocks PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP Interface cypress.com/go/interface Lighting & Power Control cypress.com/go/powerpsoc cypress.com/go/plc Memory cypress.com/go/memory Optical Navigation Sensors cypress.com/go/ons PSoC cypress.com/go/psoc Touch Sensing cypress.com/go/touch USB Controllers cypress.com/go/usb Wireless/RF cypress.com/go/wireless Cypress Developer Community Community | Forums | Blogs | Video | Training In March of 2007, Cypress recataloged all of its Application Notes using a new documentation number and revision code. This new documentation number and revision code (001-xxxxx, beginning with rev. **), located in the footer of the document, will be used in all subsequent revisions. PSoC is a registered trademark of Cypress Semiconductor Corp. All other trademarks or registered trademarks referenced herein are the property of their respective owners. Cypress Semiconductor 198 Champion Court San Jose, CA 95134-1709 Phone Fax Website : 408-943-2600 : 408-943-4730 : www.cypress.com © Cypress Semiconductor Corporation, 2007-2014. The information contained herein is subject to change without notice. Cypress Semiconductor Corporation assumes no responsibility for the use of any circuitry other than circuitry embodied in a Cypress product. Nor does it convey or imply any license under patent or other rights. Cypress products are not warranted nor intended to be used for medical, life support, life saving, critical control or safety applications, unless pursuant to an express written agreement with Cypress. Furthermore, Cypress does not authorize its products for use as critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress products in life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges. This Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by and subject to worldwide patent protection (United States and foreign), United States copyright laws and international treaty provisions. Cypress hereby grants to licensee a personal, non-exclusive, non-transferable license to copy, use, modify, create derivative works of, and compile the Cypress Source Code and derivative works for the sole purpose of creating custom software and or firmware in support of licensee product to be used only in conjunction with a Cypress integrated circuit as specified in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source Code except as specified above is prohibited without the express written permission of Cypress. Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress reserves the right to make changes without further notice to the materials described herein. Cypress does not assume any liability arising out of the application or use of any product or circuit described herein. Cypress does not authorize its products for use as critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress’ product in a life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges. Use may be limited by and subject to the applicable Cypress software license agreement. www.cypress.com Document No. 001-15228 Rev. *D 19