Drv_spi.lua 1.5 KB

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