STM32
直播中

飘逸的D

13年用户 886经验值
私信 关注
[问答]

stm32f407+LAN8720A用cuubemx生成网络代码,上电初始化失败但是仿真可以运行是为什么?怎么解决?

如题,STM32f407ig片子,LAN8720A的网络芯片,用cubemx生成网络代码(lwip, 只有ping功能),程序烧录后按键重启和下电再上电重启均无反应(初始化的LED闪烁都进不了);但是进在线仿真后就可以正常运行(再电脑端ping板子可以ping通)。请问上面这个问题是什么原因 造成的?该怎么解决?

回帖(2)

高阳

2024-3-29 10:41:42
烧录一个只点LED的程序,看看能不能上电运行。如果不能,多半是启动出了问题,检查一下最小系统,同时也注意boot引脚是否正确。
举报

话多显蠢

2024-3-29 16:13:54
这个问题可能由于芯片上电初始化时出现错误导致。仿真环境下,芯片的初始化过程可能会不同于实际的硬件环境。以下是一些解决方法:

1. 检查硬件连接:确保所有的硬件连接正常,例如电源连接、时钟连接、信号线连接等。特别注意检查网络芯片的电源和时钟连接是否正确。

2. 检查外设配置:确保在CubeMX中正确配置了网络芯片和其他相关外设,包括时钟源、引脚分配、片上外设初始化等。

3. 检查初始化代码:检查生成的初始化代码是否正确。特别注意检查网络初始化的代码,以确保正确设置网络参数和初始化网络协议栈。还可以尝试更改网络初始化的顺序,例如先初始化网络芯片再初始化其他外设。

4. 调试代码:通过使用调试工具(如ST-Link)来检查代码的执行过程,可以确定在何处出现了问题。例如,检查初始化网络芯片时的返回值,看是否有错误码。

5. 检查代码编译选项:确保编译选项正确设置,例如编译器的优化级别、链接脚本等。

6. 增加延时:有时候在上电时,一些外设需要较长的时间来稳定。可以尝试在上电后增加适当的延时,以确保外设已经稳定。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分