硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1252|回复: 13
收起左侧

[以太网] 以太网MAC复位失败

[复制链接]

3

主题

46

回帖

55

积分

初级会员

积分
55
发表于 2024-9-4 13:49:18 | 显示全部楼层 |阅读模式
我用stm32f407vet6+LAN8720A调试以太网遇到软件复位失败问题,单步调试发现在复位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->Instance)->DMABMR |= ETH_DMABMR_SR;
  
  /* Get tick */
  tickstart = HAL_GetTick();
  
  /* Wait for software reset */
  while (((heth->Instance)->DMABMR & ETH_DMABMR_SR) != (uint32_t)RESET)
  {
    /* Check for the Timeout */
    if((HAL_GetTick() - tickstart ) > ETH_TIMEOUT_SWRESET)
    {     
      heth->State= HAL_ETH_STATE_TIMEOUT;
  
      /* Process Unlocked */
      __HAL_UNLOCK(heth);
   
      /* Note: The SWR is not performed if the ETH_RX_CLK or the ETH_TX_CLK are  
         not available, please check your external PHY or the IO configuration */
      return HAL_TIMEOUT;
    }
  }

回复

使用道具 举报

3

主题

46

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-9-4 14:03:54 | 显示全部楼层
C:\Users\23205\Desktop
回复

使用道具 举报

3

主题

46

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-9-4 14:05:46 | 显示全部楼层
这是测量的RCLK引脚频率图
3e81d530fc528e67ab83df0043fea1a.jpg
回复

使用道具 举报

3

主题

422

回帖

431

积分

高级会员

积分
431
发表于 2024-9-4 14:15:14 | 显示全部楼层
这个RCLK信号有反射
回复

使用道具 举报

3

主题

46

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-9-4 15:43:17 | 显示全部楼层
glory 发表于 2024-9-4 14:15
这个RCLK信号有反射

有反射会有什么影响?  输出的频率还是50M  正常的话他的波形是怎么样的的呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-9-5 08:25:20 | 显示全部楼层
你的8720有硬件复位吧,跟着MCU一起复位的还是GPIO控制的,不管是那种,复位后等待1秒再初始化MAC和PHY,看看是不是好点。

这个晶振波形之前还真测试过一次,我们这个是外置有源晶振


回复

使用道具 举报

3

主题

46

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-9-5 09:28:03 | 显示全部楼层
eric2013 发表于 2024-9-5 08:25
你的8720有硬件复位吧,跟着MCU一起复位的还是GPIO控制的,不管是那种,复位后等待1秒再初始化MAC和PHY,看 ...

GPIO控制的    不过这个函数在他的回调函数里面
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-9-6 09:11:23 | 显示全部楼层
xiaxinjie 发表于 2024-9-5 09:28
GPIO控制的    不过这个函数在他的回调函数里面

按照我前面说的延迟方式,看看能正常不
回复

使用道具 举报

3

主题

46

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-9-9 09:24:55 | 显示全部楼层
eric2013 发表于 2024-9-6 09:11
按照我前面说的延迟方式,看看能正常不

还是不行  我先在前面加了复位和延时  然后初始化  还是卡死在这个地方
回复

使用道具 举报

3

主题

46

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-9-9 13:36:36 | 显示全部楼层
eric2013 发表于 2024-9-6 09:11
按照我前面说的延迟方式,看看能正常不

大佬我的VDDCR引脚输出位0  这个正常?  不知道这个是连接上了才有1.2v的输出还是怎么样
回复

使用道具 举报

3

主题

46

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-9-9 15:27:44 | 显示全部楼层
eric2013 发表于 2024-9-6 09:11
按照我前面说的延迟方式,看看能正常不

微信截图_20240909152341.png 微信截图_20240909152356.png 这是原理图     

回复

使用道具 举报

32

主题

297

回帖

393

积分

高级会员

积分
393
发表于 2024-9-9 15:43:14 | 显示全部楼层
xiaxinjie 发表于 2024-9-9 13:36
大佬我的VDDCR引脚输出位0  这个正常?  不知道这个是连接上了才有1.2v的输出还是怎么样

LAN8720的 6脚VDDCR 输出电压1.2V  14脚REFCLKO输出50MHZ  
回复

使用道具 举报

3

主题

46

回帖

55

积分

初级会员

积分
55
 楼主| 发表于 2024-9-10 10:35:36 | 显示全部楼层
weiyuliang 发表于 2024-9-9 15:43
LAN8720的 6脚VDDCR 输出电压1.2V  14脚REFCLKO输出50MHZ

我测了 一下 那个芯片上的VDDCR输出引脚 有1.2v 我那个电容上 没有1.2
回复

使用道具 举报

7

主题

34

回帖

55

积分

初级会员

积分
55
发表于 2024-9-13 19:36:48 | 显示全部楼层
eric2013 发表于 2024-9-6 09:11
按照我前面说的延迟方式,看看能正常不

硬汉大佬,我想了解一下,我想读取phy的id是只要初始化了rmii引脚就行还是得先配置mac
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-29 01:58 , Processed in 0.334088 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表