• 正文
  • 相关推荐
申请入驻 产业图谱

APM32F4xx 以太网移植 LWIP 全流程实战:从硬件到 PING 通一步到位

04/23 15:34
279
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

APM32F4xx 系列内置以太网 MAC 控制器,搭配 LAN8720A PHY 芯片与 RMII 接口,可轻松实现 10/100M 网络通信。AN1088 应用笔记完整讲解ETH 外设驱动、LwIP 协议栈移植、网卡接口对接、PING 测试全套流程,按步骤操作即可快速实现嵌入式网络功能,大幅降低网络开发门槛。

资料获取:AN1088_APM32F4xx系列ETH移植LWIP应用笔记

1. 方案整体介绍

APM32F4xx + LAN8720A + LwIP 轻量级网络方案特点:

  • 接口:RMII(仅 7 根信号线,省 IO、省空间)
  • PHY:LAN8720A(25MHz 晶振,内部 PLL 输出 50MHz RMII 时钟)
  • 协议栈:LwIP 1.4.1(轻量 TCP/IP,裸机直接跑)
  • 支持:ARPICMPUDP、TCP、DHCP、DNS
  • 实测:PING 连通、TCP 透传、HTTP 服务器均可稳定实现

2. 硬件设计要点(直接照抄)

2.1 RMII 接口引脚(APM32F407)

  • PA1:RMII_REF_CLK(50MHz 时钟)
  • PA2:ETH_MDIO(PHY 管理数据)
  • PC1:ETH_MDC(PHY 管理时钟)
  • PC4:RMII_RXD0
  • PC5:RMII_RXDV
  • PG11:RMII_TX_EN
  • PG13:RMII_TXD0
  • PG14:RMII_TXD1
  • PD11:ETH_RESET(控制 PHY 复位)

2.2 PHY 关键电路

  • 25MHz 晶振 → LAN8720A 内部倍频 → 输出50MHz REF_CLK
  • nINTSEL 下拉 → 使能 REF_CLK 输出
  • 复位引脚电平复位,拉高后开始工作

3. LwIP 移植 7 步标准流程(AN1088 官方步骤)

3.1 添加 ETH 驱动

加入官方驱动文件:

  • apm32f4xx_eth.c / .h
  • board_LAN8720A.c/.h(PHY 初始化)

3.2 加入 LwIP 源码

添加以下核心目录:

  • src/api
  • src/core
  • src/netif
  • src/ipv4

3.3 添加移植头文件

复制 arch 文件夹,包含:

  • cc.h
  • cpu.h
  • sys_arch.h

3.4 添加协议栈配置文件

加入 lwipopts.h,配置:

  • 内存大小
  • 有无 OS
  • TCP/UDP 使能
  • 缓冲区长度

3.5 修改网卡接口 ethernetif.c

实现三个底层函数:

  • low_level_init:初始化 MAC+DMA+PHY
  • low_level_input:从 ETH 读取数据包
  • low_level_output:把数据包发给 ETH

3.6 初始化 LwIP 协议栈

mem_init();        // 初始化内存堆
memp_init();      // 初始化内存池
IP4_ADDR(&ipaddr, 192,168,73,22);
IP4_ADDR(&netmask,255,255,255,0);
IP4_ADDR(&gw,192,168,73,1);
netif_add(&UserNetif, &ipaddr,&netmask,&gw,NULL,ethernetif_init,ethernet_input);
netif_set_default(&UserNetif);
netif_set_up(&UserNetif);

3.7 提供系统时基

  • SysTick 1ms 中断
  • 提供 sys_now() 获取系统时钟
  • 主循环调用 sys_check_timeouts()

4. 主循环处理(必须跑)

while(1)
{
    // 检查是否收到网包
    if(ETH_ReadRxPacketSize() > 0)
    {
        ethernetif_input(&UserNetif);
    }
    // LwIP超时处理
    sys_check_timeouts();
}

5. 测试:PING 连通

设置电脑同网段 IP:

  • 电脑 IP:192.168.73.122
  • 开发板 IP:192.168.73.22
  • 网关:192.168.73.1
  • 掩码:255.255.255.0

CMD 输入:

ping 192.168.73.22

出现 “丢失 = 0” 即移植成功。

6. 常见问题速解(AN1088 重点)

  1. PHY 无法初始化:检查复位时序、MDIO/MDC 接线
  2. 收不到包:RMII 时钟是否 50MHz、REF_CLK 是否接对
  3. PING 不通:IP 不在同一网段、ARP 未处理
  4. 运行死机:内存配置不足、缓冲区太小
  5. 网口不稳定:增加 RMII 走线差分处理、滤波电容

AN1088 是 APM32F4xx 以太网最实用的LwIP 移植官方手册,提供从硬件、驱动、协议栈到测试的完整流程。移植后可直接扩展TCP 客户端 / 服务器、UDP、HTTP、Modbus TCP等功能,是工业控制、网关、数据采集等网络项目的最优基础方案。

相关推荐