当前位置: 首页 > news >正文

LAN8671 10BASE-T1S STM32F407 RMII LwIP 测试笔记

文章目录

    • LAN8671 简介
    • LAN8671 原理图
    • 与 STM32F407 的接线
    • Github 工程的使用
    • 测试
      • PING
      • MAC 地址
      • UDP Echo
      • IPERF
    • 部分代码说明
    • Github 链接

LAN8671 简介

前篇介绍了SPI接口的 10BASE-T1S LAN8651, 本篇是 RMII 接口的 LAN8671:

  • 测试的是 LAN8671C2-E/U3B
  • 24-pin VQFN, -40ºC to +125ºC, 单3.3V供电,内置 1.8V 稳压器
  • RMII 接口, 需要 50MHz 外部参考时钟, 可以用有源晶振或者 MCU 的 MCO 引脚提供, 本篇用的是STM32F407 的 MCO2(PC9) 输出 50MHz 同时供给 PHY 和 ETH_REF_CLK(PA1)
  • 管理接口 SMI (MDIO/MDC):最高 4 MHz,兼容 IEEE 802.3 Clause 22/45 寄存器访问
  • 电源域:
    • VDDA:模拟电源(睡眠可关断)
    • VDDP:IO 电源(睡眠可关断)
    • VDDAU:持续供电(睡眠期维持唤醒电路)
  • 复位:
    • 上电复位 (POR):约 2 ms,自动加载配置 strap
    • 外部复位:RESET_N 引脚拉低≥5 μs
    • 软件复位:寄存器触发,不重载配置 strap
  • 初始化流程: 复位解除 → 内部初始化(≈7 μs)→ IRQ_N 提示就绪 → SMI 寄存器配置
  • PHYAD[3:0] 可配置16个地址

LAN8671 原理图

上面绿色小板子的参考原理图:

  • 供电是单 3.3V 供电
  • PHY 地址直接设成 0
  • 不使用的引脚:
    • INH, 悬空
    • WAKE_IN, 接地
    • WAKE_OUT, 悬空
    • GPIO0, 悬空

与 STM32F407 的接线

除了 3V3 GND 电源引脚, 连接了以下信号:

信号STM32F407 引脚方向说明
ETH_REF_CLK (CLK50M)PA1, PC9MCU 输入RMII 50 MHz 参考时钟输入
ETH_MDCPC1MCU 输出PHY 管理时钟
ETH_MDIOPA2双向PHY 管理数据
ETH_CRS_DVPA7MCU 输入RMII 载波检测/接收有效
ETH_RXD0PC4MCU 输入RMII RXD0
ETH_RXD1PC5MCU 输入RMII RXD1
ETH_TX_ENPB11MCU 输出RMII 发送使能
ETH_TXD0PB12MCU 输出RMII TXD0
ETH_TXD1PB13MCU 输出RMII TXD1
LAN8671_IRQ_N (nINT)PC2MCU 输入PHY 中断输入,低有效
LAN8671_RESET_N (nRST)PC3MCU 输出PHY 复位输出,低有效

注:

  • STM32F407 的 MCO2(PC9) 输出 50MHz 同时供给 PHY 和 ETH_REF_CLK(PA1), 本篇直连仅供测试, 实际是否加缓冲或电阻或改用50MHz有源晶振 硬件可自行评估. 示波器应能看到 50MHz 的时钟.
  • SWD 调试口: PA13, DIO; PA14 CLK; 连接 ST-Link V3
  • 调试串口 USART1: PA9 TX; PA10 RX; 115200-8-N-1

看图应该直观一些:

立创天空星的板子上贴的是 8M 晶振, 实际使用的时钟树可参考下图:

LAN8671 的 10BASE-T1S 连接 USB-10BASE-T1S:

  • PC, 192.168.1.2, PLCA, Node ID 0 作为Coordinator, 负责周期性发送 BEACON 信标等, Node Count 8
  • MCU, 192.168.1.110, PLCA, Node ID 3, Link up 后是 10M half-duplex
  • TOTMR = 0x20, Burst Max Count = 0, Burst Timer = 0x80
  • 都连接 100Ω 终端电阻

Github 工程的使用

stm32f407_lan8671 默认的环境:

  • STM32CubeMX 6.17.0
  • STM32CubeF4 Firmware Package V1.28.3
  • LwIP 2.1.2, NO_SYS
  • CMAKE 管理工程
  • 编译:.\build.sh build, 可以带DebugRelease(测速时 Debug 更稳, Releas版本会偶发整秒塌陷, 尽管已做特殊处理, 全局 Release 仍然是 -Os -g0,但stm32f4xx_hal_eth.c 和 LWIP/Target/ethernetif.c都作为独立对象目标在 Release 下按 O0 编译), 工具链C:\ST\STM32CubeIDE_2.1.0\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740
  • 下载.\build.sh flash, 使用 ST-Link V3, 默认用以下目录里的命令行工具C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer

测试

PING

MAC 地址

