STM32H7 LAN8742 LwIP仅在加电后才能正常工作,而在复位后无法正常工作

时间:2019-03-20 12:35:56

标签: stm32 ethernet hal lwip

我手头有一个奇怪的问题,我以前从未见过。 但是,我仍在尝试找出问题所在。 我有一个STM32H753VIT和一个LAN8742以太网控制器连接到它。 我在NO-SYS模式下运行LwIP。 仅在冷启动后才能正常工作,但在硬件重置(按钮或ST-LINK探针)后无法正常工作。 它运行一个简单的TCP回显服务器。如果运行,我可以对其执行ping操作,然后它会响应TCP客户端。

但是在硬件重置后,我不再可以ping通它,并且它不作为回显服务器响应。 我注意到重置后,界面上的绿色(链接)LED仍将熄灭。

在硬件重置后,我可以看到LAN8742_Init函数成功执行,但是在low_level_input函数中看不到可用的RX数据。

在Nucleo-H743ZI上,我运行相同的代码,并且在硬件重置后也可以运行。 请注意,由于引脚映射略有不同,因此代码仅稍有不同。 运行良好的Nucleo-H743ZI的代码: https://github.com/bkht/Nucleo-H743ZI_LAN8742_LwIP_NO-SYS 奇怪的STM32H753VIT的代码: https://github.com/bkht/STM32H753VIT_LAN8742_LwIP_NO-SYS

MCU的nRST连接到LAN8742A的nRST,并且100nF的电容器用于GND。我有一个复位开关,我尝试了一个上拉电阻,但没有运气。 我添加了一个重置​​按钮,这发现更长的硬件重置也不起作用。

我正在考虑计时或内存内容的方向。 有没有人见过这种启动行为?

1 个答案:

答案 0 :(得分:2)

解决了代码,在对LAN8942A进行软件复位的代码之后,我增加了一行以设置BCR(0x00)寄存器中的自动协商位(位12)。

[my-table_query_1]

我将为感兴趣的人更新github中的代码。