Drv_spi.lua 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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,100000,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 size 要发送的数据长度=要收到的数据长度:例如:1D0740000000 有效数据:1D0740 站位数据:00 要读取的位数0000,4个0,len就是4,实际读取的是两个字节 0x1424
  26. @return string类型,返回接收到的数据
  27. ]]
  28. function drv_spi_read_write_byte(txDat,size)
  29. local ret = spi.send_recv(spi.SPI_1,string.fromHex(txDat)):toHex()
  30. -- log.info("spi_read_write_byte",ret)
  31. if size == nil or size == 0 then
  32. return 0
  33. else
  34. return string.sub(ret, -size*2)
  35. end
  36. end
  37. --测试案例
  38. -- sys.taskInit(function ()
  39. -- sys.wait(3000)
  40. -- SPI_GPIO_Init()
  41. -- sys.wait(3000)
  42. -- while true do
  43. -- local ret = drv_spi_read_write_byte("1D0740000000",4)
  44. -- log.info("提取结果", ret) -- 输出: 1D0F
  45. -- sys.wait(2000)
  46. -- end
  47. -- spi.close(spi.SPI_1)
  48. -- end)