|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
8 X3 F0 Z6 I: V& b) Q6 _( g% YSTM32芯片架构
* G ^0 S- i# X* P STM32F103系列芯片的系统架构如下:3 ?# n+ p8 m$ L7 ]; k$ U
3 j" } B' U7 m- n k+ R$ K4 D' k3 y5 V. f$ }+ _8 A9 d" ]: G0 D
STM32芯片基于ARM公司的Cortex-M3内核,由ST公司设计生产,内核与总线矩阵之间有I(指令)、S(系统)、D(数据)三条信号线。内核通过总线矩阵与FLASH、SRAM、外设连接。而外设包括GPIO、USART、I2C、SPI等。
/ H' u: ~) |$ z5 F8 c3 r/ jSTM32芯片系统结构; W6 }/ }9 ^& M3 C, ^2 c d' T# n
STM32F103 系列芯片(不包含互联网型)的系统结构如下:
2 W9 I$ F9 R7 `* @" c
9 @4 \3 M) ^+ l, x m' Q% T
( a9 q) a4 l) R4 i! A9 q4 B3 ], n8 z n
从上图可以看出,在小容量、中容量和大容量产品中,主系统由以下部分构
( P% ^: t2 S! i2 G( l5 g$ X) ?成:
1 [- u! Z1 n! m0 l. R 四个驱动单元:6 {5 q* ?4 N8 m6 O; ?/ U' |! P; `! k
1 q7 G+ k# r5 C) t; N( X. j Cortex-M3 内核 DCode 总线(D-bus)# c/ t, ]) l9 y4 y, M( u9 V* Y
# O% [- P! n; r, B% W
Cortex-M3 内核系统总线(S-bus)( ~% n# z- N: W/ v
# T4 x2 R8 r5 h6 v: { 通用 DMA19 E, U8 |; q6 }. d1 x8 |7 M
) K f+ M/ [. L7 {) `/ P 通用 DMA2
L' x# |' X3 r/ M# \% A
! F( v! {1 F; ]- p3 x9 Q 四个被动单元:
! c+ T5 j% M' T9 Y6 O' y2 ^6 E6 ?# `$ |& C
内部 SRAM
S2 w& a! o8 |- ?0 H ^3 D7 h# m! n' z1 g7 j
内部闪存存储器FLASH
: y# z$ D! o7 x5 ^7 S
! \$ }5 U- f; W# [. \ FSMC8 {3 b& r" J% Z! \7 _# l
, _3 z: i9 n, M- h
AHB 到 APB 的桥(AHB2APBx),它连接所有的 APB 设备1 Y) X8 X6 X# ~6 Z `7 s; j. [$ X
, y' o, x, h) |# i8 z5 H7 I( M 这些都是通过一个多级的 AHB 总线构架相互连接的。下面我们看看它们各自的功能:' S6 a ?# L. K: |& D8 Q
/ ?$ R- h2 c5 K5 ^6 r ICode 总线& v6 I0 i b% @3 t! x) y2 [
6 r q5 u9 R4 q1 c5 D0 _
该总线将 Cortex-M3 内核的指令总线与闪存指令接口相连接。指令预取在此. W1 \$ c4 ]; _
总线上完成。1 D' J) l( J, }& U$ s y' U
( o1 p. g V2 t/ k: G L
DCode 总线
" N; M0 R) G: B6 `6 |+ h
5 X+ ^8 m( c( E( R, ^: a 该总线将 Cortex-M3 内核的 DCode 总线与闪存存储器的数据接口相连接(常量加载和调试访问)。 x7 ]9 O4 D) y) f- q
+ | E C7 L; U 系统总线
) h! u( u2 C6 o6 \% \- ]+ ?! ?6 j. b' @8 o) C
此总线连接 Cortex-M3 内核的系统总线(外设总线)到总线矩阵, 总线矩阵协调内核和 DMA 间的访问。
2 k) M/ l' [- e/ U! G' I3 Q/ ~! G0 ]
DMA 总线
1 U1 \- V- o3 x7 Q; O
4 O" W0 @% b& V8 g# w9 k 此总线将DMA的AHB主控接口与总线矩阵相联, 总线矩阵协调着CPU的DCode和 DMA 到 SRAM、闪存和外设的访问。
- J! o- z( J- B* ]# w3 l6 a
, O: _0 N+ o" F( Q 总线矩阵" u6 ~% v' \ r
" {* G* U, N8 L$ M 总线矩阵协调内核系统总线和 DMA 主控总线之间的访问仲裁, 仲裁利用轮换算法。在互联型产品中,总线矩阵包含 5 个驱动部件(CPU 的 DCode、系统总线、以太网 DMA、 DMA1 总线和 DMA2 总线)和 3 个从部件(闪存存储器接口(FLITF)、SRAM 和 AHB2APB 桥)。AHB 外设通过总线矩阵与系统总线相连,允许 DMA访问。% q: d) l5 g' g9 j. L0 j
2 J! o6 c# |6 S! x) @$ Y
AHB/APB桥(APB)
' T) b; X) d! @# x+ j5 g# l' L2 O! n; _
两个 AHB/APB 桥在 AHB 和 2 个 APB 总线间提供同步连接。APB1 操作速度限于 36MHz, APB2 操作于全速(最高 72MHz)。有关连接到每个桥的不同外设的地址映射请参考《STM32F1xx 中文参考手册》存储器映像章节。在每一次复位以后,所有除 SRAM 和 FLITF 以外的外设都被关闭,在使用一个外设之前,必须设置寄存器 RCC_AHBENR 来打开该外设的时钟。
9 u+ @ G" [2 `6 I STM32F1 的时钟系统相对复杂,在后续文章中再介绍。' W; T$ `7 f2 p, K; r2 ~ W/ k
STM32学习进阶路径* Y" n# U. \: J1 f
6 Y2 u( Y V1 _0 n" X% f5 f$ ?8 n 基本外设:5 [8 T) a1 u p4 N8 j' W, l
' d+ j! y. ~% Y1 o! B GPIO 输入输出,外部中断,定时器,串口。理解了这四个外设,基本就入门一款mcu了。
# s' d _1 i, X5 u+ V. ]5 X _ a% `9 Z+ N, n
基本外设接口:) f, t. U4 j; Z4 j# B6 y8 _
+ P x5 f5 j: u ^- H) Y SPI,IIC,WDG, FSMC,ADC/DAC,SDIO 等。这些外设接口功能原理对每个芯片几乎都是一样。对芯片而言就是多和少而已。
1 s* D7 Z6 q5 q; Q* h& Y' u: h) M7 S7 U5 ~
高级功能:
( @6 p; A( ]+ r8 X2 D+ S6 B5 b7 @0 u2 n& R4 ]2 j
UCOS,fatfs,EMWIN 等,以及一些应用。
2 q8 L' A/ j, Y7 V+ i; ~4 g 另外值得一提的是,C 语言是嵌入式开发的基础中的基础,相关文章:C语言基础知识点汇总。如果 C 语言不过关,很大程度限制嵌入式学习的进度与深度。在这里推荐入门之后看一下关于c指针的书《C与指针》《C 指针编程之道》。学习嵌入式开发要多动手编程、多调试。 |
|