>Get-NetNeighbor-AddressFamilyIPv4|Where-Object{$_.IPAddress-eq'192.168.1.110'}|Select-Object IPAddress, LinkLayerAddress IPAddress LinkLayerAddress --------- ----------------192.168.1.110 02-00-00-00-67-11

UDP Echo

IPERF

iperf.exe-c192.168.1.110-i1-p5010-t10

或者用 jperf

部分代码说明

LAN8671 的代码放在了:

  • stm32f407_lan8671\LWIP\Target\eth_custom_phy_interface.h
  • stm32f407_lan8671\LWIP\Target\eth_custom_phy_interface.c

主要对接的是 PHY 的 初始化, 软件复位, 获取或设置连接状态 等. 通过 Clause 22 访问 PHY 基本寄存器, 通过 MMD 访问 Clause 45 风格的扩展寄存器. 参考数据手册4.3.1. Clause 45 Register Access

PHY 的地址探测:

  • 扫描 0~31 的 PHY 地址
  • 寄存器 PHYID1 (0x0002) 等于 0x0007, 对应数据手册5.1.4. PHY Identifier 1 Register
  • 寄存器 PHYID2 (0x0003) 等于 0xC16x, 实际读出来是 0xC165, 是Silicon revision 5 (Rev C2 default), 对应数据手册5.1.5. PHY Identifier 2 Register

PLCA 的一些寄存器的设置:

MMD Device寄存器当前值作用
31PLCA_TOTMR (0xCA04)0x0020PLCA TOT 定时
31PLCA_BURST (0xCA05)0x0080Burst timer=0x80, max count=0
31PLCA_CTRL1 (0xCA02)0x0803NodeCount=8, NodeID=3
31PLCA_CTRL0 (0xCA01)0x8000使能 PLCA

部分状态寄存器:

寄存器用途
BSR (0x0001)读两次确认基本链路状态
PLCA_STS (MMD31:0xCA03)读取 PLCA 状态

AN1699: LAN8670/1/2 Configuration Application Note 中对 D0 和 C2 版本有一些配置说明, 本篇的C2版本未按照这个文档设置, 此处截图作为记录参考:

Github 链接

Github 开源链接 https://github.com/weifengdq/embedded/tree/main/lan8671

http://www.jsqmd.com/news/643100/

相关文章:

  • 避坑!这些毕设太好抄了,3000+毕设案例推荐第1055期
  • 封锁是实现并发控制的重要技术,通过对数据对象加锁来限制其他事务对该对象的访问
  • ANIMATEDIFF PRO广告制作:智能模板批量生成技术
  • 玻璃幕墙U值理论计算与软件分析的对比
  • 别再只看Loss了!用注意力热力图给你的NLP/视觉模型做一次“CT扫描”
  • 亲测Face3D.ai Pro:玻璃拟态界面超酷,生成速度飞快,效果很专业
  • 赣州正规的高考班
  • alibaba.easyexcel导入导出
  • 大厂Java面试实录:微服务、数据库、缓存、消息队列与AI场景技术点全解
  • 2026年正规的武汉半包装修公司/武汉二手房装修公司高端装修榜 - 行业平台推荐
  • Java特殊类与类型转换实战指南,iOS 26 App 性能测试,新版系统下如何全面评估启动、渲染、资源、动画等指标。
  • 运维实战:OFA模型生产环境监控与维护
  • Qwen3-VL-8B真实体验:图片识别准确率实测,效果令人惊喜
  • TikTok数据抓取:破解风控的实战指南
  • 网桥是工作在**数据链路层**的网络互连设备,主要用于连接两个或多个局域网段,实现帧的转发和过滤
  • 别再死记硬背仲裁器了!用Verilog手搓一个AHB总线仲裁器(附固定/轮询两种实现源码)
  • STM32F103C8 + GY-NEO6MV2 GPS模块实战:从硬件连接到谷歌地图验证
  • 如何使用ai把唐诗300首的诗转成视频,保姆级教程
  • AI智能文档扫描仪参数详解:Canny边缘检测阈值调优技巧
  • STM32F103C8T6驱动BH1750光照传感器:从IIC时序到状态机实现的保姆级教程
  • 罗德与施瓦茨FSH8手持频谱网络分析仪
  • Rust 生命周期与所有权详解
  • 2026年评价高的精密铝合金压铸/铝合金压铸制品/铝合金/东莞铝合金压铸源头工厂推荐 - 行业平台推荐
  • 避坑!这些毕设太好抄了,3000+毕设案例推荐第1056期
  • WTAPI:微信生态的技术引擎
  • 【2026奇点大会独家解码】:AIAgent图像生成的5大技术跃迁与3个落地陷阱
  • Depth Anything 3:以极简Transformer架构,从任意视图重建三维视觉空间
  • 每天留半小时“无聊时间”,孩子反而更专注
  • 推荐一些可以用于论文降重的软件:2026年爆款TOP5实测,这几款能将AIGC率降至5%!
  • 2026年热门的轻量化铝合金压铸/铝合金压铸配件定制/铝合金机械手臂配件/铝合金压铸OEM高口碑品牌推荐 - 品牌宣传支持者