Drv_spi.lua 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. --- 模块功能:SPI接口的实现
  2. -- 读取FLASH ID
  3. -- @author openLuat
  4. -- @module spi.testSpiFlash
  5. -- @license MIT
  6. -- @copyright openLuat
  7. -- @release 2018.03.27
  8. module(...,package.seeall)
  9. require"utils"
  10. require"pm"
  11. pm.wake("wake11")
  12. require"pins"
  13. result = nil
  14. --[[
  15. 初始化SPI接口
  16. ]]
  17. function SPI_GPIO_Init()
  18. result = spi.setup(spi.SPI_1,0,0,8,800000,1)--初始化spi,
  19. log.info("spi1",spi.SPI_1)
  20. log.info("Lora Spi init :",result)
  21. end
  22. --[[
  23. 初始化SPI接口,底层接口
  24. @param txDat 要发送的数据:string类型
  25. @param len 要发送的数据长度=要收到的数据长度:例如:1D0740000000 有效数据:1D0740 站位数据:00 要读取的位数0000,4个0,len就是4,实际读取的是两个字节 0x1424
  26. @return string类型,返回接收到的数据
  27. ]]
  28. function drv_spi_read_write_byte(txDat,len)
  29. local ret = spi.send_recv(spi.SPI_1,string.fromHex(txDat)):toHex()
  30. return string.sub(ret, -len) -- 从倒数第四个字符到末尾
  31. end
  32. --测试案例
  33. -- sys.taskInit(function ()
  34. -- sys.wait(3000)
  35. -- SPI_GPIO_Init()
  36. -- sys.wait(3000)
  37. -- while true do
  38. -- local ret = drv_spi_read_write_byte("1D0740000000",4)
  39. -- log.info("提取结果", ret) -- 输出: 1D0F
  40. -- sys.wait(2000)
  41. -- end
  42. -- spi.close(spi.SPI_1)
  43. -- end)