Touchscreen data processing
View Patent ↗Capacitive touch sensors and touchscreen data processing methods are provided. In one embodiment, the method includes sequentially integrating and converting charge from each of a plurality of sensing capacitors in an array to digital data, the digital data including sample values corresponding to a measured capacitance for each of the plurality of sensing capacitors. Noise is then separated from useful information by filtering the sample values on a sample-by-sample basis. Finally, the filtered sample values are summed and a position of at least one contact on the array determined using the filtered capacitance values. Other embodiments are also provided.
1. A method comprising:
sequentially integrating and converting charge from each of a plurality of sensing capacitors in an array to generate digital data, the digital data including sample values corresponding to a respective measured capacitance for each of the plurality of sensing capacitors;
forming a sliding window of the digital sample values using a sample aperture of size W, wherein W is an integer greater than 2, wherein a position of each sample value within the sliding window is based on a sequence in which it was generated, and wherein border values are mirrored to enable the sliding window to include W samples for each position of the sliding window;
for each respective position of the sliding window:
sorting the respective sample values in the sliding window;
multiplying each sorted sample value in the sliding window by a respective predetermined weight value based on a respective sort position of the sample valued within the sliding window, wherein the weights include a plurality of non-zero values; and
summing products of the multiplied sample values, and outputting the sum as a filtered sample value for the respective position of the sliding window;
summing a plurality of the filtered sample values to form an accumulated sample value; and
using the accumulated sample value to determined a position of at least one contact on the touch sensor array.
2. The method of claim 1 , further comprising applying an amplitude filter configured to limit amplitude of each of the digital sample values.
3. The method of claim 2 , wherein the amplitude filter is configured to replace digital sample values having a value greater than an upper limit value or less than a lower limit value.
4. The method of claim 3 , wherein the amplitude filter is configured to replace digital sample values having a value greater than the upper limit value with the upper limit value, and to replace digital sample values having a value less than the lower limit value with the lower limit value.
5. The method of claim 3 , wherein the amplitude filter is configured to replace digital sample values having a value greater than the upper limit value with the digital sample value of a last preceding sample having a digital sample value lower than the upper limit value, and to replace digital sample values having a value less than the lower limit value with the digital sample value of a last preceding sample having a digital sample value greater than the lower limit value.
6. The method of claim 2 , wherein the amplitude filter is configured to reject digital sample values having a value greater than an upper limit value or less than a lower limit value.
7. The method of claim 6 , wherein the amplitude filter is further configured to replace digital sample values having a value greater than an upper limit value or less than a lower limit value when a first number (N) of digital sample values have been rejected within second a number (M) of the digital sample values.
8. A system comprising:
an analog front end configured to sequentially integrate and convert charge from each of a plurality of sensing capacitors of a touch sensor array to digital data; and
a channel engine to receive digital data from the analog front end and generate of sample values corresponding to a measured capacitance for the plurality of sensing capacitors, the channel engine including:
a sorting filter with weights (SFW) including a sliding window having a sample aperture of size (W), wherein W is an integer greater than 2, wherein a position of each sample value within the sliding window is based on a sequence in which it was generated, and wherein border values are mirrored to enable the sliding window to include W samples for each position of the sliding window, the SFW configured to:
for each respective position of the sliding window:
sorting the respective sample values in the sliding window;
multiply each sorted sample value in the sliding window by a respective predetermined weight value based on a respective sort position of the sample value within the sliding window, wherein the weights include a plurality a non-zero values; and
sum products of the multiplied sample values, and output the sum as a filtered sample value for the respective position of the sliding window; and
a digital section configured to:
sum a plurality of the filtered sample values to form an accumulated sample value; and
use the accumulated sample value to determined a position of at least one contact on the touch sensor array.
9. The system of 8 , further comprising an amplitude filter configured to limit amplitude of each of the digital sample values.
10. The system of claim 8 , wherein the channel engine further comprises a hardware accelerator configured to store a subset of measured capacitance values, the subset of measured capacitance values comprising at least the capacitance values used for determination of a node as a local maximum.
11. The system of claim 9 , wherein the amplitude filter is configured to replace digital sample values having a value greater than an upper limit value or less than a lower limit value.
12. The system of claim 11 , wherein the amplitude filter is configured to replace digital sample values having a value greater than the upper limit value with the upper limit value, and to replace digital sample values having a value less than the lower limit value with the lower limit value.
13. The system of claim 11 , wherein the amplitude filter is configured to replace digital sample values having a value greater than the upper limit value with the digital sample value of a last preceding sample having a digital sample value lower than the upper limit value, and to replace digital sample values having a value less than the lower limit value with the digital sample value of a last preceding sample having a digital sample value greater than the lower limit value.
14. The system of claim 9 , wherein the amplitude filter is configured to reject digital sample values having a value greater than an upper limit value or less than a lower limit value.
15. The system of claim 14 , wherein the amplitude filter is further configured to replace sample digital values having a value greater than an upper limit value or less than a lower limit value when a first number (N) of digital sample values have been rejected within a second number (M) of the digital sample values.