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

zxqwork   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欧的阻抗匹配电阻,会不会和这个有关系呢

回复评论 (18)

这个可能有问题:“stm32F107是3.3v电压,而PHY是和2.5v的I/O电压”

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

其实既然10M可以正常通信,100M应该问题也不大的,至少用示波器应该能看到F107发出数据。从症状看,多半是初始化的问题,可以把10M、100M的初始化代码贴出来看看。
点赞  2010-2-24 13:30
PHY芯片难道不是DP83848?
I/O电压是物理层TD+和TD-,RD+和RD-之间的电压吗?
点赞  2010-2-24 14:45
谢谢IJK
代码在这里
stm32_eth.rar (16.91 KB)
点赞  2010-2-24 14:49
回3楼,phy不是DP83848,是marvell的88E1111,千兆芯片,支持MII,所以我只用百兆就行
芯片双电压供电,核心是1.0v,外围电路是2.5v

不过代码是在用dp83848的例程改的
点赞  2010-2-24 14:53
                                 我也是在研究STM32F107 以太网功能 刚接触以太网 大家交流交流 我的QQ:343069192
点赞  2010-2-25 09:46
                                 你用LWIP协议的还是UIP ?请问哪个简单可以实现数据收发
点赞  2010-2-25 09:54
                                 UIP小一些
点赞  2010-2-25 13:06
似乎用 ETH_AutoNegotiation_Enable 的方式,这时候需要确保AutoNegotiation的结果是100M。

  另外,“但是phy适应到100M的时候,F107发送不出数据,这时候可以测到MII接口的频率是25M,但是看不到有发送出的数据。”     
  F107发送不出数据,是指在MII接口的4条线上没有数据吗?
并且也没有有效的 TX_EN 信号吗?
点赞  2010-2-26 14:02
谢谢IJK还在关注我的问题
F107发送不出数据,是因为我在MII的四条线上都看不到高电平信号(10M的时候是可以看到的)
Tx-En的信号我晚上看一下
点赞  2010-2-26 16:58
                                 很是奇怪,tx-en一直没有信号,10M正常通讯的时候也没有
点赞  2010-2-26 18:08
                                 这个之前没用过,但是感觉很有兴趣,有时间学习下
点赞  2010-2-26 21:27
今天继续测试,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个别芯片的问题。
点赞  2010-2-28 00:55
发送、接收以及设置(通过MDC、MDIO)的问题要分开来查。
按照LS的描述,发送应该没有问题,但还有TX_EN的疑问;接收多半有问题。
另外通过MDC、MDIO进行设置是否有问题,不清楚,设置得是否正确,可以通过读寄存器来验证。
点赞  2010-3-3 12:08
谢谢IJK,tx_en的问题已经可以测到正常信号,可能是上次弄错引脚

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

寄存器今天好好查一查
点赞  2010-3-3 13:34
                                 我用TI的c6455,phy用LXT971,也遇到类似的问题。正在解决中。。。 。。。
点赞  2010-3-4 10:51
                                 请问楼主解决没啊?我的PHY是RTL8301BL 支持10M/100M的 但是和电脑自动协商后只有10M 强制设置100M就不工作了 请教中 是不是107的MAC的问题啊?
点赞  2010-3-22 22:05
                                 以太网功能还没调过,比较感兴趣
点赞  2010-3-22 22:11

我和楼主一样用88E1111接兆易创新单片机(对标STM32),PHY2.5,单片机3.3V,MII接口时10M可以,100M不行。请问楼主最后怎么解决的?

点赞  2021-8-16 18:50
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复