sx126x_driver.lua 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. --- 模块功能:sx126x模块驱动
  2. -- 读取FLASH ID
  3. -- @author openLuat
  4. -- @module spi.testSpiFlash
  5. -- @license MIT
  6. -- @copyright openLuat
  7. -- @release 2018.03.27
  8. module(...,package.seeall)
  9. require"utils"
  10. require"pm"
  11. pm.wake("wake11")
  12. require"pins"
  13. -- require "sx126x_reg"
  14. require "Drv_spi"
  15. require "sx126x_reg"
  16. SX126xResetGPIO = pins.setup(pio.P0_13,0)
  17. -- 初始化SPI
  18. function SX126xIoInit()
  19. Drv_spi.SPI_GPIO_Init()
  20. end
  21. -- 复位SX126x
  22. function SX126xReset()
  23. sys.wait(10)
  24. SX126xResetGPIO(0)
  25. sys.wait(20)
  26. SX126xResetGPIO(1)
  27. sys.wait(10)
  28. end
  29. -- 初始化SX126x
  30. function SX126xInit()
  31. SX126xIoInit()
  32. SX126xReset()
  33. end
  34. function SX126xWakeup()
  35. Drv_spi.drv_spi_read_write_byte("C00000",2)
  36. end
  37. function SX126xWriteCommand(command ,buffer)
  38. Drv_spi.drv_spi_read_write_byte(command,0)
  39. sys.wait(20)
  40. drv_spi_read_write_byte(buffer);
  41. sys.wait(20)
  42. end
  43. function SX126xReadRegisters(address,size)
  44. local command = sx126x_reg.RadioCommands.RADIO_READ_REGISTER
  45. local sendData = command .. address .. "00"
  46. local receiverDataCount= size
  47. while size > 0 do
  48. sendData = sendData .. "00"
  49. size = size - 1
  50. end
  51. local result = Drv_spi.drv_spi_read_write_byte(sendData,receiverDataCount*2) --这里乘2的意思是,16进制是两位,但是转成字符串的形式就是4位了。
  52. log.info("SX126xReadRegisters",result)
  53. return result
  54. end
  55. -- --测试案例1
  56. -- sys.taskInit(function ()
  57. -- sys.wait(3000)
  58. -- -- SX126xInit()
  59. -- sys.wait(3000)
  60. -- i = 0
  61. -- while true do
  62. -- -- local ret = Drv_spi.drv_spi_read_write_byte("1D0740000000",4)
  63. -- -- log.info("提取结果", ret) -- 输出: 1D0F
  64. -- log.info("计算结果", i%2)
  65. -- if i%2 == 0 then
  66. -- log.info("1")
  67. -- SX126xResetGPIO(1)
  68. -- else
  69. -- log.info("0")
  70. -- SX126xResetGPIO(0)
  71. -- end
  72. -- i = i + 1
  73. -- sys.wait(3*1000)
  74. -- end
  75. -- spi.close(spi.SPI_1)
  76. -- end)
  77. -- --测试案例:获取 local sendData = sx126x_reg.RadioCommands[RADIO_READ_REGISTER]语法是否正确
  78. -- sys.taskInit(function ()
  79. -- sys.wait(3000)
  80. -- log.info("计算结果", "测试1")
  81. -- while true do
  82. -- log.info("计算结果", sx126x_reg.RadioCommands.RADIO_READ_REGISTER)
  83. -- log.info("计算结果", "测试")
  84. -- sys.wait(3*1000)
  85. -- end
  86. -- end)
  87. -- --测试案例:测试字符拼接
  88. sys.taskInit(function ()
  89. sys.wait(3000)
  90. SX126xInit()
  91. sys.wait(3000)
  92. log.info("计算结果", "测试1")
  93. while true do
  94. log.info("计算结果", SX126xReadRegisters("0740",2))
  95. sys.wait(3*1000)
  96. end
  97. end)