`什么是电容式触摸
所谓电容式触摸屏,指的是在玻璃表面贴一层透明的特殊金属导电物质。当手指触摸在金属上时,触点的电容就会发生变化,使得与之相连的振荡器频率发生变化,通过测量频率变化可以确定触摸位置获得信息。随着技术日新月异,电容式触摸屏早已经在广大电子产品上应用。当然,工控产品上也不例外!
ti公司的AM335x处理器就不多介绍了,估计大家都比较熟悉。
这次用的开发板(EVB-335X-II):
概述 本文主要描述如何在AM335X上定制电容式触摸屏接口,包括内核配置,驱动初始化。EAC公司提供给客户的电容触控芯片为FT5316DMAE,使用IIC总线,驱动为ft5x16_ts。本文以EVB335X-II为例,说明如何将电容式触摸屏从IIC1接口换到IIC2上。在EVB335X-II中,FT5316的中断引脚为gpio0_20,具体请参考EVB335X-II设计原理图。 一、内核配置增加驱动支持驱动配置 Device Drivers ---> Inputdevice support ---> Touchscreens ---> <*> FT5X06/FT5X16 based touchscreens 二、修改驱动初始化内容在EVB335X中,电容触摸屏的接口为IIC1,但在EVB335X-II上,推荐使用的接口为IIC2。打开板级初始化文件arch/arm/mach-omap2/board-com335x.c,做以下修改: 1、去掉FT5316在IIC1的所有相关部分,这里不做描述,具体可参考接下来的步骤; 2、在IIC2初始化函数之前,增加FT5136的中断引脚初始化,如下: static structpinmux_config ft5x16_irq_pin_mux[] = { {"xdma_event_intr1.gpio0_20", OMAP_MUX_MODE7 |AM33XX_PIN_INPUT_PULLUP}, {NULL, 0}, }; 3、在结构体com335x_i2c2_boardinfo[]中增加FT5316的设备地址等基本信息: static struct i2c_board_info__initdata com335x_i2c2_boardinfo[] = {
[0] = { I2C_BOARD_INFO("ft5x16_ts",0x38), .irq = -EINVAL, }, }; 4、在IIC2的初始化函数中,添加FT5316中断初始化相关内容: static void com335x_i2c2_init(void) { setup_pin_mux(i2c2_pin_mux); /*Cap TS*/ setup_pin_mux(ft5x16_irq_pin_mux);
if(gpio_request(GPIO_TO_PIN(0, 20), "ft5x16_ts_irq")< 0) { printk("Can'trequest gpio for ft5x16_ts irq
"); return; } gpio_direction_input(GPIO_TO_PIN(0, 20)); com335x_i2c2_boardinfo[0].irq = gpio_to_irq(GPIO_TO_PIN(0,20));
omap_register_i2c_bus(3,400, com335x_i2c2_boardinfo, ARRAY_SIZE(com335x_i2c2_boardinfo)); } 5、在com335x_init()函数中,添加IIC2的初始化: static void __initcom335x_init(void) { ...... com335x_add_buzzer(); com335x_i2c2_init(); com335x_spi0_init(); ...... } 6、修改完成后,保存退出,重新编译内核即可。
`
|