Drv_spi.lua 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. -- log.info("spi_read_write_byte",size)
  38. if size == nil or size == 0 then
  39. return 0
  40. else
  41. return string.sub(ret, -size*2)
  42. end
  43. end
  44. --测试案例
  45. -- sys.taskInit(function ()
  46. -- sys.wait(3000)
  47. -- SPI_GPIO_Init()
  48. -- sys.wait(3000)
  49. -- while true do
  50. -- local ret = drv_spi_read_write_byte("1D0740000000",4)
  51. -- log.info("提取结果", ret) -- 输出: 1D0F
  52. -- sys.wait(2000)
  53. -- end
  54. -- spi.close(spi.SPI_1)
  55. -- end)