tp_drv.lua 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. -- 发布触摸事件供其他模块订阅
  33. if(tp_data[1].event == tp.EVENT_UP) then
  34. sys.publish("TP_TOUCH", tp_data[1].x, tp_data[1].y)
  35. end
  36. end
  37. function tp_drv.init()
  38. -- 开机I2C供电,触摸、摄像头和音频都是使用I2C0
  39. -- gpio.setup(147, 1)
  40. -- gpio.setup(164, 1)
  41. -- 等待供电稳定
  42. sys.wait(100)
  43. -- 初始化硬件I2C
  44. i2c.setup(0, i2c.SLOW) -- 初始化I2C 0,设置为低速模式
  45. -- 此处触摸IC数据读取使用的是软件I2C接口
  46. -- 参数说明:
  47. -- "gt911": 触摸控制器型号
  48. -- port: I2C接口对象
  49. -- pin_rst: 复位引脚编号
  50. -- pin_int: 中断引脚编号
  51. -- w: 触摸面板宽度
  52. -- h: 触摸面板高度
  53. local result = tp.init("gt911", { port = 0, pin_rst = 0xff, pin_int = 21},tp_callback)
  54. log.info("tp.init", result)
  55. if not result then
  56. log.error("ui_main", "触摸初始化失败")
  57. return result
  58. else
  59. -- 绑定触摸设备到AirUI输入设备
  60. return airui.device_bind_touch(result)
  61. end
  62. end
  63. return tp_drv