wan.lua 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. --[[
  2. @module wan
  3. @summary wan 以太网提供网络供模组上网
  4. @version 1.0
  5. @date 2025.09.12
  6. @author 王城钧
  7. @usage
  8. 本文件为lan网络模块,核心业务逻辑为:
  9. 1.以太网提供网络供模组上网
  10. 2.http测试以太网网络
  11. 本文件没有对外接口,直接在main.lua中require "wan"就可以加载运行;
  12. ]]
  13. -- 启动WAN网络初始化
  14. local function wan_init()
  15. sys.wait(500) --等待500ms,此延时非必须
  16. log.info("ch390", "打开LDO供电")
  17. gpio.setup(140, 1, gpio.PULLUP) --打开ch390供电
  18. sys.wait(6000) --等待6000ms,此延时非必须
  19. local result = spi.setup(
  20. 1, --spi_id
  21. nil,
  22. 0, --CPHA
  23. 0, --CPOL
  24. 8, --数据宽度
  25. 25600000 --,--频率
  26. -- spi.MSB,--高低位顺序 可选,默认高位在前
  27. -- spi.master,--主模式 可选,默认主
  28. -- spi.full--全双工 可选,默认全双工
  29. )
  30. log.info("main", "open", result)
  31. if result ~= 0 then --返回值为0,表示打开成功
  32. log.info("main", "spi open error", result)
  33. return
  34. end
  35. -- 初始化指定netdrv设备,
  36. -- socket.LWIP_ETH 网络适配器编号
  37. -- netdrv.CH390外挂CH390
  38. -- SPI ID 1, 片选 GPIO12
  39. netdrv.setup(socket.LWIP_ETH, netdrv.CH390, { spi = 1, cs = 12 })
  40. netdrv.dhcp(socket.LWIP_ETH, true)
  41. end
  42. -- WAN网络测试任务
  43. local function wan_task()
  44. -- sys.waitUntil("IP_READY")
  45. while 1 do
  46. sys.wait(6000) --非必须延时,只是为了方便观察日志输出 -- 此处延时非必须,只是为了方便观察日志输出
  47. log.info("http",
  48. http.request("GET", "http://httpbin.air32.cn/bytes/4096", nil, nil, { adapter = socket.LWIP_ETH }).wait()) --adapter指定为以太网联网方式
  49. log.info("lua", rtos.meminfo())
  50. log.info("sys", rtos.meminfo("sys"))
  51. end
  52. end
  53. -- 启动WAN网络初始化和任务
  54. sys.taskInit(wan_init)
  55. -- 启动WAN联网测试
  56. sys.taskInit(wan_task)