STM32
直播中

张龙祥

9年用户 1314经验值
擅长:连接器
私信 关注
[问答]

stm32f417zg+dp83848调试以太网遇到软件复位失败怎么解决?

我用STM32f417zg+dp83848调试以太网遇到软件复位失败问题,单步调试发现在复位MAC内部寄存器时对以太网总线模式寄存器(ETN_DMABMR)软件复位SR位置1后,硬件未自动清除该位,导致软件,导致代码进入while死循环。
  这问题在用官网代码上也复位不成功。代码如下:

/* Ethernet Software reset */
  /* Set the SWR bit: resets all MAC subsystem internal registers and logic */
  /* After reset all the registers holds their respective reset values */
  (heth- gt;Instance)- gt;DMABMR |= ETH_DMABMR_SR;
  
  /* Wait for software reset */
  while (((heth- gt;Instance)- gt;DMABMR  amp; ETH_DMABMR_SR) != (uint32_t)RESET)
  {
  }
请问各位大刘是否遇到类似问题?麻烦帮忙指点下!万分感谢!
之前把while遇见屏蔽掉,复位后不进行判断,但代码移植后始终无法通信,表现为MAC无法收发数据,DP83848能连接上。不知在复位不成功对后续DMA收发是否有影响?

回帖(1)

h1654155275.5741

2024-4-12 15:59:30
对于你遇到的软件复位失败的问题,你可以尝试以下方法来解决:

1. 确保正确配置了以太网控制器(MAC)和外设(PHY),包括正确的时钟和引脚配置等,确保它们之间的连接正常。

2. 检查官方代码是否正确配置了以太网控制器和外设,确保没有遗漏或错误的配置。

3. 确保你使用的是适当的时钟源,如果时钟源的配置不正确,可能会导致复位失败。

4. 确保为以太网控制器配置了正确的系统时钟频率,以确保与外设的正确通信。

5. 尝试在复位完成后,手动清除以太网总线模式寄存器的SR位,验证是否能够成功复位。

6. 检查以太网外设提供商的文档,了解有关复位过程的更多细节和限制。可能存在某些特定的步骤或顺序,以确保复位成功。

7. 如果可能的话,尝试更新以太网控制器和外设的固件版本,以修复可能存在的错误或问题。

在调试过程中,还应注意确保正确的时序和同步,以避免不可预测的行为和错误。同时,可能还需要仔细检查其他可能导致问题的代码部分,例如中断处理程序或其他相关的初始化步骤。
举报

更多回帖

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