Преглед изворни кода

添加初始化,发生命令接口,寄存器配置

xuxinyi пре 4 месеци
родитељ
комит
1c8d6a75a9
2 измењених фајлова са 98 додато и 27 уклоњено
  1. 40 27
      drv_periph/sx126x_driver.lua
  2. 58 0
      drv_periph/sx126x_reg.lua

+ 40 - 27
drv_periph/sx126x_driver.lua

@@ -21,10 +21,6 @@ SX126xResetGPIO = pins.setup(pio.P0_13,0)
 function SX126xIoInit()
     Drv_spi.SPI_GPIO_Init()
 end
--- 初始化SX126x
-function SX126xInit()
-    SX126xIoInit()
-end
 
 -- 复位SX126x
 function SX126xReset()
@@ -35,28 +31,45 @@ function SX126xReset()
     sys.wait(10) 
 end
 
+-- 初始化SX126x
+function SX126xInit()
+    SX126xIoInit()
+    SX126xReset()
+end
+
+function SX126xWakeup()
+    Drv_spi.drv_spi_read_write_byte("C00000",2)
+end
+
+function SX126xWriteCommand(command ,buffer)
+    Drv_spi.drv_spi_read_write_byte(command,0)
+    sys.wait(20)
+    drv_spi_read_write_byte(buffer);
+    sys.wait(20)
+end
+
+
+-- --测试案例
+-- sys.taskInit(function ()
+--     sys.wait(3000)
+--     -- SX126xInit()
+--     sys.wait(3000)
+--     i = 0
+--     while true do
+--         -- local ret = Drv_spi.drv_spi_read_write_byte("1D0740000000",4)
 
---测试案例
-sys.taskInit(function ()
-    sys.wait(3000)
-    -- SX126xInit()
-    sys.wait(3000)
-    i = 0
-    while true do
-        -- local ret = Drv_spi.drv_spi_read_write_byte("1D0740000000",4)
-
-        -- log.info("提取结果", ret)  -- 输出: 1D0F
-        log.info("计算结果", i%2)
-        if i%2 == 0 then
-            log.info("1")
-            SX126xResetGPIO(1)
-        else
-            log.info("0")
-            SX126xResetGPIO(0)
-        end
-        i = i + 1
-        sys.wait(3*1000)
-    end
-    spi.close(spi.SPI_1)
-end)
+--         -- log.info("提取结果", ret)  -- 输出: 1D0F
+--         log.info("计算结果", i%2)
+--         if i%2 == 0 then
+--             log.info("1")
+--             SX126xResetGPIO(1)
+--         else
+--             log.info("0")
+--             SX126xResetGPIO(0)
+--         end
+--         i = i + 1
+--         sys.wait(3*1000)
+--     end
+--     spi.close(spi.SPI_1)
+-- end)
 

+ 58 - 0
drv_periph/sx126x_reg.lua

@@ -0,0 +1,58 @@
+--- 模块功能:存储sx126x寄存器数据
+
+module(...,package.seeall)
+
+
+--[[
+    The addresses of the register holding LoRa Modem SyncWord value
+]]
+REG_LR_SYNCWORD "0740"
+
+-- 定义Radio命令枚举(字符串格式,用于直接通信)
+--[[
+    Represents all possible opcode understood by the radio
+]]
+local RadioCommands = {
+    RADIO_GET_STATUS                        = "C0",
+    RADIO_WRITE_REGISTER                    = "0D",
+    RADIO_READ_REGISTER                     = "1D",
+    RADIO_WRITE_BUFFER                      = "0E",
+    RADIO_READ_BUFFER                       = "1E",
+    RADIO_SET_SLEEP                         = "84",
+    RADIO_SET_STANDBY                       = "80",
+    RADIO_SET_FS                            = "C1",
+    RADIO_SET_TX                            = "83",
+    RADIO_SET_RX                            = "82",
+    RADIO_SET_RXDUTYCYCLE                   = "94",
+    RADIO_SET_CAD                           = "C5",
+    RADIO_SET_TXCONTINUOUSWAVE              = "D1",
+    RADIO_SET_TXCONTINUOUSPREAMBLE          = "D2",
+    RADIO_SET_PACKETTYPE                    = "8A",
+    RADIO_GET_PACKETTYPE                    = "11",
+    RADIO_SET_RFFREQUENCY                   = "86",
+    RADIO_SET_TXPARAMS                      = "8E",
+    RADIO_SET_PACONFIG                      = "95",
+    RADIO_SET_CADPARAMS                     = "88",
+    RADIO_SET_BUFFERBASEADDRESS             = "8F",
+    RADIO_SET_MODULATIONPARAMS              = "8B",
+    RADIO_SET_PACKETPARAMS                  = "8C",
+    RADIO_GET_RXBUFFERSTATUS                = "13",
+    RADIO_GET_PACKETSTATUS                  = "14",
+    RADIO_GET_RSSIINST                      = "15",
+    RADIO_GET_STATS                         = "10",
+    RADIO_RESET_STATS                       = "00",
+    RADIO_CFG_DIOIRQ                        = "08",
+    RADIO_GET_IRQSTATUS                     = "12",
+    RADIO_CLR_IRQSTATUS                     = "02",
+    RADIO_CALIBRATE                         = "89",
+    RADIO_CALIBRATEIMAGE                    = "98",
+    RADIO_SET_REGULATORMODE                 = "96",
+    RADIO_GET_ERROR                         = "17",
+    RADIO_CLR_ERROR                         = "07",
+    RADIO_SET_TCXOMODE                      = "97",
+    RADIO_SET_TXFALLBACKMODE                = "93",
+    RADIO_SET_RFSWITCHMODE                  = "9D",
+    RADIO_SET_STOPRXTIMERONPREAMBLE         = "9F",
+    RADIO_SET_LORASYMBTIMEOUT               = "A0"
+}
+