许多客户问到触摸屏的连接及驱动问题,另外还有同时使用触摸屏和通用ADC,特此分享如下:
1. overview
AM335x TS controller支持如下四种:
• 8 general-purpose ADC channels 即8路通用的ADC
• 4-wire TSC with 4 general-purpose ADC channels 即4路作为4线触摸屏连接,4路作为通用ADC
• 5-wire TSC with 3 general-purpose ADC channels 即5路作为5线触摸屏连接,3路作为通用ADC
• 8-wire TSC 即8路作为8线触摸屏连接
2. HW connection
AM335X TS controller与各种类型触摸屏连接如下:
关于4线触摸屏的连接方式如下:
5线触摸屏连接如下:
8线触摸品连接如下:
3. Linux driver
关于触摸屏的驱动说明,可以参考http://processors.wiki.ti.com/index.php/AM335x_ADC_Driver's_Guide
需要说明的是SDK-5.07.00.00开始,驱动中同时支持TS和通用ADC,即可以支持4线触摸屏+4路通用ADC、5线触摸品+3路通用ADC、8线触摸屏。
对于触摸屏的原理,可以参考文章《Using resistive touch screens for human/machine interface》
http://www.ti.com/lit/an/slyt209a/slyt209a.pdf
关于Touch-screen acquisition flowchart,见下图
Gary Wu:
需要补充说明的是TS的驱动在linux/drivers/mfd/ti_tscadc.c
关于platform data在linux/arch/arm/mach-omap2/board-am335xevm.c中有如下结构体,默认是支持4线屏的。如果支持其他,需要修改下述结构体中的参数。
/* TSc controller */static struct tsc_data am335x_touchscreen_data = { .wires = 4, .x_plate_resistance = 200, .steps_to_configure = 5,};
static struct mfd_tscadc_board tscadc = { .tsc_init = &am335x_touchscreen_data,};
Gary Wu:
回复 Gary Wu:
自己顶一下
nuoman1:
顶起。如果有电容触摸屏的移植指南就更完美啦!
dh.sun:
正在搞触摸屏驱动,非常感谢
Yaoming Qin:
很好的分享,学习
zimin hou:
回复 Yaoming Qin:
请问我要是使用5线的触摸屏,如何修改代码?
xixiguo:
回复 Gary Wu:
Hi Gary,
请问如果接四线电阻屏的话, TS_CHARGE_DELAY Register 应该如何确定设置多少delay呢,这个delay值需要根据什么依据来确定呢?
yongqing wang:
回复 xixiguo:
默认0x400