STMCU小助手
发布时间:2021-7-30 13:40
|
01 基础问题1 j8 |, L% I- p4 f! `, J # {1 N- W' S4 W. K/ I4 Q6 B ( U' D% X7 x' V, L# ^! x+ y4 p9 G 1.1、芯片数据接口+ i! d) A$ B9 c$ {2 r 6 j6 ]- }; q3 {3 Q2 W% p4 e0 Z
$ [ q' h. E5 O, S RTL8201E(L)是一种单芯片/单端口快速以太网物理接收器,支持MII接口,RMII接口,SNI接口。 MII接口和RMII接口切换在8.1.1章节有讲到,如下图: ) Y1 |5 K+ `* C( i
. O( U3 Y q+ L; }( d, k 选择MII接口,把COL/SNI脚拉低。3 e* \6 F& N G7 S& } 1 t9 z* ^ G, \ RTL8201E的框图如下 : P; x7 Q4 ?+ k- Q. i
- P( i {1 h5 J# B4 ?1 u 和MCU连接的系统框图如下:
' k H" T3 D8 {1 K 8 a0 N+ H' w2 G4 d5 a: b ①RJ45也就是网口,就是我们常见的网口,如下图:+ y! _" e7 X5 {* |( T) h9 Z! Y . W- X6 {+ `# k; a
0 x3 Q- D0 j) ?' D6 n ②magnetics,直译磁性元件,这里的通常叫法为:网络变压器。网络变压器又名网络隔离变压器、以太网变压器、网络滤波器,主要有信号传输、阻抗匹配、波形修复、信号杂波抑制和高电压隔离等作用。如下图4 S _3 U* Q0 j4 j% C; [ a6 s# s1 x) O. l4 s
4 {: ?7 p6 M R. @& R+ O# B ③PHY芯片,中文可称之为端口物理层,PHY连接一个数据链路层的设备(MAC)到一个物理媒介,如光纤、铜缆线或网线等。也就是本文重点讲解的内容,如下图 9 K) z5 q9 E2 P( H0 ^ " w8 P( Y N) u8 c1 |/ ?
( }# G& G, X( o# s1 l: }! ? ` : p7 W0 |& u+ b7 ^& |3 Q$ L3 ] ④MAC部分,主要是STM32的ETH外设部分,这方面之前的文章已经讲解过了 2 V$ V5 D+ M& I+ h |; [) @0 M% l$ g
* f! z5 x, y$ P' z H $ d# u* S# v; | 涉及到的文章有《STM32网络之SMI接口》《STM32网络之MII和RMII接口》《STM32网络电路设计》《STM32网络之MAC控制器》《STM32网络之DMA控制器》《STM32网络之中断》。# l8 k1 T; X; Q# e1 ~- k h4 i k9 [4 k " @# K. z7 T; A. Z2 |/ h, b& z 5 i1 F( ]) y0 z; ` 1.2、芯片地址 MCU如何选择PHY芯片的地址,参看芯片的SMI接口9 R+ p( w. C+ @2 z# ^ 2 b/ T! [: ?& K( X3 b' w$ A RTL8201的PHY地址经过两个管脚配置的0 S# Q; A! V1 N8 b% }* d ( z# ~2 i2 |8 k' F. W, X
% }: T, U! C0 f. J3 g u 在这里我们看出,这两个管脚和LED灯的管脚是复用的+ }# _$ C+ Y) W+ h* b& d & N* a" L d K5 S( Q- i/ V 1 s3 d# A+ E m
为了减少RTL8201EL的引脚数,LED引脚和PHY地址引脚复用。额外的捆绑考虑和LED使用必须被考虑,为了避免争用。具体的来说,当LED的输出被直接用来驱动LED时,每一个输出驱动的活跃状态依赖于相应的PHAD输入在上电和复位采样的逻辑电平。例如,如图6(左侧)显示,如果一个给定的输入电阻PHYAD拉高,那么相应的输出将被配置为低电平驱动。在右边,我们可以看到,如果一个给定的输入电阻拉低PHYAD然后相应的输出将被配置为一个高电平驱动。PHY地址配置脚不应该直接和VCC或GND相连,但是一个电阻(比如5.1KΩ)拉高或拉低。如果没有LED指示灯,LED的路径组件(LED+ 510Ω)可以被删除。 C( i1 X* p& S( r& R, j; V 6 Y* [; w: G" v2 r% N$ m% v5 y
查看PCB得知,我们的控制卡PHY的地址是0 5 f. I8 z1 q8 k& q6 ]) r! }' z1 h- a 1.3、时钟源的选择 , ]2 o* ~* E5 |
, W0 D! L- r2 L2 G CKXTAL2 25MHz晶振输出(25MHzCrystal Output):该引脚提供25MHz晶振输出。当X1用一个外部的25MHz振荡器驱动时该引脚必须悬空。 q$ z# i' p" h9 {' \ $ W& a- V9 g8 J8 g6 @) R CKXTAL1 25MHz晶振输入(25MHzCrystalInput):该引脚提供25MHz晶振输入。如果使用一个25MHz的振荡器,连接X1到振荡器的输出。参见9.3节对时钟源的说明。 3 V# f$ g1 f! N- a! l9 R
% V7 {, \* Y% C& R 7 Z9 m; P2 O# ]5 R- K6 Q6 m6 O 我们使用MCU的MCO1提供时钟,查看电路图,X2是悬空的。 % t3 Z V$ o n( M. n5 E 备注: X4 n: [ W: F& K h8 X' } 如果使用25MHz无源晶振,两个脚都需要连接,和MCU的无源晶振连接相同,关于晶振方面知识,可以参考《晶振原理讲解》。 ; i0 g) O9 Y" y7 n s " @4 @, T: H' k5 b7 W; u ; J5 Y: Z+ O8 A+ V 02 寄存器0 G4 E4 ~4 S1 {+ J% q- j% _ / J; p( k$ d* ?6 O6 G. S1 i( e- F# P$ k PHY寄存器是由IEEE802.3定义的,一般通过SMI对PHY进行管理和控制,也就是读写PHY内部寄存器。PHY寄存器的地址空间为5位,可以定义0~31共32个寄存器。IEEE802.3定义了0~15这16个寄存器的功能,16~31寄存器由芯片制造商自由定义。 * Z3 b+ \' J" t/ k9 j3 B 7 V+ m1 G T; D. n 寄存器0、寄存器1和寄存器15讲解以及IEEE802.3官方文档,请看《PHY寄存器》。 , l" b( h. C6 C# m. ? 自定义寄存器168 L5 q' w7 g, f( q* g8 M* S 获取PHY芯片的链接速度; P5 d$ Q1 ^+ t5 Z7 y* i ST官方库文件的驱动在stm32f2x7_eth_conf.h最后部分
ST官方使用的是DP83848芯片,寄存器16可以用来获取芯片的速度,这个寄存器就是DP83848芯片厂家自定义的寄存器,所以在移植STM32官方代码时注意这个问题。 . o s* N* S; ^1 L# ^ 我们使用的RTL8201芯片也是并不是这样的 ) y E3 r9 e S 寄存器16 Nway设置寄存器7 Q4 l F7 q; L& X: Z 8 d% T1 ~% u9 Z
翻译成中文如下! ^( R! R* J$ U7 U* | d% B0 b# n* I 其他寄存器并非必须的寄存器,重要的寄存器0和寄存器1已经在《PHY寄存器》讲解过了。. o9 B' L$ S/ ~1 E! |' @. w; t
RTL8201资料下载:1 `' J( s8 w/ N+ ]* o& f 3 W: R( K& ~9 y% S6 n' c ; L% ~3 w4 L7 J5 E 链接:https://pan.baidu.com/s/1hKQcp9KCyICbTiZRANTiZA |9 D1 m ^; I! Y) `0 N: G7 w ' P; Q7 c6 T) p/ @$ \6 ` : C: b1 h1 ^1 K, F8 Q+ D 提取码:wkr1- Y2 k. }# w! Z5 w3 |# ^, L + C7 q7 r% W4 ^2 A6 M3 y8 o* j5 G |
微信公众号
手机版