lan.lua 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. --[[
  2. @module lan
  3. @summary lan 模组连接4G网络通过以太网口传输给其他设备
  4. @version 1.0
  5. @date 2025.09.12
  6. @author 王城钧
  7. @usage
  8. 本文件为lan网络模块,核心业务逻辑为:
  9. 1.设置模组连接4G网络通过以太网口传输给其他设备
  10. 本文件没有对外接口,直接在main.lua中require "lan"就可以加载运行;
  11. ]]
  12. dhcps = require "dhcpsrv"
  13. dnsproxy = require "dnsproxy"
  14. -- 启动lan网络初始化
  15. local function lan_init()
  16. sys.wait(500) -- 非必须延时
  17. log.info("ch390", "打开LDO供电")
  18. gpio.setup(140, 1, gpio.PULLUP) --打开ch390供电
  19. sys.wait(6000)
  20. local result = spi.setup(
  21. 1,--spi_id
  22. nil,
  23. 0,--CPHA
  24. 0,--CPOL
  25. 8,--数据宽度
  26. 25600000--,--频率
  27. -- spi.MSB,--高低位顺序 可选,默认高位在前
  28. -- spi.master,--主模式 可选,默认主
  29. -- spi.full--全双工 可选,默认全双工
  30. )
  31. log.info("main", "open",result)
  32. if result ~= 0 then--返回值为0,表示打开成功
  33. log.info("main", "spi open error",result)
  34. return
  35. end
  36. -- 初始化指定netdrv设备,
  37. -- socket.LWIP_ETH 网络适配器编号
  38. -- netdrv.CH390外挂CH390
  39. -- SPI ID 1, 片选 GPIO12
  40. netdrv.setup(socket.LWIP_ETH, netdrv.CH390, {spi=1,cs=12})
  41. sys.wait(3000)
  42. local ipv4,mark, gw = netdrv.ipv4(socket.LWIP_ETH, "192.168.4.1", "255.255.255.0", "192.168.4.1")
  43. log.info("ipv4", ipv4,mark, gw)
  44. while netdrv.link(socket.LWIP_ETH) ~= true do
  45. -- sys.wait(100) -- 等待以太网口联通
  46. end
  47. while netdrv.link(socket.LWIP_GP) ~= true do
  48. -- sys.wait(100) -- 等待GP口联通
  49. end
  50. sys.wait(2000) --非必须延时
  51. dhcps.create({adapter=socket.LWIP_ETH})
  52. dnsproxy.setup(socket.LWIP_ETH, socket.LWIP_GP)
  53. netdrv.napt(socket.LWIP_GP)
  54. if iperf then
  55. log.info("启动iperf服务器端")
  56. iperf.server(socket.LWIP_ETH)
  57. end
  58. end
  59. -- 启动lan网络任务
  60. local function lan_task()
  61. -- sys.waitUntil("IP_READY")
  62. while 1 do
  63. sys.wait(3000) -- 非必须延时, 此处为了方便观察日志
  64. -- log.info("http", http.request("GET", "http://httpbin.air32.cn/bytes/4096", nil, nil, {adapter=socket.LWIP_ETH}).wait())
  65. log.info("lua", rtos.meminfo())
  66. log.info("sys", rtos.meminfo("sys"))
  67. -- log.info("psram", rtos.meminfo("psram"))
  68. end
  69. end
  70. -- 启动lan网络初始化
  71. sys.taskInit(lan_init)
  72. -- 启动lan网络任务
  73. sys.taskInit(lan_task)