Pārlūkot izejas kodu

波形接近接近正确

xuxinyi 3 mēneši atpakaļ
vecāks
revīzija
b51a5a22b6
2 mainītis faili ar 40 papildinājumiem un 35 dzēšanām
  1. 1 0
      drv_periph/Drv_spi.lua
  2. 39 35
      drv_periph/sx126x_driver.lua

+ 1 - 0
drv_periph/Drv_spi.lua

@@ -31,6 +31,7 @@ end
     @return string类型,返回接收到的数据
 ]]
 function drv_spi_read_write_byte(txDat,size)
+    sys.wait(20)
     local ret = spi.send_recv(spi.SPI_1,string.fromHex(txDat)):toHex()
     -- log.info("spi_read_write_byte",ret)
     if size == nil or size == 0 then

+ 39 - 35
drv_periph/sx126x_driver.lua

@@ -61,10 +61,10 @@ function SX126xWriteCommand(command,buffer)
     for i, num in ipairs(buffer) do
         bufferTotal = bufferTotal .. num
     end
-    Drv_spi.drv_spi_read_write_byte(command,0)
-    
-    sys.wait(20)
-    Drv_spi.drv_spi_read_write_byte(bufferTotal,0)
+    Drv_spi.drv_spi_read_write_byte(command .. bufferTotal,0)
+    -- 50
+    -- sys.wait(20)
+    -- Drv_spi.drv_spi_read_write_byte(bufferTotal,0)
     -- local ret = Drv_spi.drv_spi_read_write_byte("1d07400000",1);
     -- log.info("SX126xWriteCommand",Drv_spi.drv_spi_read_write_byte(bufferTotal,1))
 
@@ -124,7 +124,7 @@ end
 
 
 function SX126xSetStandby(standbyConfig)
-    SX126xWriteCommand(sx126x_reg.RadioCommands.RADIO_SET_STANDBY,{"00"})
+    SX126xWriteCommand(sx126x_reg.RadioCommands.RADIO_SET_STANDBY,{standbyConfig})
     -- log.info("SX126xSetStandby_操作模式",standbyConfig)
 
     if standbyConfig == sx126x_reg.RadioStandbyModes_t.STDBY_RC then
@@ -145,29 +145,31 @@ end
 
 function SX126xSetPaConfig(paDutyCycle,hpMax,deviceSel,paLut)
     local buf = {paDutyCycle,hpMax,deviceSel,paLut}
-    -- log.info("SX126xSetPaConfig",buf)
-    SX126xWriteCommand("95",buf)
+    SX126xWriteCommand(sx126x_reg.RadioCommands.RADIO_SET_PACONFIG,buf)
+    log.info("SX126xSetPaConfig",sx126x_reg.RadioCommands.RADIO_SET_PACONFIG)
 end
 
 function SX126xSetTxParams(power, rampTime)
     local buf = {power,rampTime}
     SX126xSetPaConfig("04","07","00","01")
-    SX126xWriteRegister( sx126x_reg.REG_OCP, {"38"} ); 
+    SX126xWriteRegister( sx126x_reg.REG_OCP, {"38"} )
     SX126xWriteCommand(sx126x_reg.RadioCommands.RADIO_SET_TXPARAMS,buf)
 
 end
 
-function SX126xSetDioIrqParams2222(timeout, freq, rfChain, power, preambleLen)
-    local buf = {timeout, freq, rfChain, power, preambleLen}
-    SX126xSetTxParams(power, sx126x_reg.RadioRampTimes_t.RADIO_RAMP_40_US)
-    SX126xWriteCommand(sx126x_reg.RadioCommands.RADIO_SET_TX,buf)
-end
+-- function SX126xSetDioIrqParams2222(timeout, freq, rfChain, power, preambleLen)
+--     local buf = {timeout, freq, rfChain, power, preambleLen}
+--     SX126xSetTxParams(power, sx126x_reg.RadioRampTimes_t.RADIO_RAMP_40_US)
+--     SX126xWriteCommand(sx126x_reg.RadioCommands.RADIO_SET_TX,buf)
+-- end
 
 
 function SX126xSetDioIrqParams(irqMask, dio1Mask, dio2Mask, dio3Mask )
-    local buf = {"02","01","02","01","00","00","00","00"}
-    buf[2] = irqMask
-    buf[4] = irqMask
+    local buf = {"02","02","02","02","00","00","00","00"}
+    -- buf[2] = irqMask
+    -- buf[4] = irqMask
+    local jsondata = json.encode(buf)
+    log.info("SX126xSetModulationParams.encode",jsondata)
     SX126xWriteCommand(sx126x_reg.RadioCommands.RADIO_CFG_DIOIRQ,buf)
 end
 
@@ -182,7 +184,8 @@ end
 
 function SX126xSetPacketType(packetType)
     PacketType = packetType;
-    SX126xWriteCommand( sx126x_reg.RadioCommands.RADIO_SET_PACKETTYPE,{PacketType});
+    SX126xWriteCommand( sx126x_reg.RadioCommands.RADIO_SET_PACKETTYPE,{PacketType})
+    log.info("PacketType:",PacketType,sx126x_reg.RadioCommands.RADIO_SET_PACKETTYPE)
 end
 
 function RadioSetPublicNetwork(enable)
@@ -226,7 +229,8 @@ end
 
 
 function SX126xSetPacketParams(packetParams)
