LPC1788 emWIN移植笔记(二)–触摸屏驱动移植

昨天对emWIN的LCD驱动进行了移植,今天要对触摸屏驱动进行移植。

对emWIN编写触摸屏驱动很简单,方法也有很多。在这里只详细介绍其中一种方法。

对emWIN触屏驱动进行移植,只需要配置GUI_TOUCH_X_ActivateX(), GUI_TOUCH_X_ActivateY(),GUI_TOUCH_X_MeasureX(), GUI_TOUCH_X_MeasureY()四个函数即可。

可以根据自己的驱动编写方式进行配置,一般GUI_TOUCH_X_ActivateX(), GUI_TOUCH_X_ActivateY()可以为空,只需要在GUI_TOUCH_X_MeasureX(), GUI_TOUCH_X_MeasureY()函数中返回触摸屏X轴和Y轴物理测量值即可。

还有一个十分重要的函数GUI_TOUCH_Exec(),这个函数需要定期调用已更新触摸屏的输出值。这个函数会在执行期间调用GUI_TOUCH_X_ActivateX(), GUI_TOUCH_X_ActivateY(),GUI_TOUCH_X_MeasureX(), GUI_TOUCH_X_MeasureY()四个函数来获取触摸屏X轴和Y轴物理测量值,然后根据GUI_TOUCH_Calibrate()校准后的参数进行触摸坐标的物理值和逻辑值的转换。然会把坐标的逻辑值存储在emWIN系统中。所以在触摸屏初始化时,需要调用GUI_TOUCH_Calibrate()函数进行校准。

GUI_TOUCH_Exec()可以放在系统节拍定时器或者普通定时器的中断函数中,至少应每10ms调用一次,利用查询的方式对触摸坐标进行更新;也可以放在触摸屏的外部中中断函数中,及时的对触摸坐标进行更新。

根据NXP官方例程中已有的触屏驱动,只要对其修改即可。项目中HW_X_Config()对系统节拍时钟进行了初始化,并使能了中断,每1ms中断一次。

touch1 项目中是通过系统节拍SysTick对GUI_TOUCH_Exec()进行调用,GUI_TOUCH_Exec()在ExecTouch()函数中,所以修改ExecTouch()函数即可。ExecTouch()在LCDconf.c中。

touch2

ExecTouch()中只需要把_CheckUpdateTouch()函数改成自己获取X轴和Y轴物理值的驱动即可,同时删除_SSP_SendCmd(PWRDOWN);

touch4

由于在ExecTouch()函数中调用了获取X轴和Y轴物理值的驱动函数,并且存储在了全局变量_TouchX和_TouchY中,所以在GUI_TOUCH_X_MeasureX()和GUI_TOUCH_X_MeasureY()中只需要返回变量_TouchX和_TouchY的值即可。

下面只剩下最后一步,对触屏进行校准,以找到触屏坐标物理值和逻辑值的对应关系。

找到LCD_X_DisplayDriver中调用的_InitController函数,接触在移植LCD驱动时对_InitTouch()函数的注释,并对_InitTouch()函数进行修改。修改为

TOUCH_BOARD_800_480_AD_LEFT,TOUCH_BOARD_800_480_AD_RIGHT,TOUCH_BOARD_800_480_AD_TOP,TOUCH_BOARD_800_480_AD_BOTTOM值可以根据NXP_emWin522_BSP\Start\Sample\Tutorial目录下的TOUCH_Sample.c测得。

touch5

然后在主程序或者_InitTouch函数中加入触摸屏驱动初始化函数,这样emWIN的触摸屏驱动就移植完成了。

touch3 测试了一下,触屏正常。

touch6

17 Comments

  1. zhiyuan

    你好!可以将你的工程文件给我发一份吗?谢谢。314165528@qq.com

    Reply

    • 一念花开

      工程文件已发送。

      Reply

      • HRW

        我的里面找不到touchGetPhyValue这个函数,请指教136274695@qq.com

        Reply

        • 一念花开

          touchGetPhyValue 这个是自己编写的用于获取LCD物理坐标的函数,不是emWIN自有的。。

          Reply

          • HRW

            你好!可以将你的工程文件给我发一份吗?谢谢。我看看touchGetPhyValue 这个用于获取LCD物理坐标的函数136274695@qq.com

          • 一念花开

            emWIN工程暂时找不到了,已发送触摸屏相关文件,注意查收

    • xzx

      您好,麻烦您把这个工程发下给我可以吗?邮箱:1363829469@qq.com

      Reply

  2. zlllz120

    你好,我最近也在做LPC1788上emwin的触摸屏移植,遇到了问题,能看看你的触摸屏相关的工程文件吗,谢谢!我的邮箱359921931@qq.com

    Reply

    • 陈致富

      您好,能否发我一份工程文件或者触摸屏相关文件呢,谢谢啊,邮箱709372733@qq.com

      Reply

  3. 孙光

    你好!可以将你的触摸屏相关工程文件给我发一份吗?谢谢。
    13488537258@qq.com

    Reply

  4. 李辉

    您好,我GUI调用库触摸屏这一块搞了好久了,还是不能触摸,能发我一份你的工程吗?多谢您啦哈。

    Reply

  5. 刘露江

    您好,我也在搞emwin的触摸的移植,但是不能触摸,请问能发一个工程给我吗

    Reply

  6. 陈致富

    您好,能否发我一份工程文件或者触摸屏相关文件呢,谢谢啊,邮箱709372733@qq.com

    Reply

  7. huang

    您好,正在学习emwin找到这个文章真是太幸运了,能麻烦楼主发个工程给我吗?谢谢了
    邮箱356976612@qq.com

    Reply

  8. hmx

    我也需要一份,能发给我么?最近遇到问题,在触摸屏按下按钮,画面或者相关的函数都没响应。

    Reply

  9. guilcd

    【能接emWin的SPI串口屏】
    GLCD功能类似于SPI串口屏,只是SPI接口通信更快速,以至能作为emWin(第三方界面软件库)的图形显示屏,弥补emWin使用字库/图片麻烦以及刷屏慢的缺点,这样emWin做界面就更精美、便捷!
    emWin界面软件库是运行在用户CPU中的;GLCD负责储存字库和图片,以及接收由emWin发出的绘图指令,并且执行这些绘图指令以显示文字、图片、2D图形等,绘图指令代替像素操作可大大减轻用户CPU的负担;GLCD还管理触摸屏、鼠标、键盘、蜂鸣器、RTC时钟等外设。
    更多介绍请看:www.neqee.com

    Reply

  10. kev1n

    求工程文档一份,之前按照你的文章已经成功的点亮了屏幕,但触控这块还没解决。非常感谢!kev1n.zheng@outlook.com

    Reply

Leave a Reply

*