STM32F107移植LWIP到老旧开发板:DM9161A PHY的挑战与解决
114 浏览量
更新于2024-08-31
4
收藏 1.58MB PDF 举报
"本文主要介绍了如何使用STM32CubeMX在STM32F107微控制器上移植轻量级网络接口协议(LWIP),并针对PHY芯片DM9161A进行配置。在移植过程中,作者遇到了ping不通的问题,并最终解决了问题,实现了网络通信。"
在STM32CubeMX中配置STM32F107时,首先要考虑的是网络接口的选择。由于开发板使用了RMII( Reduced Media Independent Interface)通信方式,这是STM32与以太网PHY之间的常见接口,它占用较少的GPIO引脚。在CubeMX中,需要确保自动协商功能开启,以适应不同的数据速率和双工模式。由于是裸机运行LWIP,选择非DMA的polling模式进行数据传输。
配置PHY芯片时,注意PHY地址通常由硬件连接决定,文中提到的PHY地址为0。尽管CubeMX中没有DM9161A的具体选项,但可以选择一个类似的PHY如LAN8742,因为它们的基础寄存器和状态控制是标准化的。然而,不同厂商的PHY可能包含特定的寄存器,这些寄存器需要正确配置才能正常工作。在本文中,作者最初未正确配置这些特定寄存器,导致了通信问题。
STM32F107的MCO(Microcontroller Clock Output)引脚需要设置为50MHz,为RMII模式的PHY提供时钟。同时,MCO引脚应配置为高频输出。LWIP的配置中,选择固定IP地址,不使用操作系统,其他保持默认。
生成代码后,使用MDK(Keil Microcontroller Development Kit)进行编译,并将MX_LWIP_Process()函数添加到主循环,以处理网络收发。此时,尽管网口的绿灯和黄灯亮起,但ping不通,表明问题出在网络配置上。
在调试阶段,通过调试器和Wireshark分析网络流量,发现开发板能够接收到并正确回复ping命令,但计算机无法访问。这表明PHY层已经正常工作,问题可能在于上层协议或配置。通过查阅DM9161A的数据手册和STM32的ETH相关文档,逐步跟踪初始化代码,找到了问题所在并进行了修正,最终成功实现了ping通信。
总结起来,这个过程涉及了STM32CubeMX的使用、以太网PHY的配置、LWIP协议栈的移植、裸机编程以及网络通信的调试。对于任何想要在STM32平台上使用LWIP和以太网功能的开发者来说,这是一个有价值的实践案例,提供了遇到问题时的排查思路和解决方法。
2014-10-20 上传
174 浏览量
2022-07-14 上传
2010-11-01 上传
2010-11-01 上传
2022-09-15 上传
2022-07-14 上传
weixin_38653687
- 粉丝: 3
- 资源: 973
最新资源
- Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
- 深入理解JavaScript类与面向对象编程
- Argspect-0.0.1版本Python包发布与使用说明
- OpenNetAdmin v09.07.15 PHP项目源码下载
- 掌握Node.js: 构建高性能Web服务器与应用程序
- Matlab矢量绘图工具:polarG函数使用详解
- 实现Vue.js中PDF文件的签名显示功能
- 开源项目PSPSolver:资源约束调度问题求解器库
- 探索vwru系统:大众的虚拟现实招聘平台
- 深入理解cJSON:案例与源文件解析
- 多边形扩展算法在MATLAB中的应用与实现
- 用React类组件创建迷你待办事项列表指南
- Python库setuptools-58.5.3助力高效开发
- fmfiles工具:在MATLAB中查找丢失文件并列出错误
- 老枪二级域名系统PHP源码简易版发布
- 探索DOSGUI开源库:C/C++图形界面开发新篇章