-    buf = { packetParams.Params.LoRa.PreambleLength, 
+    buf = { "00",
+            packetParams.Params.LoRa.PreambleLength, 
             packetParams.Params.LoRa.HeaderType, 
             packetParams.Params.LoRa.PayloadLength, 
             packetParams.Params.LoRa.CrcMode, 
@@ -256,7 +260,8 @@ function RadioSetTxConfig(modem,power,fdev,bandwidth,datarate,coderate,preambleL
     SX126xSetStopRxTimerOnPreambleDetect("00")  -- = flase
     SX126xSetLoRaSymbNumTimeout("00")
     SX126xCopy.ModulationParams.PacketType = sx126x_reg.RadioPacketTypes_t.PACKET_TYPE_LORA
-	SX126xCopy.ModulationParams.Params.LoRa.SpreadingFactor = "0b"
+
+	SX126xCopy.ModulationParams.Params.LoRa.SpreadingFactor = string.format("%02X", datarate)
 	SX126xCopy.ModulationParams.Params.LoRa.Bandwidth =  "05"
 	SX126xCopy.ModulationParams.Params.LoRa.CodingRate= coderate
 
@@ -267,6 +272,8 @@ function RadioSetTxConfig(modem,power,fdev,bandwidth,datarate,coderate,preambleL
     -- end
     SX126xCopy.ModulationParams.Params.LoRa.LowDatarateOptimize = "00"
 
+
+    
     SX126xCopy.PacketParams.PacketType = sx126x_reg.RadioPacketTypes_t.PACKET_TYPE_LORA
 
     SX126xCopy.PacketParams.Params.LoRa.PreambleLength = preambleLen
@@ -275,9 +282,7 @@ function RadioSetTxConfig(modem,power,fdev,bandwidth,datarate,coderate,preambleL
 	SX126xCopy.PacketParams.Params.LoRa.PayloadLength = "FF"
 	SX126xCopy.PacketParams.Params.LoRa.CrcMode = crcOn
 	SX126xCopy.PacketParams.Params.LoRa.InvertIQ = iqInverted
-
-
-    gsonLoginfo("SX126xCopy",SX126xCopy.PacketParams.Params.LoRa)
+    -- gsonLoginfo("SX126xCopy",SX126xCopy.PacketParams.Params.LoRa)
 
     SX126xSetStandby(sx126x_reg.RadioStandbyModes_t.STDBY_RC)
     RadioSetModem(sx126x_reg.RadioModems_t.MODEM_LORA)
@@ -331,23 +336,22 @@ function SX126xInit()
     SX126xIoInit()
     SX126xReset()
     SX126xWakeup()
-    SX126xReadCommand(sx126x_reg.RadioCommands.RADIO_GET_STATUS,1)
     -- local table = {sx126x_reg.RadioStandbyModes_t.STDBY_RC}
     SX126xSetStandby(sx126x_reg.RadioStandbyModes_t.STDBY_RC)
-    -- -- local table1 = {sx126x_reg.RadioStandbyModes_t.USE_DCDC}
-    -- SX126xSetRegulatorMode(sx126x_reg.RadioStandbyModes_t.USE_DCDC)
-    -- SX126xSetBufferBaseAddress("00","00")
-    -- SX126xSetTxParams( "00", sx126x_reg.RadioRampTimes_t.RADIO_RAMP_200_US )
-    -- SX126xSetDioIrqParams( sx126x_reg.RadioIrqMasks_t.IRQ_RADIO_ALL, sx126x_reg.RadioIrqMasks_t.IRQ_RADIO_ALL, sx126x_reg.RadioIrqMasks_t.IRQ_RADIO_NONE, sx126x_reg.RadioIrqMasks_t.IRQ_RADIO_NONE )
+    -- local table1 = {sx126x_reg.RadioStandbyModes_t.USE_DCDC}
+    SX126xSetRegulatorMode(sx126x_reg.RadioStandbyModes_t.USE_DCDC)
+    SX126xSetBufferBaseAddress("00","00")
+    SX126xSetTxParams( "00", sx126x_reg.RadioRampTimes_t.RADIO_RAMP_200_US )
+    SX126xSetDioIrqParams( sx126x_reg.RadioIrqMasks_t.IRQ_RADIO_ALL, sx126x_reg.RadioIrqMasks_t.IRQ_RADIO_ALL, sx126x_reg.RadioIrqMasks_t.IRQ_RADIO_NONE, sx126x_reg.RadioIrqMasks_t.IRQ_RADIO_NONE )
 
-    -- -- -- local table2 = {sx126x_reg.RadioStandbyModes_t.STDBY_RC}
-    -- SX126xSetStandby(sx126x_reg.RadioStandbyModes_t.STDBY_RC)
+    -- -- local table2 = {sx126x_reg.RadioStandbyModes_t.STDBY_RC}
+    SX126xSetStandby(sx126x_reg.RadioStandbyModes_t.STDBY_RC)
 
-    -- sys.wait(2000)
-    -- RadioSetTxConfig(sx126x_reg.RadioModems_t.MODEM_LORA,"16",0,1,7,"01","0c","00","01","00","00","00",3000)
+    sys.wait(2000)
+    RadioSetTxConfig(sx126x_reg.RadioModems_t.MODEM_LORA,"16",0,1,7,"01","0c","00","01","00","00","00",3000)
 
-    -- log.info("RadioSetTxConfig",string.format("%02X", 433000000))
-    -- RadioSetChannel(string.format("%02X", 433000000)) 
+    log.info("RadioSetTxConfig",string.format("%02X", 433000000))
+    RadioSetChannel(string.format("%02X", 433000000)) 
 end
 
 sys.taskInit(function ()
@@ -376,7 +380,7 @@ sys.taskInit(function ()
     
         sys.wait(20)
         log.info("计算结果")
-        -- RadioSend("A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9","01","00")
+        RadioSend("A9","01","00")
         SX126xReadCommand(sx126x_reg.RadioCommands.RADIO_GET_STATUS,1)
         -- SX126xWakeup()
         sys.wait(1000)