你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32 嵌入式基础知识

[复制链接]
STMCU小助手 发布时间:2022-4-27 10:22
1.1 嵌入式产品实例分析& c/ p' k( I! N/ \) y! `
嵌入式产品都是围绕应用设计软/硬件,应用的需求直接决定嵌入式处理器的选择。比如简单的智能产品,通常选择8位的单片机(MCU);复杂的智能产品,通常选择32位,甚至64位的MPU;更多的时候,常常MCU和MPU搭配,各自发挥各自的作用。3 H# t" h% W- U

) l4 ~* Z, e2 l$ L2 D1 w1 z/ T) O( r) o/ J" j5 v( Y
1.1.1 实例一:智能台灯
3 |( Q) ?5 n3 l  K该台灯首发价格为399元,月销上万,可以说是一款月流水千万级的产品。相较于传统台灯,主要增加了亮度、色温调节和手机控制,身价也涨了几倍,该智能台灯如图 2.1.1 所示,功能如下:0 s( ^0 [; S6 h* g# q* x. m

, W; f+ O0 }: a$ ]& n; |/ o1) 可以根据外部光照情况,自动调整台灯亮度、色温;
$ ?( n5 J! _$ ~4 n/ B+ W
% M1 d$ B' _0 i4 O- G& k2) 可以手动调节台灯亮度、色温;8 D9 A+ ^1 z' o6 f
" [- _  Y" B+ a" f
3) 一键切换到读写场景模式和阅屏场景模式;4 T8 k* @9 _9 t0 u! O1 A
5 b0 v. \: d7 Y  d: V: g
4)  支持番茄时钟,每隔25分钟,灯光提醒用户休息;# X+ H) b. `; M0 G, ?+ J3 z

- z3 o. P) I& r8 ?% H7 }% ?8 T5)  支持手机连接,通过手机或手机语音控制;% q5 E7 O3 \$ J% ]3 X# Y

. ]& \2 U* O; p$ ?) X+ ? B@RDSB5H20YN1PK}TS5[L6U.png
% ^' R" R+ ~* B  J  e1 U# u7 {3 ^
图 2.1.1 智能台灯实物图. b5 h& ^& c$ _. Q' V
该智能台灯的底座为控制面板,拆解该底座即可看到内部电路结构,如图 2.1.2 所示。可以看到里面主要有两个芯片,根据芯片上面的丝印标识可知,一个是RTL8710B,一个是SN8F5828FC。
% Y1 A( @; k9 p# n0 m5 F. o( N: k( U0 l9 B* R0 p0 S4 z& _1 }
E0A}{N]I]X9{O9BGFB]UY~M.png
- L0 D( ~  }* M% B' u  H8 x% Z
) M! R! d# \( A# g; q2 l: q" ~图 2.1.2 智能台灯底座拆解( H) O9 E7 |8 ^8 G6 @4 a1 V
从互联网搜索“RTL8710B”可知,该模块是一个高集成度低功耗Wi-Fi连接解决方案,里面是一颗瑞昱(Realtek)生产的ARM-Cortex M3架构的32位MCU——RTL8710B。该模块封装好了Wi-Fi协议,用户只需要通过SPI/SDI、I2C或UART与模块连接,即可控制Wi-Fi收发数据。/ \1 c4 m' [" ^; T4 x& K& f# ]

