打印

请教:stm32F107和phy的MII口通讯,10M可以,100M不行

[复制链接]
20136|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
videre|  楼主 | 2010-2-24 12:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前的现象是
F107和phy之间用MII接口连接
phy适应到10M的时候,可以正常通讯,测到MII接口的频率是2.5M,用示波器也可以看到发送数据的电平信号,这个正常的

但是phy适应到100M的时候,F107发送不出数据,这时候可以测到MII接口的频率是25M,但是看不到有发送出的数据。

研究了很久,也不知道错误在哪里,所以考虑会不会是因为两个芯片电平不一致,导致在高频率下无法通讯,stm32F107是3.3v电压,而PHY是和2.5v的I/O电压

还有个问题,就是现在在MII接口的电路上,没有串联22欧的阻抗匹配电阻,会不会和这个有关系呢
沙发
IJK| | 2010-2-24 13:30 | 只看该作者
这个可能有问题:“stm32F107是3.3v电压,而PHY是和2.5v的I/O电压”

没有串联22欧的阻抗匹配电阻,应该没多大关系。

其实既然10M可以正常通信,100M应该问题也不大的,至少用示波器应该能看到F107发出数据。从症状看,多半是初始化的问题,可以把10M、100M的初始化代码贴出来看看。

使用特权

评论回复
板凳
zdx818| | 2010-2-24 14:45 | 只看该作者
PHY芯片难道不是DP83848?
I/O电压是物理层TD+和TD-,RD+和RD-之间的电压吗?

使用特权

评论回复
地板
videre|  楼主 | 2010-2-24 14:49 | 只看该作者
谢谢IJK
代码在这里
stm32_eth.rar (16.91 KB)

使用特权

评论回复
5
videre|  楼主 | 2010-2-24 14:53 | 只看该作者
回3楼,phy不是DP83848,是marvell的88E1111,千兆芯片,支持MII,所以我只用百兆就行
芯片双电压供电,核心是1.0v,外围电路是2.5v

不过代码是在用dp83848的例程改的

使用特权

评论回复
6
denike| | 2010-2-25 09:46 | 只看该作者
我也是在研究STM32F107 以太网功能 刚接触以太网 大家交流交流 我的QQ:343069192

使用特权

评论回复
7
denike| | 2010-2-25 09:54 | 只看该作者
你用LWIP协议的还是UIP ?请问哪个简单可以实现数据收发

使用特权

评论回复
8
videre|  楼主 | 2010-2-25 13:06 | 只看该作者
UIP小一些

使用特权

评论回复
9
IJK| | 2010-2-26 14:02 | 只看该作者
似乎用 ETH_AutoNegotiation_Enable 的方式,这时候需要确保AutoNegotiation的结果是100M。

  另外,“但是phy适应到100M的时候,F107发送不出数据,这时候可以测到MII接口的频率是25M,但是看不到有发送出的数据。”     
  F107发送不出数据,是指在MII接口的4条线上没有数据吗?
并且也没有有效的 TX_EN 信号吗?

使用特权

评论回复
10
videre|  楼主 | 2010-2-26 16:58 | 只看该作者
谢谢IJK还在关注我的问题
F107发送不出数据,是因为我在MII的四条线上都看不到高电平信号(10M的时候是可以看到的)
Tx-En的信号我晚上看一下

使用特权

评论回复
11
videre|  楼主 | 2010-2-26 18:08 | 只看该作者
很是奇怪,tx-en一直没有信号,10M正常通讯的时候也没有

使用特权

评论回复
12
gxgclg| | 2010-2-26 21:27 | 只看该作者
这个之前没用过,但是感觉很有兴趣,有时间学习下

使用特权

评论回复
13
videre|  楼主 | 2010-2-28 00:55 | 只看该作者
今天继续测试,100M偶尔能用
用示波器把MII所有引脚都测过了,发现一个问题
phy输出的tx_clk和rx_clk时钟信号,在2.5M(端口10M)时,波形都是2.5v左右。
适应到100M以后,tx_clk和rx_clk的25M时钟信号,波幅tx_clk是2.5v,rx_clk只有2.1v。
查了下F107的datasheet,3.3v电压下,高电平的最低阀值是2V。猜测有可能F107的输入rx_clk点平太低无法识别。
怕是F107的端口负载引起,吧phy的引脚翘起来量,仍然是2.1v,真是郁闷
请高手指点
弄了一批板子都是这样,估计不是phy个别芯片的问题。

使用特权

评论回复
14
IJK| | 2010-3-3 12:08 | 只看该作者
发送、接收以及设置(通过MDC、MDIO)的问题要分开来查。
按照LS的描述,发送应该没有问题,但还有TX_EN的疑问;接收多半有问题。
另外通过MDC、MDIO进行设置是否有问题,不清楚,设置得是否正确,可以通过读寄存器来验证。

使用特权

评论回复
15
videre|  楼主 | 2010-3-3 13:34 | 只看该作者
谢谢IJK,tx_en的问题已经可以测到正常信号,可能是上次弄错引脚

现在的问题就是100M时phyt送给stm32的rx_clk和tx_clk时钟信号波幅较低(10M时的2.5M始终正常为2.5v),我现在想知道stm32是怎样识别这种时钟信号的,是不是也是通过TTL电平。会不会因为电平的问题收不到时钟信号。

寄存器今天好好查一查

使用特权

评论回复
16
a_thj| | 2010-3-4 10:51 | 只看该作者
我用TI的c6455,phy用LXT971,也遇到类似的问题。正在解决中。。。 。。。

使用特权

评论回复
17
denike| | 2010-3-22 22:05 | 只看该作者
请问楼主解决没啊?我的PHY是RTL8301BL 支持10M/100M的 但是和电脑自动协商后只有10M 强制设置100M就不工作了 请教中 是不是107的MAC的问题啊?

使用特权

评论回复
18
dfsa| | 2010-3-22 22:11 | 只看该作者
以太网功能还没调过,比较感兴趣

使用特权

评论回复
19
taomo| | 2011-4-2 11:17 | 只看该作者
刚刚开始,谁能提供一个例程啊,学习学习啊,O(∩_∩)O哈哈~

使用特权

评论回复
20
videre|  楼主 | 2011-4-2 12:08 | 只看该作者
又翻出来了
问题解决了
加了个电平转换芯片,我用的phy是2.5v的,IO可容忍3.3v,这样的话,STM32发给phy的信号没问题,phy 2.5v电平发给stm32的在高速(25M )状态下就不行了
加了电平转换就很稳定了

使用特权

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

本版积分规则

25

主题

183

帖子

3

粉丝