打印

关于STM32F107控制DM9161A的问题,请教各位

[复制链接]
9977|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yadaovs|  楼主 | 2011-12-1 10:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想问下各位,我自己做了一块STM32F107的网络控制板,电路参考的是神舟IV号的电路,网络芯片用的是DM9161A,然后在调试的时候发现读取的DM9161A的寄存器值全是0xFFFF。请问有哪位也碰到过这种问题吗,有可能是哪的原因? 代码在开发板上完全好用,我自己的板子电路也是参考开发板的做的。
沙发
yadaovs|  楼主 | 2011-12-1 14:06 | 只看该作者
再请问数据线上的22R的电阻,是起什么作用的,是否可以不加

使用特权

评论回复
板凳
yan2005| | 2011-12-1 14:38 | 只看该作者
重新检查电路。
-看供电电压是不是3.3V
-看晶振有没有起振

使用特权

评论回复
地板
yadaovs|  楼主 | 2011-12-1 15:19 | 只看该作者
3# yan2005
3.3V供上了,2.5V的模拟电输出也检查了。另外我这个用的是STM32 的MCO引脚做时钟信号,我测了下输出是50M的。虽然看资料是25M,但是我测了开发板的信号也是50M。

使用特权

评论回复
5
yan2005| | 2011-12-2 07:58 | 只看该作者
50M代表的是RMII模式,25M是MII模式。
2.5V模拟输出了,表示供电没有问题,而且内部相关的电路也工作了。
22欧的电阻是阻抗匹配用的吧,值别太大。

还是从2个角度排查:
1. 电路确认和参考电路一致。实在不行,贴上来让大家看看。
2. 驱动和参考板上的驱动保持完全一致。

读取寄存器的值,记得dm9161a有点特殊,好像要读2次值才对??(不确定了,)反正试试看吧。

使用特权

评论回复
6
yadaovs|  楼主 | 2011-12-2 09:59 | 只看该作者
5# yan2005


感谢您的回复。我把原理图发上来吧,我参考的是神舟IV号开发板的电路,但是对其中一些没用的引脚没加上,不知道是不是这里出的问题。

Net control system v1.0.pdf

1.24 MB

使用特权

评论回复
7
yan2005| | 2011-12-2 13:04 | 只看该作者
看电路没有明显的错误。你用的是protel画的吧,我这的电路是cadence的,线与线交点的地方会有一个红点,你的图里好像都没有。是不是protel都这样?

关于调试:
1. 首先确认焊接没问题,最好重新用烙铁烫烫管脚。
2. 有条件的话,断开原来的时钟,自己飞一个25M的晶振,如果能振荡起来,才能确认数字部分基本上没问题。
3. 另外有些不太重要的地方(不针对你的提问),请查下。
- pin47和pin48之间用6.8K电阻连接,但是应该不接到地上。你的图这里可能有问题的。
- pin38是rptr/node,上拉是repeater模式,下拉是node模式。看你原来参考图里面是哪个模式。
- pin39是和交叉线有关的,我原来的图里面是经过10K电阻接到了3.3V上面。

使用特权

评论回复
8
yadaovs|  楼主 | 2011-12-2 15:03 | 只看该作者
7# yan2005

非常感谢您的帮助。

我检查了开发板的6.8K电阻的引脚,发现47脚确实连到了地,另外的两个地方也和开发板接的一样。
我给你发的那个是我后来改的,现在的电路没有接RMII_TXD0、RMII_TXD1和RMII_TXEN的22R的电阻,我怀疑会不会是这个问题。别的实在没找到什么错误,就连器件封装都对了几遍,呵呵

使用特权

评论回复
9
yan2005| | 2011-12-2 15:23 | 只看该作者
还是先确认dm9161A自己已经开始工作了,主要有两点:1) 芯片起振,如果可以的话,还是外接一个晶振试试看。2) 通过MDC和MDIO接口能读到片内寄存器的内容。

再看下reset的电平,拉低之后有拉高吗?可不能一直为低。

那些TXD0, TXD1等等的信号是发送网络数据用的。你现在可以先不关注吧。

使用特权

评论回复
10
yadaovs|  楼主 | 2011-12-2 15:58 | 只看该作者
9# yan2005

我现在是这样,每次初始化以后,通过串口将读取的寄存器的值以及分析结果都通过串口发送到电脑上显示。现在每次上电后,串口数据都显示已经自定义协议成功,为100M 全双工模式,我对比了开发板的数据是一样的。这是否能说明数字电路已经工作了?

使用特权

评论回复
11
yan2005| | 2011-12-3 21:12 | 只看该作者
基本上对了, 再多读一些寄存器, 和开发板对比下确认下.

数字部分如果工作的话, 后面只是变压器和RJ45的调试了。这部分只要确认电路连线正确,基本上都能起来。

使用特权

评论回复
12
blackhill| | 2011-12-5 09:48 | 只看该作者
楼主跳出来了吗?我也遇到类似问题搞了一周了,也没通!!!

使用特权

评论回复
13
blackhill| | 2011-12-5 10:36 | 只看该作者
DM9161A寄存器的值读正确,就是ping不通

使用特权

评论回复
14
yan2005| | 2011-12-6 07:37 | 只看该作者
13# blackhill

数字部分已经正确,关注网络接口一侧硬件. 确认驱动是在开发板上成功运行过的。

使用特权

评论回复
15
blackhill| | 2011-12-6 08:03 | 只看该作者
与开发板接口相同,用的同一个程序,网络接口的原理图也一样,只是布线不同,就是ping不通,请问有时什么调试手段,可以确认故障位置?

使用特权

评论回复
16
yadaovs|  楼主 | 2011-12-6 09:41 | 只看该作者
11# yan2005

感谢前辈的支持。这两天重做了板子,把那几个阻抗匹配的电阻加上,就好用了。很荣幸能受您的指点,您的回复对我的启发很大。

使用特权

评论回复
17
yadaovs|  楼主 | 2011-12-6 09:44 | 只看该作者
15# blackhill

我也是把开发板的程序下进去,然后看运行情况。我后来看手册,读寄存器的线路和通信数据的线路是不同的,你读寄存器正确了,但是RXD 和TXD这些地方说不定有问题,再检查下好了。祝早日调通

使用特权

评论回复
18
nikita-fuck| | 2011-12-6 10:09 | 只看该作者
检查自己的线路板

使用特权

评论回复
19
yan2005| | 2011-12-6 12:08 | 只看该作者
16# yadaovs

别客气, 相互学习!

使用特权

评论回复
20
blackhill| | 2011-12-6 12:58 | 只看该作者
不知道是不是布线的问题,我也重新做块板试试,不过没找到问题,也不好调整

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:谁能书阁下,白首太玄经。。。Aal iz wll!

0

主题

48

帖子

1

粉丝