2440 ADC触摸屏控制
扫描二维码
随时随地手机看文章
s3c2440的ADC和触摸屏的流程图如上所示:
打开ADC中断INT_ADC,包括次级中断INT_ADC_S和INT_TC。
设置ADCCON寄存器的预分频使能和ADC的频率,ADC的频率不能大于2.5MHz,并且要小于GCLK的1/5,这里选1MHz,根据公式ADC freq=GCLK/(PRSCVL+1),GCLK为50MHz,得PRSCVL=49,转换时间为1/(1MHz/5)=5us。
设置ADCDLY寄存器配置采样和转换的延迟时间,若设为50000,表明采样延时时间=(1/X-tal)*50000=13.56ms,转换延迟时间=(1/GCLK)*50000=1ms。(在ADC转换前,延时时钟为X-tal(3.68MHz),转换期间为GCLK)
设置ADCTSC进入等待按下中断,当按下的时候,触发了中断,依据SUBSRCPND可知道是ADC转换完毕触发的,还是触摸屏被按下触发的(因为SRCPND中两个中断共用1位)分别跳转不同的中断入口。
如果是TC中断,判断是由UP还是DOWN产生的中断,如果是DOWN,则设置ADCTSC寄存器的位[1:0]为00,位[2]为1,自动XY转换模式,位[3]为1,禁止XP上拉,而后设置ADCCON位[0]为1,开启ADC转换。
转换完成之后产生ADC中断,进入ADC处理函数,从ADCDAT0中读取XP,ADCDAT1中读取YP(XP和YP是电压的值,并不是xy坐标的值,需要转换),根据得到的数据进行所需的处理,这里是根据y坐标的值判断电子书的上翻页或下翻页。处理完毕后,设置ADCTSC为等待松开中断,当松开中断产生后,重新设置ADCTSC为等待按下中断。如此循环即可
在根据y坐标的值判断电子书上翻页后下翻页之前,需要将从ADCDATn中读取的XP和YP转换为对应的xy坐标(1个像素为1点坐标),当y坐标大于120时(下半屏幕),则执行下翻页,当y坐标小于120(上半屏幕),则执行上翻页。转换方法一般为分别按下屏幕的4个角,在超级终端上打印出对应的XP和YP,得到xy坐标和XP、YP的近似转换公式,如下图所示:
其中框内的数据表示从ADCDATn中读取AD转换后的值(XP,YP),框外的数据是按下的4个角的近视坐标(x,y)。在x轴方向上,可知x坐标随着YP的减小而增大,根据(0,0)到(319,0)可知变化因子为(954-80)/(319-0)=2.74,根据(0,239)到(319,239)可知变化因子(955-76)/(319-0)=2.76,因此变化因子取(2.74+2.76)/2=2.75,由此,可得x坐标和YP的转换公式:x≈(954-YP)/2.74,同理y坐标和XP的转换公式:y≈(916-XP)/3.67。
得到xy的坐标之后就可以进行相应的操作了。