|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
) l- |0 }" L" |, ySTM32芯片架构! E6 k( _* V$ c* j6 X9 B( r# G1 I- j
STM32F103系列芯片的系统架构如下:0 e( o; g0 {* B$ T
# D3 w! N/ ^9 k0 \. K: o B7 ~# o1 h
STM32芯片基于ARM公司的Cortex-M3内核,由ST公司设计生产,内核与总线矩阵之间有I(指令)、S(系统)、D(数据)三条信号线。内核通过总线矩阵与FLASH、SRAM、外设连接。而外设包括GPIO、USART、I2C、SPI等。
/ Y; C' S! \% uSTM32芯片系统结构
4 C7 ^) b5 u7 D- [0 [0 pSTM32F103 系列芯片(不包含互联网型)的系统结构如下:
8 V1 m8 ]% f# w. Q; i, D
" n% W$ f- a( w4 `! v- c/ m6 i9 j8 Q) p
从上图可以看出,在小容量、中容量和大容量产品中,主系统由以下部分构
; V' M- U) ?0 c" a$ o成:
! j2 o' N1 R; x2 w 四个驱动单元:2 q1 g: U5 \/ }7 _* w: V8 I. F
/ V- ]3 N5 T* W/ e# \6 |2 w
Cortex-M3 内核 DCode 总线(D-bus)
' E* F2 c: u1 T9 b0 H& ~( j" h( I$ E- V2 R% _
Cortex-M3 内核系统总线(S-bus)4 ]2 `6 f; p% L
: R2 @, O {' J4 A5 Y4 ^4 D 通用 DMA1
' U# U: n6 ~5 y; r9 R$ y. B w' n: P
通用 DMA2- C& H% \0 T0 o/ m# [2 K
9 X4 J" }; [3 `7 x5 ` 四个被动单元:5 l+ n. |7 U5 J9 z I7 P
1 ^, n( F% _; Z s 内部 SRAM
1 `: D. ]8 {6 f! w- q& f; S
0 J8 q2 V! D8 Z3 Y" c1 Q/ |6 Z2 g 内部闪存存储器FLASH
4 J- V# _# H7 v" ~* h) d' d. n" @# W4 m# N7 y# s- x
FSMC
9 G# o2 B$ g' k# n2 z1 ?/ O- ^8 R' Q0 T/ {1 R/ R4 n, ?
AHB 到 APB 的桥(AHB2APBx),它连接所有的 APB 设备
+ M) W4 Q: r4 f' b5 }% P, C6 B7 K: S2 v9 \1 X( `
这些都是通过一个多级的 AHB 总线构架相互连接的。下面我们看看它们各自的功能:
+ }/ `* M3 F0 M" X& n' R1 G2 ?1 F8 g
3 y- ]$ ]% p+ J2 V# { ICode 总线3 d0 }7 E5 U" R
7 ^' o& i9 ^, N- T |& a
该总线将 Cortex-M3 内核的指令总线与闪存指令接口相连接。指令预取在此" p4 S' \1 Y' w7 H- _5 c
总线上完成。
7 A6 u! c/ p0 S- @' `( r, K( [4 Y' Q: f2 d( q" K' f3 a
DCode 总线( I6 p0 ^3 j ^* {' G
, a" a( v5 X5 Y/ s" y' H" F4 Z
该总线将 Cortex-M3 内核的 DCode 总线与闪存存储器的数据接口相连接(常量加载和调试访问)。) X! Y$ z4 u j( N. f- E
3 F3 j @: k# Q4 x- G( e 系统总线
5 m1 y: c% ~, f' h
9 D# B, H* q! I0 Q! l9 N# [# s0 a 此总线连接 Cortex-M3 内核的系统总线(外设总线)到总线矩阵, 总线矩阵协调内核和 DMA 间的访问。
1 L6 z) @: F, R- _( Y! M# k# G- ^3 ~
% U& k e+ d) B; w& t DMA 总线. `) s/ s$ G/ Y. u
$ b2 W& T; D& `/ f6 Y" f5 K8 O* D
此总线将DMA的AHB主控接口与总线矩阵相联, 总线矩阵协调着CPU的DCode和 DMA 到 SRAM、闪存和外设的访问。4 S2 b4 U2 m( @+ s
( e# W2 A+ I3 s 总线矩阵" w) B! o4 {3 I4 `' M9 Z
m: L- C6 U0 i( S' u& z+ i9 K
总线矩阵协调内核系统总线和 DMA 主控总线之间的访问仲裁, 仲裁利用轮换算法。在互联型产品中,总线矩阵包含 5 个驱动部件(CPU 的 DCode、系统总线、以太网 DMA、 DMA1 总线和 DMA2 总线)和 3 个从部件(闪存存储器接口(FLITF)、SRAM 和 AHB2APB 桥)。AHB 外设通过总线矩阵与系统总线相连,允许 DMA访问。( [% E" l0 J: z# ~! K7 W
6 @$ D2 }& n# p! a. | AHB/APB桥(APB)( G( i% n) z, Q) t
) m+ y1 j$ O. D* B2 W- X. I
两个 AHB/APB 桥在 AHB 和 2 个 APB 总线间提供同步连接。APB1 操作速度限于 36MHz, APB2 操作于全速(最高 72MHz)。有关连接到每个桥的不同外设的地址映射请参考《STM32F1xx 中文参考手册》存储器映像章节。在每一次复位以后,所有除 SRAM 和 FLITF 以外的外设都被关闭,在使用一个外设之前,必须设置寄存器 RCC_AHBENR 来打开该外设的时钟。
1 Y7 x6 V# f8 |1 w STM32F1 的时钟系统相对复杂,在后续文章中再介绍。& {1 N) A# P: B" X& _5 U& z
STM32学习进阶路径# d9 H4 c# D" d- I' x! z$ A+ s1 p5 h! }9 E
0 M' a" f5 s' K- c. M) ~
基本外设:
5 M M% X2 g, R2 q
$ b) p( p$ H5 E/ C4 A% l1 b$ v GPIO 输入输出,外部中断,定时器,串口。理解了这四个外设,基本就入门一款mcu了。7 v! ]7 I" }" j: C* m
5 V) j9 j. Q: {+ C9 G* n3 c }
基本外设接口:9 m: g, a2 u: J- z
# K! V2 v# M, U9 S' A
SPI,IIC,WDG, FSMC,ADC/DAC,SDIO 等。这些外设接口功能原理对每个芯片几乎都是一样。对芯片而言就是多和少而已。
5 C$ G4 }4 ^ G7 }& ^+ \+ i
( N! y8 T# l$ z. n0 A 高级功能:1 w4 B4 ?& \: k. K- E( T7 t
+ n# F; D9 L4 J% r4 ?: B UCOS,fatfs,EMWIN 等,以及一些应用。4 O. E' F% X s' J+ u8 s& Q
另外值得一提的是,C 语言是嵌入式开发的基础中的基础,相关文章:C语言基础知识点汇总。如果 C 语言不过关,很大程度限制嵌入式学习的进度与深度。在这里推荐入门之后看一下关于c指针的书《C与指针》《C 指针编程之道》。学习嵌入式开发要多动手编程、多调试。 |
|