|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
) z1 J8 f) y( n
STM32芯片架构
. g, ~5 I) ?4 V% R7 x" I7 G! D STM32F103系列芯片的系统架构如下:7 s' A) M; W, H& n$ F3 d+ _
7 W9 @7 I3 N1 P% O/ h1 p
! a/ Y0 a) R* U4 q5 S( p1 V. V/ V STM32芯片基于ARM公司的Cortex-M3内核,由ST公司设计生产,内核与总线矩阵之间有I(指令)、S(系统)、D(数据)三条信号线。内核通过总线矩阵与FLASH、SRAM、外设连接。而外设包括GPIO、USART、I2C、SPI等。9 V; v5 w/ y2 t* N: i8 P9 a
STM32芯片系统结构& `- d* G. e4 i' z9 L; P
STM32F103 系列芯片(不包含互联网型)的系统结构如下:
& O- R( {9 U# b% f" ?
* p/ f; |. u% D- Z2 @3 {# J( a
* Q8 ^1 ?2 c9 e5 ~$ j从上图可以看出,在小容量、中容量和大容量产品中,主系统由以下部分构
$ q1 z; J! c6 l7 Z成:
! p% \( V4 s6 i7 |* Q) v 四个驱动单元:
3 K) r! M J# r0 a, k0 C$ E# [- w4 C1 |! [3 ], F3 h
Cortex-M3 内核 DCode 总线(D-bus)6 x8 X2 Z* Z/ N( y7 F: \
' C' [6 U& {) D2 Y7 N
Cortex-M3 内核系统总线(S-bus)
2 S5 N/ p/ d6 }4 s# ~2 U1 U5 P' {7 d% X
通用 DMA1# U7 ^8 J, ~2 G
2 E2 z9 a% _4 H9 { 通用 DMA2
% L) w9 S; |0 U, d, v* h& y. e6 g: j
四个被动单元:5 E" o4 Y2 C) v( l$ K4 }" {
1 ]. _) g+ r* k
内部 SRAM
4 r6 `- ]6 W# F0 ^& P- _( V" T8 u/ I1 `$ ?1 H
内部闪存存储器FLASH
v' H2 R0 D$ }8 y3 ^$ x) V7 F$ M2 A/ X# K$ D+ A$ K& v2 J7 m
FSMC
{8 [" k2 ]( z8 x/ [9 t$ l7 E0 u6 K1 s
AHB 到 APB 的桥(AHB2APBx),它连接所有的 APB 设备
! a, E: S& S! m* q/ C- R" u1 t8 y/ M5 E$ B! E4 N% c( i
这些都是通过一个多级的 AHB 总线构架相互连接的。下面我们看看它们各自的功能:% s, C3 O0 `. G" u! j
# L" C* U$ p n- s+ g* e$ d
ICode 总线) l6 B5 j& q9 ~6 T& E1 n; f7 H0 l
( V% `0 g0 R3 H; y/ |
该总线将 Cortex-M3 内核的指令总线与闪存指令接口相连接。指令预取在此
' \% i2 B5 p# _' _! x总线上完成。8 R7 w2 j( V& p/ U
" E5 k* Y5 {+ u% p
DCode 总线
% ^; b- E* v! h' l7 z
5 N3 W/ t* t' \5 h4 F1 R- G: O6 w 该总线将 Cortex-M3 内核的 DCode 总线与闪存存储器的数据接口相连接(常量加载和调试访问)。6 S3 k6 u0 \& B) F$ y1 ]
2 N& z; d3 Q- _% @4 Q 系统总线7 c; F4 y0 @' }8 e1 g% |1 J1 F$ T
# ?# ^ h- o% Z' O) \0 A: X 此总线连接 Cortex-M3 内核的系统总线(外设总线)到总线矩阵, 总线矩阵协调内核和 DMA 间的访问。
+ i. N. h6 q0 O' W7 p! m8 X3 e2 `
DMA 总线
) @* d2 @8 N- _* w' N
" I3 k% m2 @' n+ h$ O) p- R0 |7 t 此总线将DMA的AHB主控接口与总线矩阵相联, 总线矩阵协调着CPU的DCode和 DMA 到 SRAM、闪存和外设的访问。
$ A+ O% Z+ ~; G$ a& L
4 c( p) _" ^' f 总线矩阵- V+ ^" ]2 l9 F
5 j5 e- j" q5 B( H, ? 总线矩阵协调内核系统总线和 DMA 主控总线之间的访问仲裁, 仲裁利用轮换算法。在互联型产品中,总线矩阵包含 5 个驱动部件(CPU 的 DCode、系统总线、以太网 DMA、 DMA1 总线和 DMA2 总线)和 3 个从部件(闪存存储器接口(FLITF)、SRAM 和 AHB2APB 桥)。AHB 外设通过总线矩阵与系统总线相连,允许 DMA访问。* _# F8 l1 q( U# }& Y3 O
4 K4 D$ m& m u9 F0 G AHB/APB桥(APB)$ i6 i/ j: \- e& g, c
* u( O: I, X" O z2 X0 J
两个 AHB/APB 桥在 AHB 和 2 个 APB 总线间提供同步连接。APB1 操作速度限于 36MHz, APB2 操作于全速(最高 72MHz)。有关连接到每个桥的不同外设的地址映射请参考《STM32F1xx 中文参考手册》存储器映像章节。在每一次复位以后,所有除 SRAM 和 FLITF 以外的外设都被关闭,在使用一个外设之前,必须设置寄存器 RCC_AHBENR 来打开该外设的时钟。& x# S( j' ]9 t
STM32F1 的时钟系统相对复杂,在后续文章中再介绍。; j: S8 S/ B8 `5 P
STM32学习进阶路径
/ U) h9 i4 v- ?2 [
' }1 B# {" P- \. e 基本外设:- x$ q0 P/ N& C9 I/ M
4 t7 a5 r1 A' s. x) N GPIO 输入输出,外部中断,定时器,串口。理解了这四个外设,基本就入门一款mcu了。
( K. Y* ^5 c" [) `5 n6 u6 v) m3 p# Z+ l7 C- S; g* u: ~
基本外设接口:
; G$ {; A3 U+ v* \0 T' U4 X# c- K% |. N. ^3 R) I
SPI,IIC,WDG, FSMC,ADC/DAC,SDIO 等。这些外设接口功能原理对每个芯片几乎都是一样。对芯片而言就是多和少而已。9 `8 @- l, M: C. E$ }7 I3 x
) J0 [8 n. H; v7 v, a4 e
高级功能:
5 S2 S: |6 `1 P' X6 {' i: }$ J3 _% u/ a- x3 @; U
UCOS,fatfs,EMWIN 等,以及一些应用。, B5 V j& H. `8 v: p+ ?/ w
另外值得一提的是,C 语言是嵌入式开发的基础中的基础,相关文章:C语言基础知识点汇总。如果 C 语言不过关,很大程度限制嵌入式学习的进度与深度。在这里推荐入门之后看一下关于c指针的书《C与指针》《C 指针编程之道》。学习嵌入式开发要多动手编程、多调试。 |
|