ENET_INIT卡死在DMA_MODE判断

在ENET_INIT中有一段代码是判断DMA_MODE的SWR是否被清零,在调试时候发现始终会卡死在while循环,于是查阅芯片手册:

位 0:SWR(软件复位)

当该位置 1 时,MAC 和 DMA 控制器会复位内部逻辑,以及 DMA、MTL(媒体访问控制传输层)和 MAC 的所有内部寄存器。复位操作在 DWC_ether_qos 的所有时钟域完成后,该位会自动清零。在重新编程任何 DWC_ether_qos 寄存器前,需确认该位已读回 0。

向该位写入 1 后,至少需等待 4 个 CSR 时钟周期才能读取其值。

注意:仅当所有活动时钟域中的复位信号均已释放时,复位操作才算完成。因此,所有 PHY 输入时钟(与所选 PHY 接口对应)必须存在,以确保软件复位完成。复位操作的完成时间取决于最慢活动时钟的频率。

访问限制:置 1 时触发复位(自清零),置 0 无效果。

  • 0b:软件复位禁用
  • 1b:软件复位使能

发现这一位是和时钟使能相关,逐个确认ENET_125M_REF_CLK(参考时钟源)、 总线时钟、CSR_CLK时钟源正确配置后,问题解决。

相关推荐
剑指offer.6 小时前
嵌入式硬件-ARM芯片的启动
c语言·嵌入式硬件·嵌入式
Kuakewei8886 小时前
1.5V升压3V专用芯片PW5100在单节干电池供电中的边界条件
嵌入式硬件
DaTou大头7 小时前
STM32第六篇
单片机·嵌入式·电路基础
Kuakewei8887 小时前
1.5V升压3.3V专用芯片PW5100直通关断与PW5103真关断分析
嵌入式硬件
威嵌神州8 小时前
VxWorks6.9 BSP 适配:飞腾 D2000/FT2000/4 平台、驱动开发
驱动开发·嵌入式硬件·fpga开发·系统架构
一直C8 小时前
ARM裸机开发Day04|IMX6ULL汇编&C点灯实操,Makefile、链接脚本、段解析
嵌入式硬件·imx6ull·交叉编译
女神下凡9 小时前
端侧 AI 产品 有什么产品
人工智能·嵌入式硬件
pan0c239 小时前
什么是ESP8266-NodeMCU
嵌入式硬件·esp8266
Brilliantwxx9 小时前
【STM32】 SPI阻塞式通信与HAL源码(串口读ID实战)
开发语言·stm32·单片机·嵌入式硬件·ecmascript
t13970189 小时前
太阳能板与电池的电压匹配:别用开路电压 Voc,要用 Vmp
嵌入式硬件·物联网·硬件设计·电源管理·太阳能供电