--- 模块功能:sx126x模块驱动 -- 读取FLASH ID -- @author openLuat -- @module spi.testSpiFlash -- @license MIT -- @copyright openLuat -- @release 2018.03.27 module(...,package.seeall) require"utils" require"pm" pm.wake("wake11") require"pins" -- require "sx126x_reg" require "Drv_spi" require "sx126x_reg" SX126xResetGPIO = pins.setup(pio.P0_13,0) -- 初始化SPI function SX126xIoInit() Drv_spi.SPI_GPIO_Init() end -- 复位SX126x function SX126xReset() sys.wait(10) SX126xResetGPIO(0) sys.wait(20) SX126xResetGPIO(1) 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 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() -- 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) -- --测试案例:获取 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)