基于 mini2440 电阻式触摸屏(四):mini2440触摸屏驱动分析
参考:http://blog.chinaunix.net/uid-22174347-id-1786941.html
==========================================================
开发环境
编译系统 :fedora9
编译器 :arm-linux-4.4.3
主控芯片 :S3C2440
开发板 :mini2440
==========================================================
一、电阻式触摸屏工作原理
二、 S3C2440 电阻式触摸屏接口、内部ADC结构
三、Linux输入子系统(InputSubsystem)
四、mini2440触摸屏驱动分析
==========================================================
(这部分转自:http://blog.chinaunix.net/uid-22174347-id-1786941.html 文章写得很好)
四、mini2440触摸屏驱动分析
1、硬件原理图分析
S3c2440芯片内部触摸屏接口与ADC接口是集成在一起的,硬件结构原理图请看:S3C2440上ADC驱动实例开发讲解中的图,其中通道7(XP或AIN7)作为触摸屏接口的X坐标输入,通道5(YP或AIN5)作为触摸屏接口的Y坐标输入。在"S3C2440上ADC驱动实例开发讲解"中,AD转换的模拟信号是由开发板上的一个电位器产生并通过通道1(AIN0)输入的,而这里的模拟信号则是由点触触摸屏所产生的X坐标和Y坐标两个模拟信号,并分别通过通道7和通道5输入。S3c2440提供的触摸屏接口有4种处理模式,分别是:正常转换模式、单独的X/Y位置转换模式、自动X/Y位置转换模式和等待中断模式,对于在每种模式下工作的要求,请详细查看数据手册的描述。本驱动实例将采用自动X/Y位置转换模式和等待中断模式。
注意:在每步中,为了让代码逻辑更加有条理和容易理解,就没有考虑代码的顺序,比如函数要先定义后调用。如果要编译此代码,请严格按照C语言的规范来调整代码的顺序。
2、建立触摸屏驱动程序my2440_ts.c,首先实现加载和卸载部分,在驱动加载部分,我们主要做的事情是:启用ADC所需要的时钟、映射IO口、初始化寄存器、申请中断、初始化输入设备、将输入设备注册到输入子系统。代码如下: