tp_drv.lua 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. --[[
  2. @module tp_drv
  3. @summary 触摸面板驱动模块,基于tp核心库
  4. @version 1.0
  5. @date 2026.02.05
  6. @author 江访
  7. @usage
  8. 本模块为触摸面板驱动功能模块,主要功能包括:
  9. 1、初始化GT911触摸控制器;
  10. 2、配置I2C通信接口和触摸回调函数;
  11. 3、发布触摸事件消息供UI系统处理;
  12. 对外接口:
  13. 1、tp_drv.init():初始化触摸面板驱动
  14. ]]
  15. local tp_drv = {}
  16. --[[
  17. 初始化触摸面板驱动;
  18. @api tp_drv.init()
  19. @summary 配置并初始化GT911触摸控制器
  20. @return boolean 初始化成功返回true,失败返回false
  21. @usage
  22. -- 初始化触摸面板
  23. local result = tp_drv.init()
  24. if result then
  25. log.info("触摸面板初始化成功")
  26. else
  27. log.error("触摸面板初始化失败")
  28. end
  29. ]]
  30. local function tp_callback(tp_device, tp_data)
  31. log.info("tp_drv tp_callback", tp_data[1].event, tp_data[1].x, tp_data[1].y)
  32. --sys.publish("TP", tp_device, tp_data)
  33. end
  34. function tp_drv.init()
  35. -- 开机I2C供电,触摸、摄像头和音频都是使用I2C0
  36. -- gpio.setup(147, 1)
  37. -- gpio.setup(164, 1)
  38. -- 等待供电稳定
  39. sys.wait(100)
  40. -- 初始化硬件I2C
  41. i2c.setup(0, i2c.SLOW) -- 初始化I2C 0,设置为低速模式
  42. -- 此处触摸IC数据读取使用的是软件I2C接口
  43. -- 参数说明:
  44. -- "gt911": 触摸控制器型号
  45. -- port: I2C接口对象
  46. -- pin_rst: 复位引脚编号
  47. -- pin_int: 中断引脚编号
  48. -- w: 触摸面板宽度
  49. -- h: 触摸面板高度
  50. local result = tp.init("gt911", { port = 0, pin_rst = 0xff, pin_int = 21},tp_callback)
  51. log.info("tp.init", result)
  52. if not result then
  53. log.error("ui_main", "触摸初始化失败")
  54. return result
  55. else
  56. -- 绑定触摸设备到AirUI输入设备
  57. return airui.indev_bind_touch(result)
  58. end
  59. end
  60. return tp_drv