STM32F407+DP83848
2015-11-05 20:31
162 查看
转自:http://blog.csdn.net/lijing198997/article/details/40653845
STM32支持两种工业级标准的接口,来与外部物理层 PHY模块相连,分别是独立于介质的接口(MII)和简化的独立于接口的接口(RMII)。之前PHY芯片使用的MII模式,现在的这次调试是使用的RMII模式(参考了各方原理图,主要还是以官方开发板的MB786为主)。我还是以一个ST官方手册上的图来说说我的使用情况吧。
1. 如果我们按照这个图上来画原理图,这个肯定没有错,但是对于一般使用(我们用的都是全双工的),CRS和COL这两根线使用的不多,至于为什么,我也说的不是很清楚,了解的同学们,可以补充下。
2. 对于连接DP83848和stm32时,在电路上是否要串行电阻,串接多大的问题。借网友的回答是这样的:串接电阻这是用来做阻抗匹配,防止信号反射的。一般PCB走线控制为50欧姆,在这样接收端高阻的情况时,可以通过源端串联50欧姆来做匹配,将终端反射回来的信号吸收,防止在源端再次发生发射。至于,串接多大的电阻,由信号驱动的内阻(大约20欧)决定,与PCB走线匹配。所以这个电阻在PCB上的位置要和信号驱动端靠近。要不要做匹配就取决于信号的速度和走线长度,规则一般是走线长度大于信号波长的1/10就要匹配了,50M的时钟最好是接一下了,不然会看到明显的过冲。参考各方资料,一般接上33欧到50欧的电阻都可以接受。
3. 这里对于MII模式加以说明哪些引脚需要上拉和下拉。
MDIO需要1.5K的上拉电阻,MDC不需要上拉电阻,DP83848的LED_ACT、LED_SPEED、LED_LINK都需要2.2K的上拉电阻;
DP83848的RD-、RD+、TD-、TD+需要上拉49.9欧1%的电阻,并且还需要两个0.1uf的电容接地;
DP83848的20, 21引脚RESERVED必须要接2.2K上拉电阻,和24引脚RBIAS需要一个4.87欧1%的电阻接地,引脚18、23、37需要电容接地,这些都需要严格按照DP83848的手册来连接电路。
另外,39引脚不需要上拉电阻,如果是RMII模式,就需要2.2K的电阻,这样就选择了我们是使用的RMII模式。
其中,有个重要的信号一定要注意,这个也是我在使用RMII模式没有注意的,stm32 的ETH_RMII_REF_CLK / ETH_MII_RX_CLK 信号线PA1 没有连接,使用RMII模式的时候,PA1应该连接到时钟源上面。
最后,DP83848的7引脚,一般还是建议上拉2.2K电阻,并且,将其连接到STM32的IO引脚,因为我们一般还是需要使用一些中断来处理事件,比如,网线热插拔问题。
在硬件调试过程中,stm32的外部时钟是否起振,DP83848的25引脚应该能输出25MHz(MII)或50MHz(RMII)的信号,在RMII模式,TX_CLK应该有25MHz的信号。注意,PHY的复位信号最好不要与stm32的复位信号连接到一起,因为当PHY没有通电使用时,stm32的复位引脚一直会被拉低,导致stm32不能正常使用。
在软件调试过程中,这里以官方例程来说。首先,stm32的外部时钟频率要设置正确;然后,考虑使用哪种模式,相应开启哪种模式的宏定义;再则,如果使用MCO提供DP83848的时钟信号,需要注意stm32 的PA8引脚的初始化,如果是使用的外部时钟源,可以不用考虑MCO信号(但是不用连接PHY),在软件GPIO初始化的时候,要注意,注释PA8的初始化部分,只需要注释该引脚的初始化,引脚状态初始化不要注释,因为后面的引脚初始化都会用到。
STM32支持两种工业级标准的接口,来与外部物理层 PHY模块相连,分别是独立于介质的接口(MII)和简化的独立于接口的接口(RMII)。之前PHY芯片使用的MII模式,现在的这次调试是使用的RMII模式(参考了各方原理图,主要还是以官方开发板的MB786为主)。我还是以一个ST官方手册上的图来说说我的使用情况吧。
1. 如果我们按照这个图上来画原理图,这个肯定没有错,但是对于一般使用(我们用的都是全双工的),CRS和COL这两根线使用的不多,至于为什么,我也说的不是很清楚,了解的同学们,可以补充下。
2. 对于连接DP83848和stm32时,在电路上是否要串行电阻,串接多大的问题。借网友的回答是这样的:串接电阻这是用来做阻抗匹配,防止信号反射的。一般PCB走线控制为50欧姆,在这样接收端高阻的情况时,可以通过源端串联50欧姆来做匹配,将终端反射回来的信号吸收,防止在源端再次发生发射。至于,串接多大的电阻,由信号驱动的内阻(大约20欧)决定,与PCB走线匹配。所以这个电阻在PCB上的位置要和信号驱动端靠近。要不要做匹配就取决于信号的速度和走线长度,规则一般是走线长度大于信号波长的1/10就要匹配了,50M的时钟最好是接一下了,不然会看到明显的过冲。参考各方资料,一般接上33欧到50欧的电阻都可以接受。
3. 这里对于MII模式加以说明哪些引脚需要上拉和下拉。
MDIO需要1.5K的上拉电阻,MDC不需要上拉电阻,DP83848的LED_ACT、LED_SPEED、LED_LINK都需要2.2K的上拉电阻;
DP83848的RD-、RD+、TD-、TD+需要上拉49.9欧1%的电阻,并且还需要两个0.1uf的电容接地;
DP83848的20, 21引脚RESERVED必须要接2.2K上拉电阻,和24引脚RBIAS需要一个4.87欧1%的电阻接地,引脚18、23、37需要电容接地,这些都需要严格按照DP83848的手册来连接电路。
另外,39引脚不需要上拉电阻,如果是RMII模式,就需要2.2K的电阻,这样就选择了我们是使用的RMII模式。
其中,有个重要的信号一定要注意,这个也是我在使用RMII模式没有注意的,stm32 的ETH_RMII_REF_CLK / ETH_MII_RX_CLK 信号线PA1 没有连接,使用RMII模式的时候,PA1应该连接到时钟源上面。
最后,DP83848的7引脚,一般还是建议上拉2.2K电阻,并且,将其连接到STM32的IO引脚,因为我们一般还是需要使用一些中断来处理事件,比如,网线热插拔问题。
在硬件调试过程中,stm32的外部时钟是否起振,DP83848的25引脚应该能输出25MHz(MII)或50MHz(RMII)的信号,在RMII模式,TX_CLK应该有25MHz的信号。注意,PHY的复位信号最好不要与stm32的复位信号连接到一起,因为当PHY没有通电使用时,stm32的复位引脚一直会被拉低,导致stm32不能正常使用。
在软件调试过程中,这里以官方例程来说。首先,stm32的外部时钟频率要设置正确;然后,考虑使用哪种模式,相应开启哪种模式的宏定义;再则,如果使用MCO提供DP83848的时钟信号,需要注意stm32 的PA8引脚的初始化,如果是使用的外部时钟源,可以不用考虑MCO信号(但是不用连接PHY),在软件GPIO初始化的时候,要注意,注释PA8的初始化部分,只需要注释该引脚的初始化,引脚状态初始化不要注释,因为后面的引脚初始化都会用到。
相关文章推荐
- python关于 date的使用
- 这几天的总结
- 漫谈CSS transform动画技术
- 关于 Repository和UnitOfWork 模式的关系
- Java Servlet工作原理问答
- leetcode 4 Median of Two Sorted Arrays
- 清除浮动的6中方法
- codeforces 593 D. Happy Tree Party (LCA + 并查集)
- linux kernel内存碎片防治技术
- JQuery基础列表
- 1105 文法树
- hibernate与mybatis异同与比较(涵盖网上各个版本,清晰明了)
- 堆排序算法之Java实现
- MyBatis使用Collection查询多对多或一对多结果集bug
- iOS JPush极光推送
- 钱组合数
- codeforces round The Monster and the Squirrel 529B (数学规律)
- 疯狂HTML-01
- intellij idea下搭建android环境遇到的rendering problem问题及部分解决方式
- 删数字nyoj448