STMCU小助手
发布时间:2021-7-30 13:40
|
01 基础问题+ _0 o! N: E* y/ ?& p8 |9 } 8 N4 e7 ^+ Z# V 1.1、芯片数据接口2 \8 R( v/ ^6 u- `* I" _ 5 x- Y+ s9 s% |7 q
, `8 c, H* Z' I( H RTL8201E(L)是一种单芯片/单端口快速以太网物理接收器,支持MII接口,RMII接口,SNI接口。 7 \6 s* `; w. G4 U1 a MII接口和RMII接口切换在8.1.1章节有讲到,如下图:* X9 a# x$ M0 d6 `! Y6 V ; A# o$ g1 W5 h; D: a) t4 n
' u$ g; W' b$ H: k6 q7 k" {2 z9 ^ 选择MII接口,把COL/SNI脚拉低。0 \$ W6 R' H/ K" `5 A' m' B5 O3 L + @; A: t/ K* M& t RTL8201E的框图如下) D3 K8 v5 ?' O$ j$ V : l4 m: U( e8 Z+ Y$ G$ ]. h& i3 W - |4 t. [8 q2 ?. u. @
6 f' y& s( Q! D! M3 G 和MCU连接的系统框图如下: ; N( G/ P$ r5 @* N( M1 q% ? , D' P. c3 H3 H7 Z6 Z! n
; k2 @1 F0 G, V, q- j } ①RJ45也就是网口,就是我们常见的网口,如下图:0 g7 H& q: ]5 U; A1 Y: [ X
②magnetics,直译磁性元件,这里的通常叫法为:网络变压器。网络变压器又名网络隔离变压器、以太网变压器、网络滤波器,主要有信号传输、阻抗匹配、波形修复、信号杂波抑制和高电压隔离等作用。如下图
③PHY芯片,中文可称之为端口物理层,PHY连接一个数据链路层的设备(MAC)到一个物理媒介,如光纤、铜缆线或网线等。也就是本文重点讲解的内容,如下图 + V# p! {: n1 M/ n4 H, K$ R
④MAC部分,主要是STM32的ETH外设部分,这方面之前的文章已经讲解过了 : v9 N% {# Q* Z+ r' u
; q; W$ G% M$ `. p+ O8 j5 }' a 8 a$ b' J5 y, x g* V% G% N0 a 涉及到的文章有《STM32网络之SMI接口》《STM32网络之MII和RMII接口》《STM32网络电路设计》《STM32网络之MAC控制器》《STM32网络之DMA控制器》《STM32网络之中断》。# h6 W' N. ~; ^( w& O" n 1.2、芯片地址" y+ A2 p- R: F& d3 u 7 U% O; U; s6 I# i" C7 U9 ]# |! T! G6 y MCU如何选择PHY芯片的地址,参看芯片的SMI接口' \3 N. Q# K0 D+ m6 ]* m$ c RTL8201的PHY地址经过两个管脚配置的$ \& |- D% m6 ^/ C q7 O8 x" ?% Q }/ p7 e; ^3 w
9 S) Y# k: W0 U + @; d" e2 [0 z. [0 { 在这里我们看出,这两个管脚和LED灯的管脚是复用的
! ~: `: _" l' T5 m8 o7 R3 Y8 h9 @ ' c% W( _; W* P* _& x+ E; o, Q0 x 为了减少RTL8201EL的引脚数,LED引脚和PHY地址引脚复用。额外的捆绑考虑和LED使用必须被考虑,为了避免争用。具体的来说,当LED的输出被直接用来驱动LED时,每一个输出驱动的活跃状态依赖于相应的PHAD输入在上电和复位采样的逻辑电平。例如,如图6(左侧)显示,如果一个给定的输入电阻PHYAD拉高,那么相应的输出将被配置为低电平驱动。在右边,我们可以看到,如果一个给定的输入电阻拉低PHYAD然后相应的输出将被配置为一个高电平驱动。PHY地址配置脚不应该直接和VCC或GND相连,但是一个电阻(比如5.1KΩ)拉高或拉低。如果没有LED指示灯,LED的路径组件(LED+ 510Ω)可以被删除。 i) Q' q! t! a5 J* Z q5 h
- M0 p! Z5 w2 u8 ^7 n 查看PCB得知,我们的控制卡PHY的地址是0 : W( w$ t! D* Q4 m 1.3、时钟源的选择0 w/ j! I+ B4 b. o9 w$ v5 @ $ a8 u, e b8 T, w; \# j# d$ X
CKXTAL2 25MHz晶振输出(25MHzCrystal Output):该引脚提供25MHz晶振输出。当X1用一个外部的25MHz振荡器驱动时该引脚必须悬空。9 \6 _0 w& z! _/ S0 ? CKXTAL1 25MHz晶振输入(25MHzCrystalInput):该引脚提供25MHz晶振输入。如果使用一个25MHz的振荡器,连接X1到振荡器的输出。参见9.3节对时钟源的说明。 & H7 `5 n' p) h6 f0 }; g + G7 A; B" _1 m: \! V
- T, D, n- ]4 z 我们使用MCU的MCO1提供时钟,查看电路图,X2是悬空的。 $ }/ t. B* }: E' E, [, M' W 备注: / U4 F/ V* F. n2 g5 ^ 如果使用25MHz无源晶振,两个脚都需要连接,和MCU的无源晶振连接相同,关于晶振方面知识,可以参考《晶振原理讲解》。0 O; n: @7 l" X; T, F: f # e6 d' v: k4 k8 h* P 02 寄存器 - U. C% z$ z# ` K2 O ) Q7 B+ |& k/ j. K: \# A1 w PHY寄存器是由IEEE802.3定义的,一般通过SMI对PHY进行管理和控制,也就是读写PHY内部寄存器。PHY寄存器的地址空间为5位,可以定义0~31共32个寄存器。IEEE802.3定义了0~15这16个寄存器的功能,16~31寄存器由芯片制造商自由定义。 . {3 d9 W& ~7 @% n3 F4 S & H6 r) q- }3 l O, l" |; e. F0 z 寄存器0、寄存器1和寄存器15讲解以及IEEE802.3官方文档,请看《PHY寄存器》。( ]# w9 P" Z; M4 v& S/ z* b 自定义寄存器16$ s% f, F- P5 R4 { 获取PHY芯片的链接速度/ [. x2 X6 W3 C ST官方库文件的驱动在stm32f2x7_eth_conf.h最后部分+ G6 a8 x/ @. O
& V# P7 K$ M- f" D/ r \3 M) ^ ST官方使用的是DP83848芯片,寄存器16可以用来获取芯片的速度,这个寄存器就是DP83848芯片厂家自定义的寄存器,所以在移植STM32官方代码时注意这个问题。 ) E( B/ X) N) Q; S' W # a. t# O5 T0 a- { 我们使用的RTL8201芯片也是并不是这样的 ' k7 m7 o' W( G" K4 _ 寄存器16 Nway设置寄存器 7 `+ r8 o/ @* ^
3 h: I$ l- z& ]! x: |) ^ 翻译成中文如下) }2 s% m/ z! L5 g+ i1 e 其他寄存器并非必须的寄存器,重要的寄存器0和寄存器1已经在《PHY寄存器》讲解过了。
RTL8201资料下载:- v* W, T8 |- v; r% `: E: D : l8 @) P5 N4 g+ B3 [. k 链接:https://pan.baidu.com/s/1hKQcp9KCyICbTiZRANTiZA 提取码:wkr1( x" ]; C( i9 t |2 w 3 B- S# P: Z5 i- [5 j, w |
微信公众号
手机版