Sfoglia il codice sorgente

封装读取寄存器数值函数

xuxinyi 4 mesi fa
parent
commit
dd3df4fea2

+ 1 - 1
demo/spi/testSpiFlash.lua

@@ -16,7 +16,7 @@ require"pins"
 local result = spi.setup(spi.SPI_1,0,0,8,800000,1)--初始化spi,
 log.info("spi1",spi.SPI_1)
 log.info("testSpiFlash.init",result)
-local s = string.fromHex("9f000000000000")
+local s = string.fromHex("9f 00 00 00 00 00 00")
 
 sys.taskInit(function ()
     sys.wait(5000)

+ 4 - 3
drv_periph/Drv_spi.lua

@@ -27,12 +27,13 @@ end
 --[[
     初始化SPI接口,底层接口
     @param txDat 要发送的数据:string类型
-    @param len 要发送的数据长度=要收到的数据长度:例如:1D0740000000 有效数据:1D0740 站位数据:00  要读取的位数0000,4个0,len就是4,实际读取的是两个字节 0x1424
+    @param size 要发送的数据长度=要收到的数据长度:例如:1D0740000000 有效数据:1D0740 站位数据:00  要读取的位数0000,4个0,len就是4,实际读取的是两个字节 0x1424
     @return string类型,返回接收到的数据
 ]]
-function drv_spi_read_write_byte(txDat,len)
+function drv_spi_read_write_byte(txDat,size)
     local ret = spi.send_recv(spi.SPI_1,string.fromHex(txDat)):toHex()
-    return string.sub(ret, -len)  -- 从倒数第四个字符到末尾
+    log.info("spi_read_write_byte",ret)
+    return string.sub(ret, -size)  -- 从倒数第四个字符到末尾
 end
 
 

+ 39 - 1
drv_periph/sx126x_driver.lua

@@ -14,6 +14,7 @@ pm.wake("wake11")
 require"pins"
 -- require "sx126x_reg"
 require "Drv_spi"
+require "sx126x_reg"
 
 SX126xResetGPIO = pins.setup(pio.P0_13,0)
 
@@ -48,8 +49,23 @@ function SX126xWriteCommand(command ,buffer)
     sys.wait(20)
 end
 
+function SX126xReadRegisters(address,size)
+    local command = sx126x_reg.RadioCommands.RADIO_READ_REGISTER
+    local sendData = command .. address .. "00"
+    local receiverDataCount= size
 
--- --测试案例
+    while size > 0 do
+        sendData = sendData .. "00"
+        size = size - 1
+    end
+
+    local result = Drv_spi.drv_spi_read_write_byte(sendData,receiverDataCount*2)  --这里乘2的意思是,16进制是两位,但是转成字符串的形式就是4位了。
+
+    log.info("SX126xReadRegisters",result)
+    return result
+end
+
+-- --测试案例1
 -- sys.taskInit(function ()
 --     sys.wait(3000)
 --     -- SX126xInit()
@@ -73,3 +89,25 @@ end
 --     spi.close(spi.SPI_1)
 -- end)
 
+-- --测试案例:获取 local sendData = sx126x_reg.RadioCommands[RADIO_READ_REGISTER]语法是否正确
+-- sys.taskInit(function ()
+--     sys.wait(3000)
+--     log.info("计算结果", "测试1")
+--     while true do
+--         log.info("计算结果", sx126x_reg.RadioCommands.RADIO_READ_REGISTER)
+--         log.info("计算结果", "测试")
+--         sys.wait(3*1000)
+--     end
+-- end)
+
+-- --测试案例:测试字符拼接
+sys.taskInit(function ()
+    sys.wait(3000)
+    SX126xInit()
+    sys.wait(3000)
+    log.info("计算结果", "测试1")
+    while true do
+        log.info("计算结果", SX126xReadRegisters("0740",2))
+        sys.wait(3*1000)
+    end
+end)

+ 2 - 2
drv_periph/sx126x_reg.lua

@@ -6,13 +6,13 @@ module(...,package.seeall)
 --[[
     The addresses of the register holding LoRa Modem SyncWord value
 ]]
-REG_LR_SYNCWORD "0740"
+REG_LR_SYNCWORD = "0740"
 
 -- 定义Radio命令枚举(字符串格式,用于直接通信)
 --[[
     Represents all possible opcode understood by the radio
 ]]
-local RadioCommands = {
+RadioCommands = {
     RADIO_GET_STATUS                        = "C0",
     RADIO_WRITE_REGISTER                    = "0D",
     RADIO_READ_REGISTER                     = "1D",

+ 1 - 1
main.lua

@@ -64,8 +64,8 @@ errDump.request("udp://dev_msg1.openluat.com:12425", nil, true)
 --require "update"
 --update.request()
 
+-- require "Drv_spi"
 require "sx126x_driver"
-
 --启动系统框架
 sys.init(0, 0)
 sys.run()