设为首页 加入收藏

TOP

Android触摸屏输入系统
2014-11-24 12:21:28 来源: 作者: 【 】 浏览:0
Tags:Android 触摸屏 输入 系统

1.触摸屏硬件原理


1.1电阻触摸屏


中断产生。触摸屏芯片根据触摸按下时电阻分压值发生变化而产生中断,该中断输入给CPU。产生的条件很简单,主要有VDD,GND信号即可。因此,我们在调试时,可以在没有驱动的情况下去测量中断脚,是否在有触摸时发生变化,以前验证模块的好坏。


1.2电容触摸屏


中断产生和电阻屏类似,只不过电容屏是由于人体接触时形成耦合电容,从而电流发生变化。


电容屏的接口一般都会有一个nRST信号,便于驱动里对模块做复位操作。


2.Linux驱动


这里以i2c接口的电阻屏为例,并采用中断加轮询获取坐标值。


2.1注册i2c设备


注册i2c_board_info结构体。在machine_xxx_board_init(位于arch/arm/mach-xxx路径下)里面,包括type(driver name),Slave address,irq(中断引脚)和platform_data等。


注册i2c设备。在驱动文件先填充i2c_driver结构体,包括driver.name,id_table,probe。然后再调用i2c_add_driver即可以注册一个i2c设备。


2.2注册中断


接下来,我们要在probe函数里面做一些其他的初始化工作。


初始化一个delayed work。调用INIT_DELAYED_WORK。


探测设备。可以使用i2c_smbus_read_byte_data读取设备的ID寄存器,当然如果没有ID寄存器,也可以随便读取一个寄存器,如果返回值小于0,那可以认为该设备不存在。


注册中断。过程为申请GPIO(即中断引脚)-->设置GPIO方向-->设置GPIO上拉(或者下拉)-->申请irq。这里的调用接口为gpio_request-->gpio_direction_input-->gpio_pull_updown-->gpio_to_irq-->request_irq。


2.3注册输入子系统


分配内存。调用input_allocate_device。


设置触摸屏参数。调用input_set_abs_params,设置ABS_X,ABS_Y等参数。


注册input。调用input_register_device。


2.4校准参数初始化


2.5添加sysfs接口


可以按需求添加一个sysfs接口,如打印调试信息开关。调用driver_create_file。


2.6添加一级休眠处理


填充early_suspend结构体,调用接口register_early_suspend。


最后进行芯片的初始化,如配置设备的寄存器等。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android播放器为何暂停后继续播放.. 下一篇修改Android挂载时的盘符名

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Java 学习线路图是怎 (2025-12-25 15:19:15)
·关于 Java 学习,有 (2025-12-25 15:19:12)
·有没有Java swing教 (2025-12-25 15:19:09)
·Start, Stop, and Di (2025-12-25 14:50:57)
·C语言入门教程:零基 (2025-12-25 14:50:54)