! Z8 E, F. E1 g+ J3 S从互联网搜索“SN8F5828”可知,该芯片是松翰(Sonix)生产的一款8051架构的8位MCU,通过下载该MCU的芯片手册可知,该MCU有多达14个PWM通道,可用于控制LED灯的亮度,另外还有UART和I2C,可用于与其它模块通信。. M3 E! k- p) u4 b6 L/ J, [

" w2 R% E9 W2 p5 n根据以上分析,大致猜测该智能台灯的整体设计框图如图 2.1.3 所示。' U# V! \9 R/ B7 {
' W4 z/ f7 x1 M& o1 {
{11G8DDHPZ_]SJ`ELWMNSPY.png , ^& l1 U. h9 Q' C. \4 B

1 g0 E3 _; J' ^1 ?" x+ {- ^图 2.1.3 智能台灯系统整体设计框图
% d# g, I+ k/ I0 B  w 光照传感器会随着外界光照情况变化自身阻值,主控MCU通过ADC获取电压变化,即可得知外部光照变化,控制PWM输出修改占空比,调整亮度和色温;触摸按键按下后,会让主控MCU的GPIO引脚电平产生变化,MCU程序读取GPIO电平获知按键操作,进而控制PWM输出修改占空比,调整亮度和色温;主控MCU先控制Wi-Fi模块连接到互联网,与云端连接,手机APP的按键操作或语音输入转换成对应控制指令发送给云端,云端将指令发送给Wi-Fi模块,再通过UART接口发送给主控MCU,主控MCU解析指令后,控制PWM输出修改占空比,调整亮度和色温;用户通过按键设置为番茄时钟模式,主控MCU则利用自身定时器计算时间,当为25分钟时,控制PWM输出修改占空比,调整亮度和色温。; p, k7 ^: |2 ]( R

' h# |2 }) N8 i% X  Y, l  C1 G, X+ B
1.1.2 实例二:智能手环
7 Q: N4 n) w9 \" B该手环首发价格为299元,作为近几年的热门智能产品,销量可观。如今智能手环主打健康检测,功能全面,因此需要的传感器也越来越多。加上功耗和尺寸的限制,手环的主板集成度越来越高,足以媲美手机内部。该智能手环和内部结构如图 2.1.4 所示,主要功能如下:% {' C; ?: }6 [$ W( Q/ |

3 X9 t6 V0 t- T0 q1) 彩色IPS触摸屏,显示时间、健康信息、设置闹钟;
# K2 Q  C( n6 ^2 u/ G5 }! o' z8 U" @0 X0 b/ n
2) 闹钟、消息震动提醒;) I' R/ R' t9 m) E: y, M
0 u2 v9 q) E* u
3) 记录跑步数据;
  Y8 k- h. ?5 s! m2 q7 b/ C3 v) q: V+ t" r" Z# `
4) 测量当前心率;
% C; a& c' l! z8 d* F4 v+ `# z/ }- P% b" r* m) m
5) NFC刷公交、地铁;
5 [( x0 m2 M! s6 G0 T( f
. I9 D' @) N* C' o4 p. J6) 蓝牙连接手机,进行系统升级或接收手机消息;' a( _/ k" m- j7 V

) {# t3 o4 R9 F2 L9 K  Y# h VN6K}JWTRT_F4{IH9DTB3FC.png
; P) w6 C  K- ]
+ w, b' l, I; ~/ Z图 2.1.4 智能手环外观和内部电路
2 F2 H# U9 T9 p可以看到该智能手环内部芯片非常多,根据上面的丝印可知芯片型号,再搜索对应型号可知每个芯片的作用,这里整理如下。
* C% `9 q" Y% l& |2 x; k7 Y/ a( e- c% a* R3 y/ b# [7 r) T
STM32L496VG:STMicroelectronics公司产品,ARM Cortex-M4架构的32位MCU,主频可达80 MHz,这里作为整个系统的主控;- f2 @1 U4 G, L" W: o* N

/ a% g, ?0 z, Q2 jPN80T:NXP和Garmin联合出品,一款面向可穿戴设备的安全便捷的NFC移动支付芯片,接口为SPI或I2C;
7 l: Q( c5 `% z4 M* `: `5 y% M
) {3 y$ |+ ^2 T1 l8 c/ T5 Q: `DA14580:Dialog公司产品,一款ARM Cortex-M0架构的32位低功耗的蓝牙芯片,接口为UART、SPI或I2C;
8 \/ f% ?! v* k. W& @- v0 K3 Z( P
MAX14745K:Maxim公司产品,一款面向低功耗的可穿戴设备的电池充电管理解决方案芯片,接口为I2C;
7 c. K2 y8 M/ U* E; {3 W3 f8 T' R6 L% f
AFE4410:TI公司产品,一款用于心率检测的芯片,接口为SPI或I2C;
: ~; ?* h7 E+ ?' h/ Y: U, j* O" r
  |& a  _# K+ |( f8 r3 T- P/ Xl  IQS620:Azoteq公司产品,一款用于接近感应芯片,可检测手环是否佩戴上,接口为I2C;0 G2 u  Q: }4 s7 C! V

  b  z: q! w7 t8 [6 B0 cLIS3DH:STMicroelectronics公司产品,一款超低功耗的高性能三轴线性加速度计,可检测当前手环的运动状态,接口为SPI或I2C;
7 C/ L# Y2 A' s
8 E9 Y  F$ K9 a& B# r3 iGD25LQ64CWIG:GigaDevice司产品,一款64M的SPI接口Flash,可用于存储手环的主题数据包、图片数据等;
1 f6 E4 A# i+ `: w
+ Q( Q. r6 c- T7 B9 P* y1 T" k, v根据以上分析,大致猜测该智能手环的整体设计框图如图 2.1.5 所示。
0 J1 j% @  p4 f2 i5 M( v) Y1 C% M' f: B
$$H`1WEZYKDY}W(P`8$~Q7R.png
0 {  B4 A/ X9 f: }' S: i
' \5 u4 Q3 X. t$ Q7 ^; I) g图 2.1.5 智能手环系统整体设计框图8 ^( Q8 n+ A' C8 |5 x' U% _
前面智能台灯,整体框架比较简单,一般MCU运行裸机即可完成任务。智能手环整体框架就比较复杂了,一般都运行有操作系统RTOS。主控STM32L496VG接收来自蓝牙、NFC、三轴加速度计、接近感应传感器、心率传感器和屏幕触摸的数据,通过特地算法整合后,在OLED图形化的展示给用户,与用户之间进行交互。, D& m: a# ^0 p4 {

# S, h7 G/ u; j( W4 p2 e% Y) ^1.1.3 实例三:电视盒子2 o# i  @8 o4 Q( ]
如今家庭电视也朝智能发展,传统电视加上电视盒子,摇身一变为智能电视。目前市面上的电视盒子种类繁多,但其基本功能还是一致的,基本功能如下:
5 x: ^- o5 U7 j5 v# o  B: _4 N' P, ^, ^# \" L
1) 高性能的处理器、大存储空间,安装应用程序,播放高清视频;# B$ R) Z- R' u$ g
  B) @+ P7 X( m5 D  B) \6 l& r
