Kaynağa Gözat

完成接收

xuxinyi 3 ay önce
ebeveyn
işleme
aa3e122ed0
3 değiştirilmiş dosya ile 40 ekleme ve 27 silme
  1. 1 0
      drv_periph/Drv_spi.lua
  2. 5 4
      drv_periph/radio.lua
  3. 34 23
      drv_periph/sx126x_driver.lua

+ 1 - 0
drv_periph/Drv_spi.lua

@@ -40,6 +40,7 @@ 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)
+    -- log.info("spi_read_write_byte",size)
     if size == nil or size == 0 then
         return 0
     else

+ 5 - 4
drv_periph/radio.lua

@@ -29,10 +29,11 @@ sys.taskInit(function()
     sys.wait(2000)
     sx126x_driver.RadioRx(0)
     while true do
-        RadioStandby()
-        -- sx126x_driver.sentString("hello,My_name_is_XuXinyi\n")
-        log.info("Radio", "测试接收数据中。。。")
-        sx126x_driver.RadioRx(0)
+        -- RadioStandby()
+        -- -- sx126x_driver.sentString("hello,My_name_is_XuXinyi\n")
+        -- log.info("Radio", "测试接收数据中。。。")
+        -- sx126x_driver.RadioRx(0)
+        sx126x_driver.SX126xWakeup()
         sys.wait(4000)
         -- sx126x_driver.RadioRx(0)
     end

+ 34 - 23
drv_periph/sx126x_driver.lua

@@ -79,6 +79,7 @@ function gpio4IntFnc(msg)
     --上升沿中断
     if msg==cpu.INT_GPIO_POSEDGE then
         sys.publish("LORA_CALL_BACK")
+        -- log.info("我是中断")
     --下降沿中断
     else
     end
@@ -120,7 +121,7 @@ end
 
 function SX126xWakeup()
     local command = sx126x_reg.RadioCommands.RADIO_GET_STATUS .. "00"
-    local ret = Drv_spi.drv_spi_read_write_byte(command)
+    local ret = Drv_spi.drv_spi_read_write_byte(command,1)
     log.info("SX126xWakeup",ret)
 end
 
@@ -523,50 +524,60 @@ end
 
 -- end 
 
+-- 十六进制字符串转原始字符串的函数
+local function hex_to_string(hex_str)
+    local str = ""
+    -- 每两个字符一组处理
+    for i = 1, #hex_str, 2 do
+        -- 截取两位十六进制字符
+        local hex_byte = hex_str:sub(i, i+1)
+        -- 转换为数值(十六进制),再转换为字符
+        local char = string.char(tonumber(hex_byte, 16))
+        str = str .. char
+    end
+    return str
+end
+
+
 function SX126xReadBuffer(offset,size)
     local command = sx126x_reg.RadioCommands.RADIO_READ_BUFFER .. offset .. "00"
-    -- Drv_spi.drv_spi_read_write_byte(sx126x_reg.RadioCommands.RADIO_READ_BUFFER)
 
     for i = 1, size do
         command = command .. "00"
     end
-    -- log.info("offset",offset)
-    -- log.info("SX126xReadBuffer",ret)
-    -- log.info("SX126xReadBuffer",command)
-    local ret = Drv_spi.drv_spi_read_write_byte(command,8)
+    local ret = Drv_spi.drv_spi_read_write_byte(command,size)
     log.info("SX126xReadBuffer",ret)
+    -- 测试示例
+    -- local hex_str = "617368696E696E67"  -- "ashining"的十六进制表示
+    local original_str = hex_to_string(ret)
+    
+    -- print("转换后的字符串: " .. original_str)  -- 输出: ashining
+    log.info("原始字符串: " .. original_str)
 end
 
 
 sys.subscribe("LORA_CALL_BACK", function()
+    -- log.info("我是携程")
     RadioClearIrqStatus()
-    RadioRx()
     log.info("清除中断")
+    SX126xSetStandby(sx126x_reg.RadioStandbyModes_t.STDBY_RC)
+    RadioRx()
     local ret = SX126xReadCommand( sx126x_reg.RadioCommands.RADIO_GET_RXBUFFERSTATUS, 3 )
     log.info("LORA_CALL_BACK",ret)
     -- 从第1个字符截取到第2个字符,得到"A4"
-    local rxStartBufferPointer = ret:sub(1, 2)
+    -- local rxStartBufferPointer = ret:sub(1, 2)
 
     -- 从第3个字符截取到第4个字符,得到"08"
     local payloadLength = ret:sub(3, 4)
 
     local num1 = tonumber(payloadLength, 16)  -- 第二个参数 16 表示按十六进制解析
-    local nmu2 = tonumber("FF", 16)
-
-    -- print(string.format("0x%02X", nmu2))  -- 输出 0x08(十六进制格式化显示)
-
-    if num1 >= nmu2 then
-        -- print(string.format("0x%02X", nmu1))  -- 输出 0x08(十六进制格式化显示)
-        return 1
-    end
-
-    log.info("payloadLength: "..payloadLength)
-    log.info("payloadLength: "..rxStartBufferPointer)
-    SX126xReadBuffer("00",8)
+    -- local nmu2 = tonumber("FF", 16)
 
-    -- print(part1)  -- 输出 "A4"
-    -- print(part2)  -- 输出 "08"
-    -- SX126xReadRegister("0702")
+    -- if num1 >= nmu2 then
+    --     return 1
+    -- end
+    -- log.info("payloadLength",num1)
+    SX126xReadBuffer("00",num1)
 end)
 
 -- sys.taskInit(function ()