触摸屏驱动总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
触摸屏驱动总结
触摸屏工作原理
触摸屏的工作原理概括来说就是上报坐标值,X轴、Y轴的值。电容式触摸屏不依靠手指按力创造、改变电压值来检测坐标的,电容屏通过任何持有电荷的物体包括人体皮肤工作(人体所带的电荷)。电容式触摸屏是由诸如合金或是銦錫氧化物(ITO)这样的材料构成,电荷存储在一根根比头发还要细的微型静电网中。当手指点击屏幕,会从接触点吸收小量电流,造成角落电极的压降,利用感应人体微弱电流的方式来达到触控的目的。(这是为什么当你带上手套触摸屏幕时,没有反应的原因),下图可以清晰的说明电容屏的工作原理。
上图显示了触摸屏的组成,可以看到触摸屏由IC控制电路、接口电路、触摸屏感应区组合而成。
当然触摸屏的工作原理我们并不需要去详细了解,我们仅需要知道如何从接口电路获取输入信号、向接口电路输出信号即可。
SPI总线总结
SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线。
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个
从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。
(1)SDO –主设备数据输出,从设备数据输入;
(2)SDI –主设备数据输入,从设备数据输出;
(3)SCLK –时钟信号,由主设备产生;
(4)CS –从设备使能信号,由主设备控制。
其中,CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。
structboardinfo {
structlist_head list; //用于挂接到链表头board_list上
unsigned n_board_info; //设备信息号,spi_board_info成员的编号structspi_board_infoboard_info[0]; //内嵌的spi_board_info结构
};
//其中内嵌的描述spi设备的具体信息的结构structspi_board_info为:
structspi_board_info {
/* the device name and module name are coupled, like platform_bus;
* "modalias" is normally the driver name.
* platform_data goes to spi_device.dev.platform_data,
* controller_data goes to spi_device.controller_data,
* irq is copied too
*/
char modalias[SPI_NAME_SIZE]; //名字
const void *platform_data //如同注释写的指向spi_device.dev.platform_data void *controller_data; //指向spi_device.controller_data intirq; //中断号
/* slower signaling on noisy or low voltage boards */
u32 max_speed_hz; //时钟速率
/* bus_num is board specific and matches the bus_num of some
* spi_master that will probably be registered later.
*
* chip_select reflects how this chip is wired to that master;
* it's less than num_chipselect.
*/
u16 bus_num; //所在的spi总线编号
u16 chip_select;
/* mode becomes spi_device.mode, and is essential for chips
* where the default of SPI_CS_HIGH = 0 is wrong.
*/
u8 mode; //模式
/* ... may need additional spi_device chip config data here.
* avoid stuff protocol drivers can set; but include stuff
* needed to behave without being bound to a driver:
* - quirks like clock rate mattering when not selected
*/
};
2.6内核典型的做法,不直接使用原始设备驱动,而是使用包装后的抽象设备驱动spi_driver,间接与原始设备驱动建立联系,并最终通过调用driver_register来注册原始设备驱动。以后也不会直接与原始设备打交道,而是通过spi_device来间接操作设备。
Touch Screen总体结构框架图
触摸屏驱动软件结构
触摸屏驱动的软件架构如下图所示:
注释:
1.平台初始化
2.平台设备注册
3.触摸屏驱动初始化
4.平台驱动注册
5.设备的探测函数
6.电源适配
7.分配输入设备
8.注册成系统的输入设备
9.纯中断的工作函数
驱动初始化的流程驱动初始化流程如下图所示: