STMCU小助手
发布时间:2021-7-30 13:40
|
01 基础问题 1.1、芯片数据接口 _( N- i5 J. s* f) Z. [& H$ R ; P! ]6 z1 r: f$ W- s2 s( u- d2 p 4 A8 G6 B+ r6 u, E; Z
. [2 A: \- a3 t3 h e3 ?* \, ^( I- |! X& G; E) \+ p RTL8201E(L)是一种单芯片/单端口快速以太网物理接收器,支持MII接口,RMII接口,SNI接口。 ) `" b& g) n3 D2 U5 w. M# i / @; J2 l7 R% e3 d. F( R" U/ ?+ g' ? MII接口和RMII接口切换在8.1.1章节有讲到,如下图: ) N2 ]8 r/ s. P1 k! `2 p; T * N/ b# S: X: b, H
选择MII接口,把COL/SNI脚拉低。6 k% i" C: U4 V, K 0 e4 P7 ]9 K) M2 Y2 U5 }0 i 1 g% d4 H9 t3 l( k; F RTL8201E的框图如下 ' v2 q0 g- ~& Y! d1 h % V Y. {) q ]/ p6 ?3 F# F0 m3 i
! ]1 @* j+ @& B- D d/ K$ X5 A( A8 B$ G! Q9 u 和MCU连接的系统框图如下:' X2 t6 ^) s7 ~0 g& l + M. w2 Q+ @$ G. V; O& X9 s( S) k, ^( V
/ K9 M# [# o: f) s2 K& F* m5 \ / Y) X' W6 U1 e0 [ ①RJ45也就是网口,就是我们常见的网口,如下图:0 s+ V% k7 P* s3 b7 }# l + Z" _8 h$ s9 I) }
: ~& Y" P+ ^4 J: m/ u/ a' M9 B' Z ②magnetics,直译磁性元件,这里的通常叫法为:网络变压器。网络变压器又名网络隔离变压器、以太网变压器、网络滤波器,主要有信号传输、阻抗匹配、波形修复、信号杂波抑制和高电压隔离等作用。如下图% n* L: U; _2 Y6 Y9 G' z$ T8 } 3 K2 ^( n! `0 |2 s" a6 e
% ]( [5 s3 \5 L8 L+ Y, {4 }" l7 l c- X ③PHY芯片,中文可称之为端口物理层,PHY连接一个数据链路层的设备(MAC)到一个物理媒介,如光纤、铜缆线或网线等。也就是本文重点讲解的内容,如下图) k. D5 c; ~ C( y. t 0 V$ e$ ^/ k+ h" `, O
& Z- p& o' i- i: w/ S0 h0 v4 e ④MAC部分,主要是STM32的ETH外设部分,这方面之前的文章已经讲解过了' A: L9 V. J. Z( Y( {7 p ) a2 ?5 }- V+ x3 n
# a$ c) K# }% B! i5 ]4 w9 G 涉及到的文章有《STM32网络之SMI接口》《STM32网络之MII和RMII接口》《STM32网络电路设计》《STM32网络之MAC控制器》《STM32网络之DMA控制器》《STM32网络之中断》。: ~: |! q: u: k9 l; O% S" m2 V 1.2、芯片地址. [$ Q6 f% \. z! |! X5 i 0 Z% ]5 o' |! V. i1 c4 P: r0 I; A " z4 m1 J6 Y0 v# z/ w* [: t MCU如何选择PHY芯片的地址,参看芯片的SMI接口: Q# t, m: b/ i- E/ G4 | RTL8201的PHY地址经过两个管脚配置的) D0 [8 J$ r) w& M/ L $ m+ Q" f0 J/ `6 u, r1 F; d
在这里我们看出,这两个管脚和LED灯的管脚是复用的- t! q" L. g, f: U7 N ' I7 }3 d( ], O7 z0 ~ . B4 L' _7 P& j/ v0 P, x: J9 o
1 h) l# A1 U0 K4 U2 U. r3 T9 N* I " ^: k! @- b" G 为了减少RTL8201EL的引脚数,LED引脚和PHY地址引脚复用。额外的捆绑考虑和LED使用必须被考虑,为了避免争用。具体的来说,当LED的输出被直接用来驱动LED时,每一个输出驱动的活跃状态依赖于相应的PHAD输入在上电和复位采样的逻辑电平。例如,如图6(左侧)显示,如果一个给定的输入电阻PHYAD拉高,那么相应的输出将被配置为低电平驱动。在右边,我们可以看到,如果一个给定的输入电阻拉低PHYAD然后相应的输出将被配置为一个高电平驱动。PHY地址配置脚不应该直接和VCC或GND相连,但是一个电阻(比如5.1KΩ)拉高或拉低。如果没有LED指示灯,LED的路径组件(LED+ 510Ω)可以被删除。9 n5 @4 o0 ~) f6 \+ s) N% |# s / J5 Q4 `9 {3 o+ { r; D' ?+ P ' ~2 g* ?' h% O
1 F# u9 |( X9 x+ X% c6 E 5 [( i( o; ^; Z/ q 查看PCB得知,我们的控制卡PHY的地址是0* p" h8 n' A$ O. s9 o 2 u- Z( d+ R: u6 Z! j; b1 Z6 D; x5 K) G 1.3、时钟源的选择9 ]$ `, [; t8 s & Q, r1 m: d, V 0 r- W6 V% k( W4 e9 W* k. \9 _$ n
( i" \1 i0 b: S( Q. t! b4 h" z 1 R4 ?" D: u9 s! ?% B CKXTAL2 25MHz晶振输出(25MHzCrystal Output):该引脚提供25MHz晶振输出。当X1用一个外部的25MHz振荡器驱动时该引脚必须悬空。$ f7 u4 H. x ~+ G: O: j" k CKXTAL1 25MHz晶振输入(25MHzCrystalInput):该引脚提供25MHz晶振输入。如果使用一个25MHz的振荡器,连接X1到振荡器的输出。参见9.3节对时钟源的说明。 ; x: v& S3 R, l" K/ e
; y1 H6 W) Z7 l + }( \; Q! I \4 u# }1 o9 F" C" P' t 我们使用MCU的MCO1提供时钟,查看电路图,X2是悬空的。. J4 u$ J! Q$ z6 \2 k4 Q# p' ~. T+ \ T3 ]$ d( v' b+ t! C- t+ e8 i* [ 3 k# l- e |/ C8 n. T% i, [ 备注:2 }9 _6 e/ X5 M- | 5 B0 z Z& f4 n/ U* p1 b# P: u- O6 Q G) O: T7 u8 m7 w% ] 如果使用25MHz无源晶振,两个脚都需要连接,和MCU的无源晶振连接相同,关于晶振方面知识,可以参考《晶振原理讲解》。* ?% W5 w5 \! @2 Y: v & h; t: x1 y8 B8 I; j5 E ( M! r3 D0 \/ m1 ^0 h $ l9 ]( w; P# p) h 02 寄存器( D2 t# j. E' K; @, Q7 ?/ C ' E/ k3 W; b$ G- p3 k/ A PHY寄存器是由IEEE802.3定义的,一般通过SMI对PHY进行管理和控制,也就是读写PHY内部寄存器。PHY寄存器的地址空间为5位,可以定义0~31共32个寄存器。IEEE802.3定义了0~15这16个寄存器的功能,16~31寄存器由芯片制造商自由定义。+ ?& X# O+ B% T | ! y8 H' @0 o( M' [ 1 P& Q8 d' s- O+ a4 m 寄存器0、寄存器1和寄存器15讲解以及IEEE802.3官方文档,请看《PHY寄存器》。% C* e* \, H1 `) f: U $ K0 d9 G p+ w# b1 b 自定义寄存器16 获取PHY芯片的链接速度3 O* V$ ]5 Q2 r. P4 R1 l8 e2 l ST官方库文件的驱动在stm32f2x7_eth_conf.h最后部分' `& W6 e/ f$ E7 ^( m # a Z! @7 H- U$ c
ST官方使用的是DP83848芯片,寄存器16可以用来获取芯片的速度,这个寄存器就是DP83848芯片厂家自定义的寄存器,所以在移植STM32官方代码时注意这个问题。9 ?% l/ M- u5 X4 k9 C( H - K" G% q( x+ i% [3 S* d% r; o7 _ 我们使用的RTL8201芯片也是并不是这样的 & K* d+ M; H \+ W6 L$ e3 N6 [0 g 寄存器16 Nway设置寄存器8 |2 B4 B: I/ A$ _* p2 Y ' m' _- S! Q" X6 R$ i & p; j2 o" m' w0 K3 A
5 l% R2 E+ k2 S0 B N& J 翻译成中文如下 其他寄存器并非必须的寄存器,重要的寄存器0和寄存器1已经在《PHY寄存器》讲解过了。. Q7 n% x0 z( T/ R7 v
RTL8201资料下载:! F! p- t0 n9 |. p1 _ ^- U$ _0 D# r/ j 链接:https://pan.baidu.com/s/1hKQcp9KCyICbTiZRANTiZA 提取码:wkr1 ( @( j ^/ I) i! s. l" ? |
微信公众号
手机版