2) 支持有线或无线连接网络,实现在线播放;/ F% G. Y( h3 t8 w9 \4 w
+ Q: m& ~# |0 z  F" l3 o0 m# L& U; E% s
3) 支持HDMI或AV输出音视频;. t2 g7 M+ d$ W8 |. F

- F9 S1 O9 a7 H3 }3 {4) 支持USB接口;) l/ Z6 x; y8 o  Q2 r$ j) j/ X* Z
! T2 J& h- P) d1 a$ V/ d
5) 支持红外遥控;' ?0 S% `& ?; o- n

) F" a0 S, m, f这里拆解某电视盒子,如图 2.1.6 所示内部结构,主要的芯片有四个,整理如下。
/ j1 y3 ~; X# _+ w& t3 v
; \  ]/ P8 O4 q: m; qHi3798:华为公司产品,ARM Cortex-A53架构的64位4核MPU,主频高达2.0GHz,高性能多核GPU Mali T720,拥有强大的视频、音频编解码,拥有一个HDMI 2.0接口、两个千兆网口接口、一个USB 2.0接口、两个USB 3.0接口,一个IR红外接收接口、两个SDIO 3.0接口、多个I2C接口等,图中被散热器挡住;7 N0 q* M; E1 P' h2 K: t
/ Q9 t6 m6 V5 y6 q1 r
D2516ECMDXGJD:Kingston公司产品,为嵌入式设计的低功耗DRAM,单个256MB,这里有两颗,总计512MB;
3 z" B& G5 {" I7 \/ E# Z$ \: W
) j% l8 S1 F7 cSDINBDG4-8G:Sandisk公司产品,高可靠耐用的eMMC闪存芯片,容量为8GB;4 v  z/ y' m* L" u4 \! |0 v6 m

