触摸控制器芯片介绍:
XPT2046内部有 2.5V的参考电压源,可以作为辅助输入、电池电压测量和片内温度测量的参考电压。当不使用时,参考电压源可以处于省电模式。内部参考电压源在电源电压低至2.7V时仍可正常工作。当不使用时,参考电压还可以处于省电模式。内部参考电压在电源电压低于2.7V时仍可正常工作,并且监测着在 0V~6V范围内的电源电压。XPT2046在 125KHz转换速率和 2.7V电压下的功耗仅为750 µW。XPT2046以其低功耗和高速率等特性,被广泛应用在采用电池供电的小型手持设备上,比如 PDA、手机等。
XPT2046 是一种典型的逐次逼近型模数转换器(SAR ADC),包含了采样/保持、模数转换、串口数据输出等功能。同时芯片集成有一个 2.5V的内部参考电压源、温度检测电路,工作时使用外部时钟。XPT2046 可以单电源供电,电源电压范围为 2.7V~5.5V。参考电压值直接决定ADC的输入范围,参考电压可以使内部参考电压,也可以从外部直接输入1V~VCC范围内的参考电压(要求外部参考电压源输出阻抗低)。X、Y、Z、VBAT、Temp和AUX模拟信号经过片内的控制寄存器选择后进入ADC,ADC可以配置为单端或差分模式。选择VBAT、Temp和AUX时可以配置为单端模式;作为触摸屏应用时,可以配置为差分模式,这可有效消除由于驱动开关的寄生电阻及外部的干扰带来的测量误差,提高转换准确度。
编程需要注意的是,设置模式为SSI_FRF_MOTO_MODE_3
SSIConfig(SSI0_BASE, SSI_FRF_MOTO_MODE_3, SSI_MODE_MASTER, 2000000, 8);
没做数据处理时,读出的数据有误差:
为了对触摸更加准确,做了下面处理。
1、采集15个数据,去除10个极值点,得到5个有效数据,平均处理
2、如果数据小于100失败
2次读取ADS7846,连续读取2次,当两者之差小于50,认为有效平均处理
经过处理后较为准确了。
代码: