技术强人 发表于 2016-9-18 10:57:29

tsc2007电阻屏的调试

1.需要在board-mx6q_sabresd.c文件中去添加tsc2007的板级文件,#ifdef CONFIG_TOUCHSCREEN_TSC2007               {                    I2C_BOARD_INFO("tsc2007", 0x48),                                .type = "tsc2007",                       .irq=gpio_to_irq(SABRESD_TSC_INT),                       .platform_data   = &tsc2007_info,      },#endif};原来把这个文件加载到了 i2c_board_info mxc_i2c1_board_info2,总是报出tsc2007挂载失败,i2c1不能识别到具体的tsc2007驱动。 tsc2007_info也的添加这个结构体。等到加载到正确的2c_board_info mxc_i2c2_board_info后,在I2C_BOARD_INFO("tsc2007", 0x48),这行代码中的地址,需要报所有的i2c中的0x48地址都要屏蔽,不然的话在启动中会报出不能正确加载到相应地址中去,因为这个地址已经被占用。2.SABRESD_TSC_INT这个引脚定义,早CPU的手册中可以查找到相应的引脚是gpio3_io20所以需要宏定义#define SABRESD_TSC_INT      IMX_GPIO_NR(3, 20)。同时需要把这个gpio3_io20的其他的屏蔽掉,不然的话这个会提示不能使用。3.宏定义完了以后board-mx6q_sabresd..h文件中添加这个(3,20)的定义,不然的话会报IMX_GPIO_NR(3, 20)未定义,或者未申明。其实以上配置完了以后板级文件中还缺少点东西。4.函数get_pendown_state用于运行时获取笔按压状态,也就是获取tsc2007引脚PENIRQ的状态,这个引脚当触摸屏有按压的情况下输出低电平,无按压时输出高电平。static int tsc2007_get_pandown_state(void){   int dat;   dat=gpio_get_value(SABRESD_TSC_INT);   return (dat==0)?1:0;}在驱动程序的probe函数内被调用,处理一些硬件相关的初始化。这个初始化主要是针对PENIRQ相连的引脚的初始化。gpio_request(SABRESD_TSC_INT,"tsc2007 irq");在驱动程序exit时调用。gpio_to_irq(SABRESD_TSC_INT);发生中断后清除中断 gpio_free(SABRESD_TSC_INT);
页: [1]
查看完整版本: tsc2007电阻屏的调试