1 n4 ~9 l8 y2 D; Q5 oRTL8822BS:Realtek产品,支持2.4G/5G的双频WiFi&Bluetooth模块,接口为SDIO,图中被屏蔽罩挡住;* V) N' u8 C% p1 z
& X# s* {1 d+ e, c9 I1 h
B%ZDAIXJ8)6%X$PB$_Q0EAD.png + G7 F! i* [! w$ I7 L

: `% \* I/ G" W* J; u4 N图 2.1.6 电视盒子内部结构
- C, J6 Z: q" n根据内部结构,猜测该电视盒子的整体设计框图如图 2.1.7 所示。; D. Y4 J) ?" T+ v

3 ]2 Q& u* @( ~2 W# s" h+ t (MMQK8DW]~PA97P_WZOF79C.png ! W) F1 ~2 ~) C

3 j8 D* w8 ~5 p7 f; q图 2.1.7 电视盒子系统整体设计框图- J+ I9 B  X; J0 f+ x
电视盒子的整体框图比较简单,但其难度不低,一般运行Linux/Android系统,无论是软件复杂度还是硬件复杂度,都比一般的MCU项目复杂。MPU性能强大,接口繁多,像有线网口、HDMI接口、AV接口、USB接口都直接支持,这些接口MCU一般都没有。除此之外,MPU项目都外接RAM和Flash,根据项目需求选择合适大小,大小也远超MCU项目。+ ~. z; Q# g" n2 P4 I# L9 A
1 v& w8 N5 v* w" [
【总结】. [, {4 J+ Z. A5 {

; X; L/ f# p2 o# C0 u以上三个嵌入式产品实例,代表了嵌入式的三个方向。第一个是无操作系统的MCU项目,第二个是运行RTOS的MCU项目,第三个是运行Linux/Android的MPU项目,本手册主要涉及MCU,也就是前两个项目。读者理解了它们的共性,也就理解了什么是嵌入式系统。
; I! m2 W7 E9 J5 m" k
' {# t9 j3 W# I6 D  Z! O1) 以应用为中心,以计算机技术为基础,软件/硬件可裁剪,实现应用需要的功能;# M4 m7 D/ ?& B0 c
1 h+ h$ e9 F6 Y9 R/ w5 p
2) 对功能、可靠性、成本、体积、功耗有一定的要求;
& I& P: Z* }( ^5 R9 b1 v7 u- ]" H' s3 x' z2 o! w% ^4 V8 z. k6 q7 h
3) 实现对其它设备进行控制、监视或管理的功能;
% ^$ a8 P: E# u4 R8 k
- M" e7 S3 Z4 w9 K$ q7 B6 N4) 简单的说,除了通用计算机(读者使用的电脑)和部分服务器外的一切计算机系统,都是嵌入式系统;" v1 w, w& w3 g+ o3 z
  u+ `5 Z# l+ L8 y1 i! v
1.2 ARM与STM32的关系# |$ \6 f6 e6 g7 A! L3 a
1.2.1 ARM介绍
, l3 r2 b& @$ S+ O/ N& v1978年,奥地利籍物理学博士Hermann Hauser,和他朋友,一位英国工程师Chris Curry,共同创建了一家名为“Cambridge Processor Unit,CPU”的公司,中文字面意思就是“剑桥处理器单元”,主要从事研发当地电子仪器设备的业务,比如街头游戏机之类的。
7 Y6 X- _0 _" Z- g" _! ?
% u1 _! i8 g, h4 t) z% p6 U9 L" B1979年,在经营逐渐进入正规后,原来的公司名不怎么合适了,那个年代喜欢找个吉祥物作为公司名字,比如APPle公司。这俩就以橡子为吉祥物,取名为“Acorn Computer”,中文字面意思就是“橡果电脑”。& c- T* G& @! Y9 k+ B3 V: f5 c/ y: P8 z
: d0 U. b6 m. ^' r1 Q
1981年,也许是改了公司名字,运气就来了,这一年,公司接到一个大单。英国广播公司BBC,计划在整个英国播放一套电脑普及的教育节目,希望Acron公司可以生产一套配套的电脑,之后英国政府还会海量采购电脑,在各个学校普及。
$ v2 s2 J# J) a: g0 V' q
) K( H5 f; j1 t. V0 T% |接下这个大单后,Acron公司就开始研发产品了。当时处理器正从8位向16位过渡,他们就去找了美国国家半导体和摩托罗拉公司生产的16位处理器。评估后发现,这些处理器执行上有点慢,中断的响应时间有点长,还有就是太贵,一台电脑才卖500英镑,处理器成本就要100英镑。于是又把目标转向当时如日中天的Intel,希望对方提供一些16位80286处理器的设计资料和样品,然而Intel根本就不理他们。* P9 y% q. t, A0 H6 x
0 r6 C8 b8 r: G
最后,Acorn公司没办法,临时采用了便宜的MOS科技生产的8位6502处理器,勉强研发出符合要求的个人电脑BBC Micro。绝处逢生的Acorn公司发现处理器受制于人,为了后面长久的发展,于是决定自己研发处理器。! J8 F% f4 N6 m' H+ L3 F
8 O6 N$ j; l. i  t7 C* x
Acorn公司的研发人员从美国加州大学伯克利分校,找到了一个关于新型处理器的研究——简化指令集。在此基础上,历时4年的艰苦奋斗,于1985年完成了微处理器的设计,以后的BBC Micro,都用这颗新处理器。对于这块芯片,Acorn公司给它命名为“Acorn RISC Machine,ARM”,中文字面意思就是“橡果精简指令集机器”,也就是ARM的第一次出现。
: Z* [4 e! Q  ^8 k  Z+ {& {7 A
  c( v. Y2 B/ `4 S这里插讲一下简化指令集(Reduced Instruction Set Computer,RISC),与之相对应的就是复杂指令集(Complex Instruction Set Computer,CISC)。早期的处理器都是CISC架构(比如前面Intel处理器),随著时间推移,有越来越多的指令集加入。但是后来人们发现,整个指令集中,只有约20%的指令常常会被使用到,大约占了整个程序内容的80%,而剩余80%的指令,只占了整个程序内容的20%(典型的二八原则)。于是,1979年美国加州大学伯克利分校的DAVid Patterson教授(前面提到的新型处理器研究的作者),提出了RISC的想法,主张硬件专心加速常用的指令,不常用的指令则利用常用的指令去组合。
/ V. S" S1 B4 x4 S* e# R+ z* S
" P6 @0 Q: b% g就在同一年,1985年10月,英特尔发布了80386,Acorn公司的ARM芯片被吊打。80386采用CISC技术,所有指令都支持,也就性能更好,但设计成本也高、功耗也大。Acorn公司的ARM芯片采用RISI技术,只支持常用指令,其它指令需要常用指令去组合,性能也就差一些,但成本低、功耗低、研发快。Acorn公司也不傻,性能比不过,就突出成本低,功耗低的优势,总有要求成本低、功耗低,性能要求不高的场景,于是就往我们现在所见的嵌入式方向发展。* j6 V5 p0 s% A4 a7 b2 W1 e! v

' ^8 ?. U: \3 Z" j$ [+ m1990年,Acorn公司和APPle公司合作,成立新公司“Advanced RISC Machines,ARM”,中文字面意思就是“高级精简指令集机器”,这就是现在大家常说的ARM公司。6 R" O. ]7 v- r+ f; o" j
6 J% e+ v/ ]6 z1 e9 O/ S0 c
成立新公司后的几年,ARM公司业绩平平,危机四起。于是ARM决定改变他们的产品策略,他们不再生产芯片,转而以授权的方式,将芯片设计方案转给其它公司。正是ARM的这种授权模式,极大地降低了自身的研发成本和研发风险。它以风险共担、利益共享的模式,形成了一个以ARM为核心的生态圈,使得低成本创新成为可能。
0 f" S& j9 V: }0 R, t5 X3 L
% b& b6 S# x: Q* a7 C2 z随后,德州仪器(Texas Instruments,TI)、意法半导体(STMicroelectronics,ST)、恩智浦半导体(NXP Semiconductors,NXP)等半导体芯片厂商,相继购买ARM授权,然后根据自身行业需求,设计不同的外设接口的芯片。
8 P2 D% g3 ^' I: Q' U" [6 Z
, B0 c: `# Z: p) r! } 2K97@7~%U9SPOZVUJH[HTFR.png
, a$ G" I0 u% g, W* D& m- _% A; u* Z& G- Z: g8 Y
图 2.2.1 ARM公司发展史8 z: S7 r6 m: F  N8 E, H

: h# Z' O0 H) e$ ?. R由上总结,ARM具有以下三种含义:
, P( k' ?. e9 X* w& O
9 y" b7 v  d$ \: i  ~1) ARM是一家全球半导体行业技术领先的公司,主要业务是设计RISC嵌入式处理器;
' T; s- J' t  T0 c; w
* D" s, t& |. e7 Z2) ARM是一类微处理器芯片或产品的统称,即所有采用ARM公司提供方案开发的RISC处理器;
+ ^1 P! g& x+ {
1 r8 R6 ^& Y6 U3) ARM是一项技术的名称,即采用RISC的处理器体系结构;; k/ h# i( J: H9 Q2 K( K( m7 Z; `8 x3 M
; o# E1 U% X: \
从1985年发布第一个ARM处理器开始,ARM公司不断升级迭代,加入新的指令系统、寄存器组、功能特性,发展出不同架构。早期的经典ARM处理器,架构命名规则比较混乱,现在这些处理器基本不常见了,这里就不展开介绍。从ARMv7开始,采用Cortex命名,将整个处理器分为三大类,如图 2.2.2 所示。: V+ M" ]' {# b& B! X
8 T' ~# L, M$ _1 \

; a2 b, w+ a& _3 P/ c" |6 \+ G5 z
0 }, v/ H3 @, [  [8 c, w5 }/ ~图 2.2.2 ARM处理器系列: t: m6 C9 k; y3 m" @
1)  ARM Cortex-A:应用程序系列。A表示应用处理器(APPlication Processor),该系列有内存管理单元(Memory Management Uint,MMU),实现虚拟内存,让每个用户进程都拥有自己独立的地址空间,这是现代多用户多进程操作系统(比如Linux、VxWorks)所必须的。该系列适用于高端消费电子领域,比如智能手机、平板电脑、智能电视、路由器等;
, \$ d) a) [0 c2 d4 M& h! q5 P: u. V& C
2)  ARM Cortex-R:实时控制系列。R表示实时控制(Real Time Controller),该系列适用于高性能、高实时性应用,比如硬盘/固态驱动控制器、企业网络设备、消费电子领域的蓝光播放器、汽车领域的安全气囊等;
9 [6 D' b9 V! F& [# t8 ]3 T, ]+ V' P
3)  ARM Cortex-M:微控制器系列。M表示微控制处理器(Microcontroller Processors),该系列适用于低功耗、高性能且对成本敏感的产品,比如家电产品、物联网、无人机等;) z( H2 p+ k- o3 h* M  S
7 M2 S6 {0 Z# a6 C0 ]% Q; }+ e

7 X5 Q( p( e1 X9 A% n针对不同的应用场景和需求,每个系列还会再细分,比如ARM Cortex-M就再分为ARM Cortex-M0、ARM Cortex-M3、ARM Cortex-M4等,区别如表 2.2.1 所示。
! L8 H, d& b/ M; [8 E+ V0 Y/ g8 I9 Q5 J5 `  i0 I
HNCB@L5{FWHMREL}2@DH}ER.png
, U4 m* |8 E. D5 k  w4 n2 A; {! h# Q0 T3 k" X. _2 V
表 2.2.1 Cortex-M系列处理器区别) b% s" q, o# r* y6 D' t; h3 ]

; U4 h# J: M5 E3 d# _1.2.2 STM32介绍
4 n  X% M. b9 d' t  o- y 在2004年,ARM公司推出新一代Cortex内核后,ST公司抓住机遇,在很短的时间内就向市场推出了一系列的32位微控制器,同时提供基于库的开发模式,加快用户研发周期。STM32就是ST公司基于ARM Cortex-M系列内核设计的微控制器,专为高性能、低功耗、低成本场景设计。
5 ]8 N' w7 H$ f  A$ c& E4 j4 _
) G0 Z6 u9 W" T5 M) wSTM32如今产品系列非常丰富,主要为ARM Cortex-M内核系列MCU,也开始涉及ARM Cortex-A内核系列MPU,如图 2.2.3 所示。按应用特性分类,可分为无线WB/WL系列、超低功耗L0/L1/L3/L5系列、主流G0/G4/F0/F1/F3系列、高性能F2/F4/F7/H7系列、全新的MP1系列。: H) X2 f0 f( j7 ]; s! L

9 N6 t) J# j# B" `% ~/ [ YVTD64]CCB0FU15`@BL82U9.png : ]5 J7 W9 C. a

; t) W. I6 I7 A( k0 G图 2.2.3 STM32系列产品(2020.06)1 h+ X! g' @  n, r! t# `
STM32的处理器种类众多,通过了解STM32的命令规范,可以了解整个STM32家族产品,也方便以后芯片选型,STM32 MCU系列命名规则如图 2.2.4 所示。
2 F( @0 B* J5 N+ K- u* H' E+ z8 A0 v: \7 |! i
(KJB9459$Q`[D`E9J[XTDEI.png 7 J7 U9 T: P+ p

2 r7 ]" Z/ o, z- ]' B6 F7 R' x图 2.2.4 STM32芯片命名规则(仅适用于MCU)
  c6 v6 R7 V; H4 n8 {9 ]) u
1 J: E5 s% W; j! }+ `) }' m2 N以STM32F103C8T6为例,解析STM32芯片命名规范如表 2.2.2 所示。" h: l8 k+ @; ?0 e, @$ s
3 ^5 [4 A  F; j5 M& |7 m% m- H: M, V; v
KPN)BKR{9RK(R]{]PIGATYX.png
: |4 V2 c1 q+ _4 o( @. R; b; r# O# ]+ C7 k0 p9 B1 [5 w
表 2.2.2 STM32F103C8T6各部分含义
# j3 h, Y' ?' Q( u" p
2 C; C2 z- D% r; q3 l
; o0 z7 m4 O2 d' b【总结】
) Y* T" j: H; o& e
; Z, c9 w! \$ z: @& y% i" aARM公司售卖Cortex-M系列的授权,意法半导体(STMicroelectronics,ST)购买了该授权,生产了一些列STM32产品,这些使用ARM技术的处理器,都习惯称为ARM处理器,其中STM32F103C8T6就作为了本手册配套开发板的处理器。# l- d7 o& s9 g3 I; f2 j
* K- Y% t, s+ V  D( w
1.3 常见处理器概念0 g  S" @( K" U7 k5 O7 @9 m& w8 c8 B
前文中多次出现了MCU、MPU、DSP、FPGA等嵌入式处理器概念,很多初学者可能比较迷惑,下面将对这些概念进行简单介绍。9 n& d- O% @/ D4 B
7 \* ]% J1 s: n( ?" R7 A
1.3.1 MCU: F- q, @& t3 q8 {; {+ @! o
微控制器 (Micro-Controller Unit,MCU),俗称单片机。之所以称之为单片机(Single Chip Microcomputer),是因为不同于其它处理器,它将CPU、RAM(随机存储器)、ROM(只读存储器)、I/O、中断系统、定时器等各种功能外设资源集中到一个芯片上。这个芯片就是一个完整的微型计算机,只需要供电或加上极少的外围电路即可工作。
/ G) t; `( P# r
  L" ^' {- b, G5 D- n7 S' e- a常见的MCU有80C51系列单片机、Atmel公司的AVR系列单片机、Microchip公司的PIC系列单片机、TI公司的MSP430系列单片机、ST公司的STM32系列单片机、NXP公司的LPC1700系列单片机。
" ^9 n( i& D% \. n" ^, l- ?: ]1 O" ^
* W2 d3 ^% h- ?' P/ ~! K早期的MCU主要是8位,后面发展出16位,再到现在主流的已经是32位。此外,主频不断提高、ROM不断增大、外设不断增多,单片机的应用领域和场合越来越大。
3 ~! X$ J, B' J. M' q) X0 l. ]  k& Y, [) J' |7 E

0 n( s! U2 V+ j1.3.2 MPU
# ]3 E( s$ q3 E/ r" U& t8 N7 v
微处理器(Micro-Processor Unit,MPU)。类似通用计算机的CPU,主要负责处理计算,需要外加RAM、Flash、电源等电路。6 ]/ [+ g7 z  L, W8 E' {
! D7 m0 z  F% _7 H
MCU和MPU的本质区别是因为应用场景的定位不同。MPU注重通过相对强大的运算/处理能力,执行复杂多样的大型程序,因此常需要外挂运行内存(RAM)、存储器(Flash)等。MCU注重功能较为单一、价格敏感的应用场景,不需要相对强大的运算/处理能力,更多的是对设备管理/控制,因此不需要大容量的RAM、Flash来运行大型程序,于是将RAM、Flash全集成在一起,大家也就俗称“单片机”,如图 2.3.1 所示。" Q9 G4 j: X1 B3 z' o. \

0 \2 w; h: @, Q- v, l: L+ v  m %Q@OT2V7DHQGLL2B{0UTUUC.png % q/ M! V9 l9 A" y3 H  C, I$ N+ B

5 b& p8 [7 v5 S* Q图 2.3.1 MPU和MCU的不同结构/ I# y3 A) U; w
6 b3 v* E  c5 ]7 U, m4 r
如今,随着技术的发展,市场及需求的变化,MPU和MCU的界限日趋模糊。高端的32位MCU主频越来越高,已经反超低端MPU主频,MCU也有外挂RAM和Flash的场景,依靠硬件结构去区分逐渐困难。读者可以简单的认为,嵌入式微处理器MPU,通常运行Linux、Android等非实时操作系统,应用在高端应用市场,比如智能手机、路由器等消费电子市场领域,而嵌入式微控制器MCU,常用运行裸机或实时性操作系统,应用在中、低端应用市场,比如家电控制领域、工业控制领域等。
, [: u, K" W% L! z6 g/ ?5 G
- w/ P- Y, }6 R* X6 w1.3.3 DSP. V$ w( u' g# ^& R6 q& H1 `+ o
DSP通常有两个含义。5 _7 J0 v: A* X. t& o
数字信号处理(Digital Signal Processing,DSP),是一门学科技术,使用数值计算的方式对信号进行加工处理的理论和技术。3 r$ `. @7 W5 i! m
数字信号处理器(Digital Signal Processor,DSP),是一种专门用于数字信号处理领域的微处理器芯片。4 q3 S% l$ ?* [% n+ A2 ^
+ m' x& u& {% U! C' c1 h0 Z
如图 2.3.2 为TI公司的DSP芯片TMS320VC5509A。
- F6 g' q% Y7 i6 T# |
/ l2 X; @& t: \1 P2 v& V ~)G~HFR4QTP5Y3[M76V}F@G.png
) f6 l4 x# b) G% u" J! n+ z/ [/ N) t% o+ R
图 2.3.2 DSP芯片* w! h- O* r* v- P/ s3 |
8 ~" l# h8 h! t) r
DSP芯片为了达到快速处理数字信号处理的目的,采用了许多特殊软硬件结构。首先是采用哈佛结构,将程序和数据分开,同时为处理器提供指令和数据。然后采用多级流水线技术,在指令周期内可以执行更多指令。加上专用的硬件乘法器、特殊的DSP指令,使得DSP芯片在计算处理上,远超同主频的MCU或MPU。
) W9 i! D$ z; x3 j! N
/ y4 R! t6 N7 s/ oDSP芯片拥有强大的数据处理能力,在数字信号处理领域,如调制/解调、数据加密/解密、图形处理、数字滤波、音频处理等计算密集型的场景广泛应用。
* e7 x+ ?7 m, }2 K5 e$ S, @
- M7 R, @; \  O1.3.4 FPGA
% D1 W4 Q* U3 \
现场可编程门阵列(Field-Programmable Gate Array,FPGA),由可编程互连连接的可配置逻辑块 (CLB) 矩阵构成的半导体器件。通俗地说,FPGA就是一个可以通过编程改变内部硬件结构,实现所需功能的芯片。前面的MCU、DSP等都是硬件资源固定,只能通过修改软件实现所需功能。而FPGA是通过硬件描述语言或其它方式修改硬件,将FPGA变为CPU或专用芯片,来实现控制或算法。因此,MCU、DSP能够实现的功能,FPGA理论上都可以实现,反之则不一定。如图 2.3.3 为Xilinx公司的FPGA芯片XC3S400A。
$ t, Q, L3 d9 N2 P- ^7 e/ V1 I0 N+ s
@_LUXFSUFM0G@)]MLQQM{XO.png 7 \: {, i3 o. M# O$ Q; G5 m# P

7 S  z( [. E; n- {8 F, U图 2.3.3 FPGA芯片; I4 r5 Z* g, I& K/ |5 @
FPGA主要有两大优势:高速和灵活。FPGA使用硬件处理数据,采用并发和流水技术,多个模块之间可以同时并行执行。FPGA可以根据现场情况配置器件功能,能够在技术和需求变化时重新配置,实现系统优化升级。$ z1 Q9 m2 J! R2 C! s8 D0 X
7 ]; x7 n+ V& Q$ [$ a3 z( ]; U
在某些通信领域,需要处理高速的通信协议,同时通信协议随时都可能修改,不适合做成专门的芯片,FPGA的高速、灵活就便成了首选。5 y6 O$ o+ }. M  p1 X  ?" X5 B
' Q: p- w9 v9 @( D9 _( u# j% I
虽然FPGA功能强大,但实际工程项目中,还需考虑硬件成本、开发难度和市场需求等因素。一些简单的控制场合,尽管FPGA和MCU都能胜任,但MCU价格低廉和研发简单,更划算。
% d; [; o" L, U7 S: v0 p* s) q
% ?  \% I3 r: Y% ]( F. M& E【总结】

* ^! y$ m( b' I  g9 |, z# c% T0 d% v. d9 c, o2 S
如今复杂的嵌入式系统往往是复合架构,比如“MPU+FPGA”、“MPU+DSP”、“MCU+FPGA”、“MCU+DSP”,甚至“MCU +MPU+FPGA+DSP”。控制、显示、通信一般选择MCU或MPU,通信和数据处理算法选择DSP,大量的数据处理和特定实现选择FPGA。
& U  k! l4 J: d  G+ u) w; D: l7 I4 m( o5 e; ~% T0 h, `
MCU开发需要C语言基础,然后学习各类资源、接口,再到RTOS;MPU通常运行Linux,需要Linux基础、操作系统、网络编程等知识;DSP开发需要具备数据信号处理算法的理论知识;FPGA开发需要了解高速接口或音/视处理算法等。6 ~. `0 C7 O  A' x5 E1 S3 G
) h9 b' j0 z0 U- P3 y4 G9 O! i2 u) f
一般来说,MCU相对比较简单,适合作为入门学习,待MCU学习完后,再结合实际情况选择深入学习方向。0 h+ R: L, x6 m) X6 q! Q( F
( s/ k: o, H# H/ g. V: j: y9 @
, W2 ]9 `3 s9 s" ?. F
1.4 ARM开发
4 x0 i8 ?& [$ g
1.4.1 MCU开发和MPU开发, j% ?; x" g( ~- ^6 w3 n
MCU开发就是我们常说的单片机开发,MPU通常运行嵌入式Linux,因此也称为ARM-Linux开发。MCU开发和MPU开发,也就是单片机开发和ARM-Linux开发,两者均可称为嵌入式开发,两者之间既有联系,又有区别。
2 T" j$ z4 c1 s# X3 T, U1 V- O, {2 A8 c: z" R* k
MCU开发人员需要具备C语言、数字电子技术、模拟电子技术、微机原理等相关理论基础,还可能需要电路板绘制等专业技能。涉及电子信息工程、自动化、测量控制等相关专业。3 Z: o6 V. I2 c1 E7 Y: c

4 p: a6 |* ]/ d  y* u& GMCU开发主要涉及的内容包含:GPIO、UART、I2C、SPI、LCD等外设接口,时钟、中断、定时器、ADC/DAC、看门狗等内部资源,以及RTOS(FreeRTOS、RT-Thread、uCOS、LiteOS等)嵌入式实时操作系统。
! s/ v2 y& G$ Y0 w( C/ U) H2 V
5 G. \4 S8 M7 E9 d$ k8 Q7 Q3 NMPU开发人员需要具备、数据结构、操作系统、计算机网络等相关理论基础。涉及计算机科学、软件工程、物联网等相关专业。
# A, [3 s" ~& N' v( a- J* I
, t% W6 o# G/ k; y* }4 f6 k+ A& rMPU开发主要涉及的内容包含:Bootload移植、Linux内核移植、Linux设备驱动开发(GPIO、UART、I2C、SPI等)、Linux应用开发(文件I/O、多任务编程、进程间通信、网络编程、Qt界面设计等),甚至包括Android驱动、Android应用编程。
* Q, G  J$ b+ k) D+ k7 W% Z4 r
& z& `0 E' |. I/ L8 y下表 2.4.1 列举MCU开发和MPU开发的一些区别。MPU开发通常没有仿真器,也没有集成开发环境IDE工具,但MPU资源丰富,反而下载方式比MCU丰富。MCU可以使用仿真器在线调试,也可以使用串口打印调试,而MPU一般只能使用串口调试打印。MCU的启动过程比较简单,而MPU的复杂很多,就Bootloader部分就相当于一个大型MCU开发工程。两者相互补充,占据了嵌入式设备的大部分份额。
0 U$ c9 A! E' `$ Z9 M7 G. Q6 R
$ n* `6 t* W8 A' r1 s 9}AGG6E3NA15JOUS{)$}C66.png   E/ U' x3 |( b& f7 N4 K

4 g2 y. f7 B7 ~5 c表 2.4.1 MCU开发与MPU开发的区别$ h/ e5 x, v: l/ q9 l
7 j" ^/ }" s/ e
1.4.2 开源硬件Arduino和Raspberry Pi6 @; W8 d2 D  U6 g
在开源硬件领域,Arduino和Raspberry Pi(树莓派)都是电子创意设计常用的开发平台和工具。它们使用简单的开发方式,使初学者能快速搭建其创意原型,有效降低了学习难度,缩短了开发周期。如图 2.4.1 所示,为某Arduino开发板(左)和Raspberry Pi 3开发板(右)实物图。- ?( D! Z: w) M  J

% o7 a4 {0 i) U5 t! Q) h BYQP1_4ISQH%]2AM@I$_N`1.png 1 s3 A* `8 u6 ]4 L- x. g5 M( ^
$ o: J4 s, u( D: B  ~% a( [
图 2.4.1 某Arduino开发板(左)和Raspberry Pi 3开发板(右)实物图: u) d8 ?' d; p; w# H+ R
Arduino是一款基于微控制器(MCU)的开发板,它可以运行一些相对比较简单的应用程序,成本低廉,适合用于与传感器、外围电路进行控制和通信。
4 z! E# Q7 V( D; A" ?( [( \" n# |, k* i# D# H
Raspberry Pi是一款基于微处理器(MPU)的开发板,可以看作是一台小型计算机,板载RAM、HDMI接口、USB接口、音频接口、网络接口等。通常运行发行版Linux操作系统,可以运行功能更丰富的应用程序,适合用于一些需要较多运算和功能的项目,比如游戏虚拟机、网页服务器、机器人、家庭智能控制系统等。% s. G8 Z, A* p( k; Z

2 \3 Z1 s, D3 C3 G0 K9 T【总结】

2 ~  y' g/ \) K, c- G: D
0 y' N2 G( C% s+ D5 _MCU开发和MPU的开发模式,差异还是比较大,读者在以后的实际开发中,再慢慢感受理解,这里了解即可。+ A$ C3 I% x# v9 O

7 j4 T# \8 D( r+ ]! `3 G* j开源硬件面向的群体主要还是电子爱好者,帮助他们无需深入了解相关知识的情况下,快速验证自己的创意想法。对于嵌入式开发人员,Arduino过于简单,Raspberry Pi底层不开源,都不适合深入研究,开发人员应选一款采用常见主控芯片设计的开发板进行学习、研究。
+ K: X# y* Z0 {! E/ Y7 q; E  ^* Z
+ |) D) u2 s5 n2 O- v% N
7 u; m% s, X1 c, q2 Y$ X7 W
收藏 评论0 发布时间:2022-4-27 10:22

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版