触摸屏工程分析:
主函数中前两个调用分别配置、使能MMU和Cache,SetupIntc()函数配置使能中断,并注册触摸屏中断函数 :
ConsoleUtilsInit()、ConsoleUtilsSetType()函数设置调试串口,DMTimer2ModuleClkConfig()初始化定时器2的时钟模块。
主函数最后调用TouchScreenInit()函数:
前面几个函数调用都是些初始化配置等,这里比较重要的是两个for循环,其中的StepConfigX()和StepConfigY()实现了电阻触摸屏4个晶体管的切换控制,以满足模拟量的采集。并将模拟量值存入FIFO中。
TouchCalibrate()实现触摸屏的校准
IsTSPress在触摸屏中断处理函数将其置位,以表示触摸屏被按下.for中读取左上、右上、右下3点的X、Y对应的A/D值,setCalibrationMatrix()函数通过3点对应的坐标值实现校准,并将校准参数值存于stMatrix中,具体原理需要详细研究代码后总结出计算公式。
TouchScreenIsr()触摸屏中断处理函数主要是读取X、Y轴的A/D值。
ReadTouchScreenPress()读取触摸屏当前按下的坐标值,函数中最重要的函数调用是getDisplayPoint()函数,它根据触摸屏的A/D值,转换成LCD屏的坐标值
|