01 基础问题 , F. [$ I1 K0 _% l$ C 1.1、芯片数据接口 7 I, S. S9 p" k6 ?& G: \$ d) s * m7 x- C7 z- t4 M& d( Y8 x * i2 r7 R) F$ g3 \& w: a2 d5 t RTL8201E(L)是一种单芯片/单端口快速以太网物理接收器,支持MII接口,RMII接口,SNI接口。 , q2 E3 P" ~0 W- b6 d6 r( R0 x MII接口和RMII接口切换在8.1.1章节有讲到,如下图:2 Q3 M% \+ m. W) t- @( z: C ; H# ?3 }& O& ]+ n; y ) O6 }+ c; j) B, @+ j+ Y+ M 选择MII接口,把COL/SNI脚拉低。- R# }! D5 V& E7 \0 n - U- R) k; k3 q4 E) T S2 y O RTL8201E的框图如下 7 W3 F8 N5 n. |( R7 j# s 4 n9 m5 M4 S y% t3 e/ E9 f4 z 9 f/ I* E- L( b) H m5 ]% } 和MCU连接的系统框图如下: 7 l0 k3 Z8 P% R/ D' ]4 [% C 9 j$ a8 F) M& _, b0 P" Q3 K 6 i- w2 @% d# F0 U( v, v- L ①RJ45也就是网口,就是我们常见的网口,如下图:' W# D, E1 E( `! c7 _; e" E! V, t* i ( i* v' q7 J& ]& g & v7 E( q2 J x# k2 T$ j; B E* L ②magnetics,直译磁性元件,这里的通常叫法为:网络变压器。网络变压器又名网络隔离变压器、以太网变压器、网络滤波器,主要有信号传输、阻抗匹配、波形修复、信号杂波抑制和高电压隔离等作用。如下图 + _1 M C, _ L ?# T- @, o ③PHY芯片,中文可称之为端口物理层,PHY连接一个数据链路层的设备(MAC)到一个物理媒介,如光纤、铜缆线或网线等。也就是本文重点讲解的内容,如下图+ \, f& R# B/ T" X 9 `* `9 W$ v: a8 }- M $ c w0 s1 X/ U" H. u0 ?6 |& C ④MAC部分,主要是STM32的ETH外设部分,这方面之前的文章已经讲解过了 % W, F; y" Z: `7 W2 @9 w 6 a! E* p' A @# l ) I9 ^ e# ^! U5 l5 ^! } 涉及到的文章有《STM32网络之SMI接口》《STM32网络之MII和RMII接口》《STM32网络电路设计》《STM32网络之MAC控制器》《STM32网络之DMA控制器》《STM32网络之中断》。( T( _. W: Q) U$ n, M8 j% r ( V8 R3 [ Q4 R' L1 z 1.2、芯片地址7 n t U3 H5 T# \2 r; b F: w( O 7 F- B" H- t, C d3 n( b {; y MCU如何选择PHY芯片的地址,参看芯片的SMI接口8 J5 Y6 W: J f; m V- j $ K( j2 k0 n# ~* s% a# a _9 I" I: ] RTL8201的PHY地址经过两个管脚配置的) I# o1 C, ~9 J 3 s+ l7 e0 P- v; o, m - e: f8 W; L) v: i$ `9 s 在这里我们看出,这两个管脚和LED灯的管脚是复用的, R' Y _3 ~* x' K0 ~) k+ { 9 u, S- k! d8 {* c 为了减少RTL8201EL的引脚数,LED引脚和PHY地址引脚复用。额外的捆绑考虑和LED使用必须被考虑,为了避免争用。具体的来说,当LED的输出被直接用来驱动LED时,每一个输出驱动的活跃状态依赖于相应的PHAD输入在上电和复位采样的逻辑电平。例如,如图6(左侧)显示,如果一个给定的输入电阻PHYAD拉高,那么相应的输出将被配置为低电平驱动。在右边,我们可以看到,如果一个给定的输入电阻拉低PHYAD然后相应的输出将被配置为一个高电平驱动。PHY地址配置脚不应该直接和VCC或GND相连,但是一个电阻(比如5.1KΩ)拉高或拉低。如果没有LED指示灯,LED的路径组件(LED+ 510Ω)可以被删除。- z0 E$ U% W4 d7 `) w2 [ & T: L* P( y' A5 F) H4 q& e 7 }6 k7 b2 _* d( O% d( ]- q! E1 k3 v $ q- Q! I' p( ~; f" v n% R 查看PCB得知,我们的控制卡PHY的地址是0 ) v+ \; W8 V: C/ A4 I- G7 L/ W 1.3、时钟源的选择7 l5 {# ~/ u" Y( h2 s" ^! G3 n6 n/ ]# w % F$ V; b7 V/ u, I" v1 P ; T( W+ E' C: i8 W3 G5 y) Y4 F CKXTAL2 25MHz晶振输出(25MHzCrystal Output):该引脚提供25MHz晶振输出。当X1用一个外部的25MHz振荡器驱动时该引脚必须悬空。 " R' M# x- w# f1 y: d q7 ? CKXTAL1 25MHz晶振输入(25MHzCrystalInput):该引脚提供25MHz晶振输入。如果使用一个25MHz的振荡器,连接X1到振荡器的输出。参见9.3节对时钟源的说明。 6 `8 e$ ^% H5 Z* v & t4 R( s( A4 ^; s; x % W$ q) o8 v8 L& K+ [ 我们使用MCU的MCO1提供时钟,查看电路图,X2是悬空的。 6 Z) M6 {1 J+ v" F; n u ) X1 i% m6 _, ~3 H# E 备注:8 H, b5 ]6 d x 1 N; K" e3 A4 U/ L" ]9 r3 O 如果使用25MHz无源晶振,两个脚都需要连接,和MCU的无源晶振连接相同,关于晶振方面知识,可以参考《晶振原理讲解》。 - ]- R8 V8 z# R5 U" l + p2 e7 `. a$ p$ P% J 02 寄存器$ e2 X: Q- i4 R) E( i 9 Q$ _! n# x! j/ h5 Y) V PHY寄存器是由IEEE802.3定义的,一般通过SMI对PHY进行管理和控制,也就是读写PHY内部寄存器。PHY寄存器的地址空间为5位,可以定义0~31共32个寄存器。IEEE802.3定义了0~15这16个寄存器的功能,16~31寄存器由芯片制造商自由定义。: w9 ]9 O6 Q7 B4 I& d D1 K6 V! J$ q$ Y* s ] 寄存器0、寄存器1和寄存器15讲解以及IEEE802.3官方文档,请看《PHY寄存器》。 a7 l/ N- ` I7 w # W; o$ y4 A G 自定义寄存器16 获取PHY芯片的链接速度 ST官方库文件的驱动在stm32f2x7_eth_conf.h最后部分 " G8 O/ [$ Q- W- } ) Q8 C" X" A8 W. q$ n8 N& Q( g( c 6 ~. l% Z) k- h$ w. v ST官方使用的是DP83848芯片,寄存器16可以用来获取芯片的速度,这个寄存器就是DP83848芯片厂家自定义的寄存器,所以在移植STM32官方代码时注意这个问题。0 x" i" X8 m) H+ ]7 @ , n0 K' [) g: T) G* x 我们使用的RTL8201芯片也是并不是这样的 1 T5 N P$ j% w' m! p0 e- f . z; O1 n$ \8 x+ e 寄存器16 Nway设置寄存器' i- j8 Y% h9 o6 g" R) p 2 `! E: M5 ]: `% y2 X8 \ ! e, n& f& O: S' K4 d 6 _- \4 E) G0 |. l/ C6 [ 翻译成中文如下 其他寄存器并非必须的寄存器,重要的寄存器0和寄存器1已经在《PHY寄存器》讲解过了。7 f: _7 Q/ ?" O0 X RTL8201资料下载: , A# u: h" p# B! u, ~ + z$ }" m- R; p" Q. c9 l( r 链接:https://pan.baidu.com/s/1hKQcp9KCyICbTiZRANTiZA / {: y. l) _6 ?# V9 {( J+ W * X4 @9 Y( ^+ R 提取码:wkr1" p& r/ m; O& O. u& \& R% G " p9 P- o" W6 ~* p |
stm32f207/stm32f407擦除内部flash讲解
【经验分享】STM32F2 中 DMA 的 FIFO 模式
STM32F2x7 通过以太网实现在应用中编程 (IAP)
STM32F2xx 微控制器中的 EEPROM 模拟
在 STM32 F0、 F2、 F3、 F4 和 L1 系列MCU 中使用硬件实时时钟 (RTC)
STM32F1xx、STM32F2xx、STM32F4xx、STM32L1xx、STM32F30/31/37/38x 定时器概览
使用 STM32F2xx 和 STM32F4xx 微控制器时如何提高 ADC 测量精度
使用 STM32F2 和 STM32F4 DMA 控制器
STM32F2x7 通过以太网实现在应用中编程 (IAP)
STM32F2xx 微控制器中的 EEPROM 模拟