|
本帖最后由 aimejia 于 2018-5-22 11:13 编辑 7 j# l" E8 d( q6 I7 D+ [* g4 t% { 9 M; U5 }/ F$ [9 s 1.芯片结构组成图:' l# w! o/ k6 {+ ^6 Y+ l
2.STM32内部结构:
- ~2 {: A% E4 Y" R' L( @ 3.Cortex-M3模块结构图: , L" @% R! T6 p5 k1 u1 z. p
) ]3 z, M# e. `4 t2 v$ Z. ` 4.STM3210X内部结构:
桥:
/ T' V7 U; b" {) K/ y 四个主动单元 : M3内核的ICode总线(I-bus)、DCode总线(D-bus)、 系统总线(S-bus)、DMA(DMA1、DMA2、以太网DMA) 0 q1 o& Q" W) q9 C 四个被动单元 :1 Y l% P- A9 V/ k& g0 ^2 e$ h. u 内部SRAM、内部闪存、FSMC、AHB到APB桥 4 a3 }; {- V2 l! O( _6 i7 _) m3 y ICode总线 : 将M3内核的指令总线与FLASH指令接口相连,用于指令预取 3 v4 A, {3 N& ?4 | DCode总线: 将M3内核的数据总线与FLASH数据接口相连,常量加载和调试 : V/ u- `7 n) o0 M! J: s/ T 系统总线 : 将M3内核的系统总线与总线矩阵相连,协调内核与DMA访问 6 t9 A$ f6 X) {% A& Q, I DMA总线: 将DMA的AHB主控接口与总线矩阵相连,协调CPU的DCode和DMA到SRAM、闪存、外设的访问/ M1 ^8 z: q( X& p / B& |# H6 M! } 总线矩阵:4 F/ \. K4 {/ s1 q! F/ _8 q/ p 协调内核系统总线和DMA主控总线间的访问仲裁,仲裁采用轮换算法& Q( f* k3 \# y8 ^5 d: |6 @. z 包含DCode、系统总线、DMA1和DMA2总线、被动单元 : M# m3 h! f- _' J& y8 M! p 6 }* E( C4 R1 Q7 x' v# Q T AHB到APB桥 :' N: g: W. z' y. N' R 两个AHB/APB桥在AHB和两个APB总线间提供同步连接 APB1速度限于36MHz,APB2全速最高72MHz; {! \. U% p; j$ s/ s 5 \/ M! ]; [7 |4 R 一、时钟结构(时钟和复位模块,如参考上半部分所示) 系统复位后,所有外设全部关闭,但 SRAM 和 FLASH接口(FLITF)除外。 使用外设之前需打开该外设时钟,设置 RCC——AHBENR 寄存器 。
* x" Z* f, j9 m 二、存储结构 :(参考上半部分) *存储组织:; o8 W: h! z- E Cortex-M3的存储系统采用统一编址方式,小端方式 4GB 的线性地址空间内,: \+ H( U+ {# a0 X f 寻址空间被分成 8 个主块 block0-block7 ,每块512MB。 , o' R# w( G/ i: U4 } 片内Flash: 从 0x00000000开始(严格来讲是从0x08000000开始,到0x0800x xxxx结束,程序就烧到里面。); L4 S3 C& w) O 片内SRAM:从 0x20000000开始(用来保存程序运行时产生的临时数据的随机存储器,运行时变量,堆栈的存放的地方) 包括: 5 g, G% ] H& s- K 代码空间 ; M6 Y; f2 ^- Y# U. Q+ e6 } 数据空间 5 K. G: y n" f0 a. {' T7 W2 u 位段、位段别名 寄存器 片上外设 外部存储器 . U6 h" Z1 j5 U, b3 S* o: ] 外部外设 拓展延伸:e2prom ,存储掉电需要保存的数据;fsmc总线还可以扩展nor 和nand;* `; T( {8 A. a8 ^
, }) M( e; b0 t4 [+ N3 ?5 Q
+ V- K! Z. M; Z- \/ g$ `! w* l
M9 d5 Y" s" n) G6 v+ o* K *FLASH: 由 Main Block 和 Information Block组成 Main Block:/ r; o: d/ C( I& {3 }; ^ 存放用户程序,最高512KB 地址范围:0x0800 0000 – 0x0807 FFFF 小容量:16K-32K,最大4Kx64bit,共32x1K页7 d% W7 V+ p- h; @ 中容量:64K-128K,最大16Kx64bit,共128x1K页 5 N9 s( F1 d& P' Y. q: \! L 大容量:256K-512K,最大64Kx64bit,共256x2K页 小容量:16K-32K,最大4Kx64bit,共32x1K页 ( _6 n1 J$ B/ B% s8 A& s 互联型:最大32Kx64bit,共128x2K页1 F5 u- x, B; m/ l3 K Information Block: System Memory 2KB:0x1FFF F000 – 0x1FFF F7FF ISP Bootloader程序 1 _. ]* g( w, F! m2 E" ~ Option Bytes 16B:0x1FFF F800 – 0x1FFF F80F( @1 ^5 P; ]1 `9 J7 W4 x 6 Z" E2 a& O* R0 g# N4 e
9 l; o0 n, m6 A& } *SRAM: # I: k5 g- t8 w6 v |9 G 最大64KB ! ]! e& h9 ?$ L2 j 地址范围:0x2000 0000 – 0x2000 FFFF+ L/ K0 M7 J8 d ; A+ @$ p, T! L *片上外设地址映射:
* J4 J: k- h! S+ U
! ?! l2 U6 v2 u6 \' z
*位段(bit-band)、位段别名 : M3存储空间中包括两个位段区,该区域即可字操作,又可位操作1 a# t! _* s6 y' r, I* q/ B SRAM最低1MB空间: 0x2000 0000 – 0x200F FFFF 外设最低1MB空间:0x4000 0000 – 0x400F FFFF a.为方便位段区的操作,安排了两个32M的位段别名区 b.位段区中每一位 映射 位段别名区中的一个字4 D! ~* a+ [( | G) v$ L2 k) C c.通过对别名区中某个字的读写操作,可以实现对位段区中某一位的读写操作 别名区,2个32MB:7 F; U3 y) m+ z/ z5 ^. ^* G2 L% ~ SRAM:0x2200 0000 – 0x21FF FFFF ) v. s0 q- r; G3 W3 H8 [9 Q# D 外设:0x4200 0000 – 0x41FF FFFF 位段别名区中的字与位段区的位映射公式:5 K+ l& N+ D8 n1 l bit_word_addr = bit_band_base + (byte_offset x 32) + bit_number x 4 例如:SRAM位段区中地址0x20000300字节中位2% p/ ]+ c% V3 B 0x22006008 = 0x22000000 + (0x300 x 32) + (2 x 4): b" t, T. f* i! x) L 6 J) G' T: V( U1 V5 t 对别名区中某个字进行写操作:该字的第 0 位将影响位段区中对应的位$ l" V7 W" j$ H0 l, t+ G 对别名区中某个字进行读操作:若位段区中对应的位为 0 则读的结果为 0x0 ,若位段区中对应的位为 1 则读的结果为 0x1 PS: 对别名区的读写可以实现对位段区中每一位的原子操作,而且仅只需要一条指令即可实现4 a& y2 q& ?7 A$ k5 H& n+ ]1 m
" q2 R- E$ t6 T4 v/ ] *启动模式 : STM32系统启动区:0x0000 0000 – 0x0007 FFFF,512KB 系统启动之后: CPU从位于0x0000 0000地址处的启动区开始执行代码9 O( P9 a: [% } 该区实际既无FLASH,也无SRAM,通过引导配置后,将实际引导区映射到启动区4 I* r, j R7 ?3 o+ x+ n 系统复位后,在SYSCLK第4个上升沿,BOOT管脚的状态被保存,用户通过设置BOOT1,BOOT0的引脚状态选择启动模式0 A/ X; X$ P9 x. w CPU从位于0x0000 0000地址处的启动区开始执行代码 0x0000 0000 实际是SP & ~( I) O. S5 Z 0x0000 0004 是执行代码的地址 即使被映射到启动区,仍然可以在原存储空间访问相关存储器 * ?" ~4 n8 U w 从待机模式退出后,BOOT引脚状态被重新保存,待机时,BOOT管脚需保持3 H* P" F Q' {* {; T7 ^ STM32F10x通过配置 BOOT[1:0]引脚选择三种不同启动模式2 ~* e A' l( S/ V M L8 F& q% @( s' y9 S9 x# Z5 F
# e6 U6 T+ P( f q, ] 三、片上外设: u+ a8 F |3 a' q' n% {' j5 l STM32F10x外设 - k& C* d- _& A' h
STM32F103xx增强型大容量外设
四、GPIO结构 ' o1 r% Z0 Z, x/ Q& V) R 共?(5) x 16个I/O口: - t. a# H; t' Y! U PA0 ~ PA15 ) e# `: V$ g) Z% P PB0 ~ PB15 PC0 ~ PC15 PD0 ~ PD15 + w5 w6 \! B' o6 U0 U5 Q PE0 ~ PE155 ~8 }( j) V7 F% o1 r2 k ' h' F4 J8 t+ i: m/ H+ r. w / U* \- ^, {4 X- G 3.3V与5V兼容:' M& m: D, N; U+ }9 D2 ~ 1 T {" F/ o+ {2 f# ~ PA8 ~ PA15 PB2 ~ PB4、 PB6 ~PB15 PC6 ~ PC12 # S9 ]- w& u% @) ~; p5 V: ? PD0 ~ PD15 PE0 ~ PE15 0 s0 }% m( L8 G8 ^6 o7 G# Y' e/ ^ 仅支持3.3V:# ?' q( W, M0 k ( ~' v0 ]7 g, f% K/ o" u PA0 ~ PA7,兼做 ADC_IN0 ~ ADC_IN7 PB0 ~ PB1,兼做 ADC_IN8 ~ ADC_IN9 PB5 & Q! G1 E4 Y" t2 [" H PC0 ~ PC5,兼做 ADC_IN10 ~ ADC_IN15 ( m% S) k9 N) o0 @+ _ PC13 ~ PC15 0 s | H B) e' M# c/ K# l; |
+ J! m, w/ V5 S, X6 [" u& j
' ~ A+ L; G8 H7 b0 `' n
引脚 (48 64 ...) 开发工具 2 @9 f" @2 j+ ?2 h
6 u8 J$ s1 z( U; X" v6 N( c STM32系列的优点; |0 Z3 X$ E! g& N$ e+ H 7 w! A0 w5 j' R1 o2 N9 g 先进的内核结构,STM32系列使用了ARM最新的、先进架构Cortex-M3内核) Z% _; a4 j9 d# q& g 优秀的功耗控制,STM32处理器具有三种低功耗模式 运行模式时使用高效的动态耗电机制,在Flash中以72MHz全速运行时,如果开启外部时钟,处理器仅耗电27mA 待机状态时极低耗电,典型值2uA 电池供电时,提供低电压2.0~3.6V工作能力0 L# G3 i, R1 U! U9 e* t L 灵活的时钟控制机制,用户可以根据自己所需的耗电/性能要求进行合理优化% S. c( U1 [2 |5 n7 ^) M! m RTC可独立供电,外接纽扣电池供电3 R0 o2 m) u( y! L, w& v3 c( m 性能出众而且功能创新的片上外设: d. n. t4 J1 L" j! ~ STM32 处理器片上外设的优势来源于双 APB 总线结构' ?! L! q) N6 h2 a 其中有一个高速 APB,速度可达CPU 的运行频率,连接到该总线上的外设能以更高的速度运行, z, j! M( _: Z% d+ f! j& d USB: 12Mbit/s + h) h$ o9 D p7 M- a& x USART: 4.5Mbit/s PI: 18Mbit/s IIC: 400kHz % D) g. Y+ y% I* V GPIO: 18MHz翻转 PWM: 定时器72MHz输入 针对 MCU 应用中最常见的电机控制,STM32 对片上外围设备进行一些功能创新. l/ I+ ~9 Q) g5 |' G( B$ u4 C 内嵌适合三相无刷电机控制的定时器和ADC3 b E3 [4 F6 k& c" Q 高级PWM定时器提供:5 d% d4 m4 ]9 ^& S- n/ r, r 6路PWM输出 -> 死去产生 -> 边沿对齐和中心对齐波形 ; N7 Z0 z$ K/ ^ 编码器输入 -> 霍尔传感器 -> 完整的向量控制环 紧急故障停机、6 g, ~7 s; f( Z' V5 H, o9 [& K 可与2路ADC同步、与其它定时器同步 可编程防范机制可用于防止对寄存器的非法写入 双通道ADC采样/保持,12位1uS,连续/独立模式,多触发源; P/ m* h# t& \ 等等$ G, H: R+ B. O6 Z " B0 l" O) P0 ]& V/ u 转载自无穷山色) N% M! e2 X! `9 k ; e4 |! Y3 G; o " u9 p! _7 c1 [ |
微信公众号
手机版