硬汉嵌入式论坛

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

[STM32H7] DM9000使用FMC可以读到ID,但无法ping通

[复制链接]

12

主题

53

回帖

89

积分

初级会员

面霸

积分
89
发表于 2024-7-12 23:46:11 来自手机 | 显示全部楼层 |阅读模式
在安富莱V7开发板,已写好lwip管理dm9000的程序。自己打板后片选改成了NE1,也做了0x6000 0000区域NO CACHE的处理,但自己的板子只能读到DM9000的ID,无法ping通,两个led始终不亮。

提问:可以读到ID,是否可以证明DM9000和MCU之间的FMC硬件部分没问题?还有个问题是关于网卡两个灯的,同样没有程序的情况下,网线连DM9162这种单一PHY是两个灯可以闪,但DM9000这种集成MAC+PHY的就不行,不太清楚网卡是不是有这样的区别。

附自己打板的硬件原理图:
Screenshot_20240712_234540_cn.wps.moffice_eng.png
回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

面霸

积分
89
 楼主| 发表于 2024-7-13 01:24:11 来自手机 | 显示全部楼层
另外补充,连网线上电后,读DM9000寄存器是可以得到网线连接的情况的。
回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

面霸

积分
89
 楼主| 发表于 2024-7-13 01:24:35 来自手机 | 显示全部楼层
