netdrv_eth_lan.lua 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. --[[
  2. @module netdrv_eth_lan
  3. @summary “通过SPI外挂CH390H芯片的以太网卡”驱动模块
  4. @version 1.0
  5. @date 2025.10.20
  6. @author 魏健强
  7. @usage
  8. 本文件为“通过SPI外挂CH390H芯片的以太网卡”驱动模块 ,核心业务逻辑为:
  9. 1、开启以太网lan;
  10. 直接使用Air8000开发板硬件测试即可;
  11. 本文件没有对外接口,直接在其他功能模块中require "netdrv_eth_lan"就可以加载运行;
  12. ]]
  13. dhcps = require "dhcpsrv"
  14. local function eth_lan_setup()
  15. -- 本demo使用Air8000开发板测试,开发板上的硬件配置为:
  16. -- GPIO140为CH390H以太网芯片的供电使能控制引脚
  17. -- 使用spi1,片选引脚使用GPIO12
  18. -- 如果使用的硬件不是Air8000开发板,根据自己的硬件配置修改以下参数
  19. log.info("ch390", "打开LDO供电")
  20. gpio.setup(140, 1, gpio.PULLUP) -- 打开ch390供电
  21. local result = spi.setup(1, -- spi_id
  22. nil, 0, -- CPHA
  23. 0, -- CPOL
  24. 8, -- 数据宽度
  25. 25600000 -- ,--频率
  26. )
  27. log.info("main", "open", result)
  28. if result ~= 0 then -- 返回值为0,表示打开成功
  29. log.info("main", "spi open error", result)
  30. return
  31. end
  32. -- 初始化指定netdrv设备,
  33. -- socket.LWIP_ETH 网络适配器编号
  34. -- netdrv.CH390外挂CH390
  35. -- SPI ID 1, 片选 GPIO12
  36. netdrv.setup(socket.LWIP_ETH, netdrv.CH390, {
  37. spi = 1,
  38. cs = 12
  39. })
  40. -- 确保ch390初始化完成,否则会出现netdrv.ipv4设置失败的情况
  41. sys.wait(1000)
  42. -- 设置ip, 子网掩码,网关
  43. local ipv4, mark, gw = netdrv.ipv4(socket.LWIP_ETH, "192.168.4.1", "255.255.255.0", "192.168.4.1")
  44. log.info("ipv4", ipv4, mark, gw)
  45. -- 开启dhcp服务器
  46. dhcps.create({
  47. adapter = socket.LWIP_ETH
  48. })
  49. end
  50. sys.taskInit(eth_lan_setup)