netdrv_eth_lan.lua 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. 直接使用Air780EHM/Air780EHV/Air780EGH 核心板硬件测试即可;
  11. 本文件没有对外接口,直接在其他功能模块中require "netdrv_eth_lan"就可以加载运行;
  12. ]]
  13. dhcps = require "dhcpsrv"
  14. local function eth_lan_setup()
  15. log.info("ch390", "打开LDO供电")
  16. gpio.setup(20, 1, gpio.PULLUP) -- 打开ch390供电
  17. local result = spi.setup(0, -- spi_id
  18. nil, 0, -- CPHA
  19. 0, -- CPOL
  20. 8, -- 数据宽度
  21. 25600000 -- ,--频率
  22. )
  23. log.info("main", "open", result)
  24. if result ~= 0 then -- 返回值为0,表示打开成功
  25. log.info("main", "spi open error", result)
  26. return
  27. end
  28. -- 初始化指定netdrv设备,
  29. -- socket.LWIP_ETH 网络适配器编号
  30. -- netdrv.CH390外挂CH390
  31. -- SPI ID 1, 片选 GPIO12
  32. netdrv.setup(socket.LWIP_ETH, netdrv.CH390, {
  33. spi = 0,
  34. cs = 8
  35. })
  36. -- 确保ch390初始化完成,否则会出现netdrv.ipv4设置失败的情况
  37. sys.wait(1000)
  38. -- 设置ip, 子网掩码,网关
  39. local ipv4, mark, gw = netdrv.ipv4(socket.LWIP_ETH, "192.168.4.1", "255.255.255.0", "192.168.4.1")
  40. log.info("ipv4", ipv4, mark, gw)
  41. -- 开启dhcp服务器
  42. dhcps.create({
  43. adapter = socket.LWIP_ETH
  44. })
  45. end
  46. sys.taskInit(eth_lan_setup)