main.lua 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "einkdemo"
  3. VERSION = "1.0.0"
  4. -- sys库是标配
  5. _G.sys = require("sys")
  6. --[[
  7. 注意,使用前先看本注释每一句话!!!!!!!
  8. 注意,使用前先看本注释每一句话!!!!!!!
  9. 注意,使用前先看本注释每一句话!!!!!!!
  10. 注意:具体硬件接线参考下方eink_pin 函数的gpio定义,
  11. eink_pin函数会返回对应bsp的 spi_id,pin_reset,pin_dc,pin_cs,pin_busy 值,下方函数有注释
  12. spi_id对应引脚参考对应芯片/模组手册,使用开发板的话看开发板原理图
  13. 举例AIR101:
  14. AIR101就看bsp判断分支 rtos_bsp == "AIR101"
  15. 返回的 0,pin.PB03,pin.PB01,pin.PB04,pin.PB00 依次为 spi_id,pin_reset,pin_dc,pin_cs,pin_busy
  16. spi_id为0就看芯片手册spi0引脚定义,即 SCLK=PB02, MOSI=PB05, MISO=PB03 因为只需要输出所以不需要miso引脚,miso引脚用作了pin_reset
  17. 所以AIR101接线为 Pin_RSCL:PB02, Pin_RSDA:PB05, Pin_RES:PB03, Pin_DC:PB01, Pin_CS:PB04, Pin_BUSY:PB00
  18. 再举例EC618:
  19. EC618就看bsp判断分支 rtos_bsp == "EC618"
  20. 返回的 0,1,10,8,22 依次为 spi_id,pin_reset,pin_dc,pin_cs,pin_busy
  21. spi_id为0就看芯片手册spi0引脚定义,即 SCLK=GPIO11, MOSI=GPIO9, MISO=GPIO10 因为只需要输出所以不需要miso引脚,miso引脚用作了pin_dc
  22. 所以EC618接线为 Pin_RSCL:GPIO11, Pin_RSDA:GPIO9, Pin_RES:GPIO1, Pin_DC:GPIO10, Pin_CS:GPIO8, Pin_BUSY:GPIO22
  23. 本demo为 1.54寸v2,200x200 屏幕,实际使用什么屏幕自己看自己的屏幕规格,
  24. 不是一样的尺寸就随便用,后缀的 v1 v2 v3 abcd 都有区别并不通用否则不同驱动就没意义了
  25. 注意,使用前先看本注释!!!!!!!
  26. 注意,使用前先看本注释!!!!!!!
  27. 注意,使用前先看本注释!!!!!!!
  28. ]]
  29. local rtos_bsp = rtos.bsp()
  30. -- spi_id,pin_reset,pin_dc,pin_cs,pin_busy
  31. function eink_pin()
  32. if rtos_bsp == "AIR101" then
  33. return 0,pin.PB03,pin.PB01,pin.PB04,pin.PB00
  34. elseif rtos_bsp == "AIR103" then
  35. return 0,pin.PB03,pin.PB01,pin.PB04,pin.PB00
  36. elseif rtos_bsp == "AIR105" then
  37. return 5,pin.PC12,pin.PE08,pin.PC14,pin.PE09
  38. elseif rtos_bsp == "ESP32C3" then
  39. return 2,10,6,7,11
  40. elseif rtos_bsp == "ESP32S3" then
  41. return 2,16,15,14,13
  42. elseif rtos_bsp == "EC618" then
  43. return 0,1,10,8,22
  44. elseif string.find(rtos_bsp,"EC718") then
  45. return 0,10,14,8,15
  46. elseif string.find(rtos_bsp,"Air8101") then
  47. return 0,1,0,21,20
  48. else
  49. log.info("main", "bsp not support")
  50. return
  51. end
  52. end
  53. -- sys.taskInit(function()
  54. -- local spi_id,pin_reset,pin_dc,pin_cs,pin_busy,mode = eink_pin()
  55. -- if spi_id then
  56. -- eink.model(eink.MODEL_1in54)
  57. -- -- spi.setup(spi_id,nil,0,0,8,20*1000*1000,spi.MSB,1,0)
  58. -- -- eink.setup(mode, spi_id,pin_busy,pin_reset,pin_dc,pin_cs)
  59. -- spi_eink = spi.deviceSetup(spi_id,pin_cs,0,0,8,20*1000*1000,spi.MSB,1,0)
  60. -- eink.setup(mode, spi_id,pin_busy,pin_reset,pin_dc,pin_cs,spi_eink)
  61. -- eink.setWin(200, 200, 0)
  62. -- -- --稍微等一会,免得墨水屏没初始化完成
  63. -- sys.wait(100)
  64. -- log.info("e-paper 1.54", "Testing Go")
  65. -- eink.clear()
  66. -- --画几条线一个圆
  67. -- eink.circle(50, 100, 40)
  68. -- eink.line(100, 20, 105, 180)
  69. -- eink.line(100, 100, 180, 20)
  70. -- eink.line(100, 100, 180, 180)
  71. -- eink.show()
  72. -- log.info("e-paper 1.54", "Testing End")
  73. -- end
  74. -- end)
  75. -- 2022.12.02后编译的固件推荐使用以下方法
  76. local sysplus = require("sysplus")
  77. sys.taskInit(function()
  78. local spi_id,pin_reset,pin_dc,pin_cs,pin_busy,mode = eink_pin()
  79. if spi_id then
  80. eink.async(1)
  81. -- spi.setup(spi_id,nil,0,0,8,20*1000*1000,spi.MSB,1,0)
  82. -- eink.init(eink.MODEL_1in54,
  83. -- {port = spi_id,pin_dc = pin_dc, pin_cs = pin_cs, pin_busy = pin_busy,pin_rst = pin_reset})
  84. spi_eink = spi.deviceSetup(spi_id,pin_cs,0,0,8,20*1000*1000,spi.MSB,1,0)
  85. eink.init(eink.MODEL_1in54,
  86. {port = "device",pin_dc = pin_dc, pin_busy = pin_busy,pin_rst = pin_reset},
  87. spi_eink)
  88. eink.setWin(200, 200, 0)
  89. sys.wait(100)
  90. log.info("e-paper 1.54", "Testing Go")
  91. eink.clear().wait()
  92. eink.print(30, 20, "LuatOS-AIR780E",0x00)
  93. eink.show().wait()
  94. log.info("e-paper 1.54", "Testing End")
  95. end
  96. end)
  97. sys.run()