OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6711|回复: 3

ETH_DMABMR寄存器的问题

[复制链接]

5

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2018-5-7
在线时间
14 小时
发表于 2018-5-15 18:32:04 | 显示全部楼层 |阅读模式
最近的项目,我使用自己画的板子,使用的STM32F429VIT6(即100Ppin)的片子,外接PHY为RTL8201CP,将例程中RMII接口改为MII接口,发现如下问题:程序卡在下面的循环中,出不来
  while (((heth->Instance)->DMABMR & ETH_DMABMR_SR) != (uint32_t)RESET)
  {
  }

这一段代码出现在文件stm32f4xx_hal_eth.c中的函数HAL_StatusTypeDef HAL_ETH_Init(ETH_HandleTypeDef *heth)中,前后文为
  /* 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;
  /* Wait for software reset */
  while (((heth->Instance)->DMABMR & ETH_DMABMR_SR) != (uint32_t)RESET)
  {
  }

这是在设置ETH_DMABMR_SR位软件复位后,等待ETH_DMABMR_SR位变为1,但是此寄存器永远不会变为1,
我查阅了手册,此位描述为:
“位 0 SR: 软件复位 (Software reset)
当该位置 1 时, MAC DMA 控制器会复位所有 MAC 子系统的内部寄存器和逻辑。在所有内核时钟域完成复位操作后,该位自动清零。重新编程任何内核寄存器之前,在该位中读取0 值。 ”
(出自《STM32F4xx中文参考手册》P912)
为了侦测此位,我在程序中加入了一个变量“T”,将程序改为
  /* 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 */
        T= (heth->Instance)->DMABMR;
        (heth->Instance)->DMABMR &= ((uint32_t)0xFFFFFFFE);
        T= (heth->Instance)->DMABMR;
        (heth->Instance)->DMABMR &= ((uint32_t)0x0);
        T= (heth->Instance)->DMABMR;
  (heth->Instance)->DMABMR |= ETH_DMABMR_SR;
        T= (heth->Instance)->DMABMR;
  /* Wait for software reset */
  while (((heth->Instance)->DMABMR & ETH_DMABMR_SR) != (uint32_t)RESET)
  {
        T= (heth->Instance)->DMABMR;
  }

紫色部分为我加入的代码,发现两个问题
1、ETH_DMABMR_SR位根本不可能为0,以我粗浅的认识,写入1的前提是本来为0,但是此位从来不会为0,即使强制写入也不可能为0,这个寄存器的其他位都可以人为的强制写入0,但是此位不行。
2、ETH_DMABMR寄存器文档上说复位值为0x0000 2101(出自《STM32F4xx中文参考手册》P911),但是读出的数据却是0x0002 0101。


有没有知道或者遇到过类似问题的高手,不吝赐教。
电路原理图在附件中:[img]file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\117225113\QQ\WinTemp\RichOle\M)08[~)2XYRBI})X9`F(BPC.png[/img]

[img]file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\117225113\QQ\WinTemp\RichOle\M)08[~)2XYRBI})X9`F(BPC.png[/img]



MYS{5U~8V9(C}V(WQ_CBEVY.png
M)08[~)2XYRBI})X9`F(BPC.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-7-19
在线时间
5 小时
发表于 2018-8-2 14:05:31 | 显示全部楼层
位 0 SR:软件复位 (Software reset)当该位置 1 时,MAC DMA 控制器会复位所有 MAC 子系统的内部寄存器和逻辑。在所有内核时钟域完成复位操作后,该位自动清零。重新编程任何内核寄存器之前,在该位中读取
0 值。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2014-5-21
在线时间
3 小时
发表于 2018-10-23 23:33:20 | 显示全部楼层
你好,请问你的问题找到了吗?我目前也是在这个地方卡住了,还没找到原因
回复 支持 反对

使用道具 举报

2

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2019-5-6
在线时间
9 小时
发表于 2019-5-7 20:07:05 | 显示全部楼层
你好,我也是在这个地方卡住了,请问你解决了吗,是什么问题?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-30 09:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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