盈鹏飞嵌入式---AM335X 如何定制电容式触摸屏接口

      本文主要描述如何在COM335X上定制电容式触摸屏接口,包括内核配置,驱动初始化。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\n");

              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、修改完成后,保存退出,重新编译内核即可。







猜你喜欢

转载自blog.csdn.net/szhebin/article/details/70237015