uint8_t DM9000_Get_SpeedAndDuplex(void) {         uint8_t temp;         uint8_t i = 0;          while(!(DM9000_phy_read(DM9000_PHY_BMSR) & 0x0020))                //等待自动协商完成          {                 HAL_Delay(100);                 i++;                  if(i > 100)return 0XFF;                                        //自动协商失败          }          temp = ((DM9000_IOR(DM9000_REG_NSR) >> 6) & 0x02);                //获取DM9000的连接速度 0:100M 1:10M          temp |= ((DM9000_IOR(DM9000_REG_NCR) >> 3) & 0x01);                //获取DM9000的双工状态           return temp; }
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-7-13 08:42:28 | 显示全部楼层
1、DM9000输出的2.5v看看正常不
2、这个FMC操作DM9000的地址空间MPU属性是配置的Device或者Strongly order吧
回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

面霸

积分
89
 楼主| 发表于 2024-7-13 17:02:47 来自手机 | 显示全部楼层
eric2013 发表于 2024-7-13 08:42
1、DM9000输出的2.5v看看正常不
2、这个FMC操作DM9000的地址空间MPU属性是配置的Device或者Strongly order ...

1. RX/TXVDD25 实测都是2.6V左右
2.MPU对0x6000 0000起始64MB的空间配置是NO_CACHE NO_BUFFER NO_SHARE

补充:1.下午又读了一下DM9000的寄存器,所有寄存器都能正常读。包括对中断寄存器的配置,所有请求全开后,是会不断的进EXTI的;如果仅开启RX中断,那么就不会进EXTI中断 2.单独有一个线程读DM9000的连接状态寄存器,板子上电后过5~10分钟,打印会有一次短暂的网线连接和断开,期间实际网线是一直连着的。
76988dd6677a47ebb926e35ec42adc42.png
ead741fc43da4701a88910b90caefa90.png
回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

面霸

积分
89
 楼主| 发表于 2024-7-13 17:12:51 来自手机 | 显示全部楼层
网线一直保持连接,DM9000会不断触发LINK CHANGED中断。网线断开,就不会有该中断产生。  似乎是DM9000认为网线连接不稳定?想问下硬汉哥,这种网卡PHY判断网线连接的逻辑是怎样的,看手册没太看出来
回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

面霸

积分
89
 楼主| 发表于 2024-7-13 17:13:19 来自手机 | 显示全部楼层
补充LINK_CHANGED图片
86559469a5854bbebb0540be0e71e500.png
5001cbc5eb3345f3a600082b11391b6c.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-7-14 09:20:33 | 显示全部楼层
1350280419 发表于 2024-7-13 17:02
1. RX/TXVDD25 实测都是2.6V左右
2.MPU对0x6000 0000起始64MB的空间配置是NO_CACHE NO_BUFFER NO_SHARE
...

还有一个地方可以调节,就是那个FMC时序,你可以降低下通信速度试试。
回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

面霸

积分
89
 楼主| 发表于 2024-7-14 16:36:59 来自手机 | 显示全部楼层
eric2013 发表于 2024-7-14 09:20
还有一个地方可以调节,就是那个FMC时序,你可以降低下通信速度试试。

现在是网卡MAC和PHY的LOOPBACK测试正常,但无法检测到网线连接,DM9000的寄存器不断交替有linkup linkdown中断,我怀疑是对端网线过来的FLP和NLP有问题,搞的DM9000无法识别。汉老哥,这种情况下,能锁定是硬件问题吗
wx_camera_1720945557984.jpg
回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

面霸

积分
89
 楼主| 发表于 2024-7-14 19:32:27 来自手机 | 显示全部楼层
eric2013 发表于 2024-7-14 09:20
还有一个地方可以调节,就是那个FMC时序,你可以降低下通信速度试试。

今天试了一下关闭自协商,强制10M后居然可以ping通了。基本锁定是硬件问题,然后发现硬件这里TX RX终端电阻是51Ω,V7和DM9000官方是49.9Ω和50Ω。明天排查一下这里的问题。
回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

面霸

积分
89
 楼主| 发表于 2024-7-14 19:34:26 来自手机 | 显示全部楼层
1350280419 发表于 2024-7-13 17:12
网线一直保持连接,DM9000会不断触发LINK CHANGED中断。网线断开,就不会有该中断产生。  似乎是DM9000认为 ...

另外关于LINKUP LINKDOWN的判定,研究了一下发现100M是双方会间隔发送FTP包来维持连接。10M是间隔发送NLP包。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-7-15 07:59:39 | 显示全部楼层
1350280419 发表于 2024-7-14 19:32
今天试了一下关闭自协商,强制10M后居然可以ping通了。基本锁定是硬件问题,然后发现硬件这里TX RX终端电 ...

回复

使用道具 举报

33

主题

188

回帖

287

积分

高级会员

积分
287
发表于 2024-7-15 08:39:28 | 显示全部楼层
mark
回复

使用道具 举报

4

主题

1441

回帖

1453

积分

至尊会员

积分
1453
发表于 2024-7-15 11:33:26 | 显示全部楼层
回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

面霸

积分
89
 楼主| 发表于 2024-7-15 22:34:19 来自手机 | 显示全部楼层
可以暂时结贴了,问题已查明。
回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

面霸

积分
89
 楼主| 发表于 2024-7-15 22:49:17 来自手机 | 显示全部楼层
(吐槽下论坛手机发帖,回车键想换行,结果直接发送了)
问题已查明,是TX RX差分信号线和网络变压器这边的上拉电压有问题。V7板测到TX+波形,基准是2.5V,范围是2~3V;公司打的板,基准是2V,范围是1.5~2.5V,整整差了0.5V,始终上不去了。造成了FTP信号识别错误(10M也是差0.5V,不知道为啥就能通信),后面把DM9000提供的2.5V电源,换成了板子上的3.3V,自协商100M成功ping通。

两块板子都是按照DM9000手册里的接法,上拉到2.5V,不知道我的板子为啥不行,后面再慢慢测吧,反正先能跑起来了。

附图是TX+的波形对比,以及我说的2.5V的位置。
93ce13c0bc734b39bb20348c660d9a27.jpg
ffafefacc6554c15a8959a05fd73b9d2.jpg
Screenshot_20240715_223306.jpg
回复

使用道具 举报

12

主题

53

回帖

89

积分

初级会员

面霸

积分
89
 楼主| 发表于 2024-7-15 22:59:53 来自手机 | 显示全部楼层
另外说明一下调试心得:
1.终端电阻用51Ω,没啥问题
2.H7驱动SRAM,如硬汉老哥所说,要特别注意MPU的NO SCB配置
3.FMC时序的参数,得试,不同板子不同布线,时序可能会不一样
4.合理利用IC自带的测试,我利用DM9000的MAC和PHY的LOOPBACK,至少证明了FMC接口正常,再继续排查后继的部分
5.做这种不熟悉的,略复杂的IC,一定要有成熟可靠的开发板验证,没有V7做参考,恐怕一辈子也查不出差分电平有问题
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-7-16 08:49:09 | 显示全部楼层
1350280419 发表于 2024-7-15 22:49
(吐槽下论坛手机发帖,回车键想换行,结果直接发送了)
问题已查明,是TX RX差分信号线和网络变压器这边 ...

谢谢分享最终问题原因
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 06:17 , Processed in 0.429832 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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