在写s3c2440触摸屏驱动额时候,发现数据手册上的关于ADC的寄存器地址给的是错误的,而个人感觉且对ADCTSC寄存器的 YM_SEN、YP_SEN、XM_SEN、YM_SEN的说明不是很清楚,关于ADC和触摸屏的部分可以看一下s3c2410的关于这个部分,他们之间的差别不是太大,具体没有太大的差别,关于这个可以看一下韦东山的《嵌入式Linux应用开发完全手册》里面讲的还是挺好的。

s3c2440数据手册上说,触摸屏接口有四种模式
1.Normal Conversion Mode,该模式是用于一般的模数转换。
2.Separate X/Y position conversion Mode
3.Auto(Sequential) X/Y Position Conversion Mode
4.Waiting for Interrupt Mode
          后面的三种模式都是用于触摸屏的,分别是分别转换X/Y位置模式、自动(顺序)X/Y位置转换模式、等待中断模式。但是我在实现上面的三种模式的时候,Separate X/Y position conversion Mode这个模式很容易就实现了,但是在实现Auto(Sequential) X/Y Position Conversion Mode这个模式的时候就出现问题但我将ADCTSC寄存器配置为Auto(Sequential) X/Y Position Conversion Mode模式时,开始ADC转换的时候咋读ADCTSC寄存器的值就变为了0x173。进过在三的实验依然是同一个效果,而且采回的数据只是一个值,基本没有变化 。最后在看别人的例程发现,几乎没有人将Auto(Sequential) X/Y Position Conversion Mode作为一个单独的模式使用,而是和Waiting for Interrupt Mode配合一起使用的。在触发INT_TC中断以后在中断函数里面执行自动X/Y位置转换模式,就可以得到正确的数据,话说不知道是为什么,但是网上都是这样千篇一律的组合的用法,不知道是模仿内核,还是模仿2440test,还是我没有看懂数据手册。
         希望以后可以找到原因,最后只想说一句,强烈鄙视那些,自己都没有完全搞明白,只会使用别人的代码,就说别人代码有问题,没看明白数据手册的人。