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

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

[复制链接]
STMCU小助手 发布时间:2022-4-27 10:22
1.1 嵌入式产品实例分析/ a* l7 w6 c2 _; L) i7 X# g, p
嵌入式产品都是围绕应用设计软/硬件,应用的需求直接决定嵌入式处理器的选择。比如简单的智能产品,通常选择8位的单片机(MCU);复杂的智能产品,通常选择32位,甚至64位的MPU;更多的时候,常常MCU和MPU搭配,各自发挥各自的作用。
  f9 F+ ^9 F6 I& L' W
  B  f7 N) E; p0 P. Q& A$ ?, [
0 f0 G) A- d9 ]8 \8 A% C1.1.1 实例一:智能台灯. Q9 d. \  `1 Y5 [! p7 V7 E
该台灯首发价格为399元,月销上万,可以说是一款月流水千万级的产品。相较于传统台灯,主要增加了亮度、色温调节和手机控制,身价也涨了几倍,该智能台灯如图 2.1.1 所示,功能如下:5 b. Q8 v# A( b1 M
  h% y5 M& z' |$ G, w; Q& E1 d
1) 可以根据外部光照情况,自动调整台灯亮度、色温;
. d- y$ }9 t6 L2 d; r0 L" H- N/ k4 c% e
2) 可以手动调节台灯亮度、色温;
6 U. d  @$ ]7 @1 i' A; q
/ g) v+ b9 _* F5 {. d3) 一键切换到读写场景模式和阅屏场景模式;
. u- i2 Y1 D- w* K/ S+ e" d1 O2 ~6 j; M* r% E5 ^* Y# T
4)  支持番茄时钟,每隔25分钟,灯光提醒用户休息;
9 {6 p9 w! m( y4 l
; G- o3 X. w( l  S! ~4 R- W0 N5)  支持手机连接,通过手机或手机语音控制;! D: E+ F4 m2 ~7 {# c2 |9 p! D$ n( S. m
& m1 u8 j8 I0 s" P* W  F
B@RDSB5H20YN1PK}TS5[L6U.png * i0 x. o; J/ O9 \" W
6 m+ ?. w) w% z  Z: N; \  g
图 2.1.1 智能台灯实物图
2 r( X. g, f+ q9 o8 G4 _该智能台灯的底座为控制面板,拆解该底座即可看到内部电路结构,如图 2.1.2 所示。可以看到里面主要有两个芯片,根据芯片上面的丝印标识可知,一个是RTL8710B,一个是SN8F5828FC。
3 g3 u: h0 m( E/ ?. J8 ?
) k* k1 n$ d' {& i- {! W E0A}{N]I]X9{O9BGFB]UY~M.png
. |& i- Q- q4 N( G/ `# w+ Y- x6 c$ @0 ^, ^. y; q! H( V
图 2.1.2 智能台灯底座拆解0 g* o" [) h4 v% |
从互联网搜索“RTL8710B”可知,该模块是一个高集成度低功耗Wi-Fi连接解决方案,里面是一颗瑞昱(Realtek)生产的ARM-Cortex M3架构的32位MCU——RTL8710B。该模块封装好了Wi-Fi协议,用户只需要通过SPI/SDI、I2C或UART与模块连接,即可控制Wi-Fi收发数据。
& a! J- l* k& l0 o2 C, k. E  ~
+ k5 q, V( e. P" u2 D/ x$ B- S从互联网搜索“SN8F5828”可知,该芯片是松翰(Sonix)生产的一款8051架构的8位MCU,通过下载该MCU的芯片手册可知,该MCU有多达14个PWM通道,可用于控制LED灯的亮度,另外还有UART和I2C,可用于与其它模块通信。& @2 d# }* ~) E) {0 n, a

5 O: E9 Y) e. g% P& K3 d) Q根据以上分析,大致猜测该智能台灯的整体设计框图如图 2.1.3 所示。
6 s5 M4 [$ L) i. |9 d  X6 h* G0 t4 I$ x' L  Z
{11G8DDHPZ_]SJ`ELWMNSPY.png
; F. I5 \1 Y5 c3 D% \1 D3 I& c3 e! c. j' u
图 2.1.3 智能台灯系统整体设计框图5 L# }% B8 @( w! |5 }: d
光照传感器会随着外界光照情况变化自身阻值,主控MCU通过ADC获取电压变化,即可得知外部光照变化,控制PWM输出修改占空比,调整亮度和色温;触摸按键按下后,会让主控MCU的GPIO引脚电平产生变化,MCU程序读取GPIO电平获知按键操作,进而控制PWM输出修改占空比,调整亮度和色温;主控MCU先控制Wi-Fi模块连接到互联网,与云端连接,手机APP的按键操作或语音输入转换成对应控制指令发送给云端,云端将指令发送给Wi-Fi模块,再通过UART接口发送给主控MCU,主控MCU解析指令后,控制PWM输出修改占空比,调整亮度和色温;用户通过按键设置为番茄时钟模式,主控MCU则利用自身定时器计算时间,当为25分钟时,控制PWM输出修改占空比,调整亮度和色温。
" v; T( }- d1 i) m$ {3 q0 Q4 @
! l. X$ _+ C2 q" k) K2 V( Z0 }
1.1.2 实例二:智能手环
8 M/ k4 C+ ]1 `; c1 v5 R: O该手环首发价格为299元,作为近几年的热门智能产品,销量可观。如今智能手环主打健康检测,功能全面,因此需要的传感器也越来越多。加上功耗和尺寸的限制,手环的主板集成度越来越高,足以媲美手机内部。该智能手环和内部结构如图 2.1.4 所示,主要功能如下:8 `) E( v: W0 n8 W* v
& s( c& G1 s' G
1) 彩色IPS触摸屏,显示时间、健康信息、设置闹钟;. J6 I- Z& z( A- z* f! R. q5 R

0 o' O5 Q% V- H( o* d. ^- A1 H2) 闹钟、消息震动提醒;
6 D7 G2 d% i1 s4 l" ?) h- L1 S% R' O7 K' Y4 [. @+ f: x5 V
3) 记录跑步数据;* F& u2 }: e! q; R5 i0 U9 r! p

6 z8 m" O4 H6 Q/ C' ?+ d8 Q4) 测量当前心率;
% m, U6 b5 [& Y: c1 C( C0 @! y% F) [  Q9 d9 w
5) NFC刷公交、地铁;. A. ~2 @" p: Z) M

# C4 G. _6 e7 F, j1 x6 S. H  n6) 蓝牙连接手机,进行系统升级或接收手机消息;
! ~1 ^& h+ r0 G4 B0 c! g! S
; Z7 T' V# M! ^. R VN6K}JWTRT_F4{IH9DTB3FC.png + h8 v* O3 a( x+ A1 M( C; i4 R

* U% `' \1 Q: ]8 {. {& {% S图 2.1.4 智能手环外观和内部电路9 _' d3 a3 J2 |% Y6 w3 B4 Y  e
可以看到该智能手环内部芯片非常多,根据上面的丝印可知芯片型号,再搜索对应型号可知每个芯片的作用,这里整理如下。: ^# ]) h5 l  A5 ?" q

; |5 z* }6 J, r9 USTM32L496VG:STMicroelectronics公司产品,ARM Cortex-M4架构的32位MCU,主频可达80 MHz,这里作为整个系统的主控;
6 N$ k5 E8 A6 ~( A- Z, A9 ^7 n* n
# Z: U# E+ R$ }0 L5 R$ U) S- v/ ]* \PN80T:NXP和Garmin联合出品,一款面向可穿戴设备的安全便捷的NFC移动支付芯片,接口为SPI或I2C;
9 b& a2 }. U- ~$ A' x; e3 e6 G0 W0 v1 G, C7 }- t
DA14580:Dialog公司产品,一款ARM Cortex-M0架构的32位低功耗的蓝牙芯片,接口为UART、SPI或I2C;
+ d$ m3 w: A# F
* [- ~( i8 V1 ]0 k" VMAX14745K:Maxim公司产品,一款面向低功耗的可穿戴设备的电池充电管理解决方案芯片,接口为I2C;
* K- ]6 ]. W' f0 h- h
8 X, v4 E" E& I) FAFE4410:TI公司产品,一款用于心率检测的芯片,接口为SPI或I2C;) G2 n9 J& r5 j+ M" `0 t1 P

& z' U- s5 ^. v7 Wl  IQS620:Azoteq公司产品,一款用于接近感应芯片,可检测手环是否佩戴上,接口为I2C;* x) |/ h9 B' a# T$ e, n

( k- l; k0 r( r7 ZLIS3DH:STMicroelectronics公司产品,一款超低功耗的高性能三轴线性加速度计,可检测当前手环的运动状态,接口为SPI或I2C;
" l- E9 O& V5 k/ y
: N6 w7 _2 p8 y0 V" jGD25LQ64CWIG:GigaDevice司产品,一款64M的SPI接口Flash,可用于存储手环的主题数据包、图片数据等;
7 d7 U! G( k9 J: P/ {5 S" ^# q+ J  e& i* @5 ?8 K; w' n) W
根据以上分析,大致猜测该智能手环的整体设计框图如图 2.1.5 所示。
0 |# R9 t/ K, ?& `0 H: Q" n
1 X7 C) l4 o9 B' ?9 o* o $$H`1WEZYKDY}W(P`8$~Q7R.png ; ^( k" a2 p$ B2 _
" {' R! u& G& b% K; n9 c
图 2.1.5 智能手环系统整体设计框图
7 Z+ o, h' A# E- L前面智能台灯,整体框架比较简单,一般MCU运行裸机即可完成任务。智能手环整体框架就比较复杂了,一般都运行有操作系统RTOS。主控STM32L496VG接收来自蓝牙、NFC、三轴加速度计、接近感应传感器、心率传感器和屏幕触摸的数据,通过特地算法整合后,在OLED图形化的展示给用户,与用户之间进行交互。7 d7 i5 b- O2 M  E
, z( o  m& b/ a2 I; [
1.1.3 实例三:电视盒子  e0 N, I( Q* R' Y$ Z
如今家庭电视也朝智能发展,传统电视加上电视盒子,摇身一变为智能电视。目前市面上的电视盒子种类繁多,但其基本功能还是一致的,基本功能如下:1 B$ M/ t) W, r1 i
$ d0 E. g2 ?* M& @) Z* W- Z
1) 高性能的处理器、大存储空间,安装应用程序,播放高清视频;
' E! ]* t* D0 p- D/ I) V5 X5 o5 U& B' ^* p& n0 o
2) 支持有线或无线连接网络,实现在线播放;. g' R- |2 E- a" ?" b, [

% F  b4 b6 a' O- Y1 M* v7 ], z3) 支持HDMI或AV输出音视频;
5 V+ W$ M+ P+ y/ t# j6 y* E& a% n5 p% r- b
4) 支持USB接口;# Q$ ~/ W- V2 a7 K+ b% H1 |
$ ]6 A. W+ l* V+ X7 {  o- U
5) 支持红外遥控;3 n  W. _0 P+ }* t% K
7 N0 k# v5 c5 ]* B$ r
这里拆解某电视盒子,如图 2.1.6 所示内部结构,主要的芯片有四个,整理如下。
# L& I6 C4 }7 F" [- i  V9 S+ j6 _$ ?, U
Hi3798:华为公司产品,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接口等,图中被散热器挡住;9 M: W7 s2 j7 u" S1 j% [

* s( V% v+ i6 I: Z6 iD2516ECMDXGJD:Kingston公司产品,为嵌入式设计的低功耗DRAM,单个256MB,这里有两颗,总计512MB;
/ s, M/ J; Y/ y5 ~7 X- q
& w# g& N! ~/ n, T* A/ T0 USDINBDG4-8G:Sandisk公司产品,高可靠耐用的eMMC闪存芯片,容量为8GB;( \# V  R( F0 l1 }

9 i  }$ D7 |% }& \RTL8822BS:Realtek产品,支持2.4G/5G的双频WiFi&Bluetooth模块,接口为SDIO,图中被屏蔽罩挡住;
1 J/ l1 j7 p* y8 V  b
6 i) u- g) k$ d B%ZDAIXJ8)6%X$PB$_Q0EAD.png
+ r$ W& D! _) S) d4 H$ `7 b) ?: ]' s: n# W# l6 G; g* C, s! A; }
图 2.1.6 电视盒子内部结构' M1 g5 I1 T2 x  S* Y
根据内部结构,猜测该电视盒子的整体设计框图如图 2.1.7 所示。
( c& r1 u1 f  }  K: B5 C" ~
0 `0 |3 h% }+ W( q: j4 R7 m (MMQK8DW]~PA97P_WZOF79C.png
2 C6 a, c! x+ K; j! F- k0 y. t1 ?0 y: j6 p
图 2.1.7 电视盒子系统整体设计框图6 p7 ]* D( l5 H' p7 n
电视盒子的整体框图比较简单,但其难度不低,一般运行Linux/Android系统,无论是软件复杂度还是硬件复杂度,都比一般的MCU项目复杂。MPU性能强大,接口繁多,像有线网口、HDMI接口、AV接口、USB接口都直接支持,这些接口MCU一般都没有。除此之外,MPU项目都外接RAM和Flash,根据项目需求选择合适大小,大小也远超MCU项目。+ h+ U  a: _" `, B4 f$ [
' b# e3 G6 c& t- P; g; i- J
【总结】
1 O! X3 G- e7 V& _9 z8 K$ i0 N" U# Q
以上三个嵌入式产品实例,代表了嵌入式的三个方向。第一个是无操作系统的MCU项目,第二个是运行RTOS的MCU项目,第三个是运行Linux/Android的MPU项目,本手册主要涉及MCU,也就是前两个项目。读者理解了它们的共性,也就理解了什么是嵌入式系统。
9 w! i2 A; f3 L8 H% }
. W# Q' o2 K2 }1) 以应用为中心,以计算机技术为基础,软件/硬件可裁剪,实现应用需要的功能;" I! d3 E; x! f5 e0 U

. `+ q) z8 Q6 q2) 对功能、可靠性、成本、体积、功耗有一定的要求;
) D) {$ N! f7 U4 }
. Y; ?, E' ?/ A% T6 N3) 实现对其它设备进行控制、监视或管理的功能;
; R, `5 A0 H7 M6 d7 Z$ Q) u9 n$ c; N" l- V3 T
4) 简单的说,除了通用计算机(读者使用的电脑)和部分服务器外的一切计算机系统,都是嵌入式系统;+ A4 ?# v7 [- I
! c- H9 @- B: W( ]
1.2 ARM与STM32的关系% h) `/ c1 F$ m  D5 W1 j
1.2.1 ARM介绍
4 c& U, p4 ^8 @4 f; m& }  E$ e1978年,奥地利籍物理学博士Hermann Hauser,和他朋友,一位英国工程师Chris Curry,共同创建了一家名为“Cambridge Processor Unit,CPU”的公司,中文字面意思就是“剑桥处理器单元”,主要从事研发当地电子仪器设备的业务,比如街头游戏机之类的。" L' g1 }  r( e

9 s- @% _! D0 b' X1979年,在经营逐渐进入正规后,原来的公司名不怎么合适了,那个年代喜欢找个吉祥物作为公司名字,比如APPle公司。这俩就以橡子为吉祥物,取名为“Acorn Computer”,中文字面意思就是“橡果电脑”。
. D3 Y" ]* a/ p0 x2 I2 i1 p5 W+ W6 l
1981年,也许是改了公司名字,运气就来了,这一年,公司接到一个大单。英国广播公司BBC,计划在整个英国播放一套电脑普及的教育节目,希望Acron公司可以生产一套配套的电脑,之后英国政府还会海量采购电脑,在各个学校普及。/ I* J3 D" L: `# `: I
! ?- d4 T: J$ D8 i: o
接下这个大单后,Acron公司就开始研发产品了。当时处理器正从8位向16位过渡,他们就去找了美国国家半导体和摩托罗拉公司生产的16位处理器。评估后发现,这些处理器执行上有点慢,中断的响应时间有点长,还有就是太贵,一台电脑才卖500英镑,处理器成本就要100英镑。于是又把目标转向当时如日中天的Intel,希望对方提供一些16位80286处理器的设计资料和样品,然而Intel根本就不理他们。9 o$ f) c$ d( k# z- |% }

! V* L, Y$ h3 z$ n" V最后,Acorn公司没办法,临时采用了便宜的MOS科技生产的8位6502处理器,勉强研发出符合要求的个人电脑BBC Micro。绝处逢生的Acorn公司发现处理器受制于人,为了后面长久的发展,于是决定自己研发处理器。9 c$ a; W0 U+ T' N/ q

- n+ o; K) v* K: aAcorn公司的研发人员从美国加州大学伯克利分校,找到了一个关于新型处理器的研究——简化指令集。在此基础上,历时4年的艰苦奋斗,于1985年完成了微处理器的设计,以后的BBC Micro,都用这颗新处理器。对于这块芯片,Acorn公司给它命名为“Acorn RISC Machine,ARM”,中文字面意思就是“橡果精简指令集机器”,也就是ARM的第一次出现。/ i' A; O- \) X! E5 j! C
& a: Z% y; D& R: _' Y( w8 ~$ d
这里插讲一下简化指令集(Reduced Instruction Set Computer,RISC),与之相对应的就是复杂指令集(Complex Instruction Set Computer,CISC)。早期的处理器都是CISC架构(比如前面Intel处理器),随著时间推移,有越来越多的指令集加入。但是后来人们发现,整个指令集中,只有约20%的指令常常会被使用到,大约占了整个程序内容的80%,而剩余80%的指令,只占了整个程序内容的20%(典型的二八原则)。于是,1979年美国加州大学伯克利分校的DAVid Patterson教授(前面提到的新型处理器研究的作者),提出了RISC的想法,主张硬件专心加速常用的指令,不常用的指令则利用常用的指令去组合。" d* v1 \% }! b+ G, s6 Y0 p9 \

8 J- \7 D* y+ w% e就在同一年,1985年10月,英特尔发布了80386,Acorn公司的ARM芯片被吊打。80386采用CISC技术,所有指令都支持,也就性能更好,但设计成本也高、功耗也大。Acorn公司的ARM芯片采用RISI技术,只支持常用指令,其它指令需要常用指令去组合,性能也就差一些,但成本低、功耗低、研发快。Acorn公司也不傻,性能比不过,就突出成本低,功耗低的优势,总有要求成本低、功耗低,性能要求不高的场景,于是就往我们现在所见的嵌入式方向发展。
. h' i. x9 _. l* a5 t8 d, ]* J) x* w) F
1990年,Acorn公司和APPle公司合作,成立新公司“Advanced RISC Machines,ARM”,中文字面意思就是“高级精简指令集机器”,这就是现在大家常说的ARM公司。
' p5 \# F5 V0 u$ Y5 E9 J2 ^2 R& U8 I/ G- V) Q& ~4 b
成立新公司后的几年,ARM公司业绩平平,危机四起。于是ARM决定改变他们的产品策略,他们不再生产芯片,转而以授权的方式,将芯片设计方案转给其它公司。正是ARM的这种授权模式,极大地降低了自身的研发成本和研发风险。它以风险共担、利益共享的模式,形成了一个以ARM为核心的生态圈,使得低成本创新成为可能。
% w$ `) @' P" _$ w7 j1 |3 Z0 P2 a$ c; U2 H( @. o0 Y1 L
随后,德州仪器(Texas Instruments,TI)、意法半导体(STMicroelectronics,ST)、恩智浦半导体(NXP Semiconductors,NXP)等半导体芯片厂商,相继购买ARM授权,然后根据自身行业需求,设计不同的外设接口的芯片。
/ ^: S. w9 [. b0 P. a6 q" G4 ^; R0 U5 A7 C' z# `
2K97@7~%U9SPOZVUJH[HTFR.png : m$ b4 U4 e. ~; v- q

9 X% {% V$ W1 D  U8 W图 2.2.1 ARM公司发展史. ?% S2 ^" E0 r5 @

' ^! W5 i8 N/ g, X由上总结,ARM具有以下三种含义:, Y4 l6 [# i9 l# D9 ]
% @. P& }) g) ?
1) ARM是一家全球半导体行业技术领先的公司,主要业务是设计RISC嵌入式处理器;
; ]; ]$ t( z; P) O( P0 e: e; z2 \3 F: k5 s, ^/ C( d
2) ARM是一类微处理器芯片或产品的统称,即所有采用ARM公司提供方案开发的RISC处理器;& E% e; L- g9 n" |: ]1 N

, @% H5 n$ Z  u9 r* u3) ARM是一项技术的名称,即采用RISC的处理器体系结构;; R. y5 L( i5 |
! W0 A; |+ m2 v7 R) d
从1985年发布第一个ARM处理器开始,ARM公司不断升级迭代,加入新的指令系统、寄存器组、功能特性,发展出不同架构。早期的经典ARM处理器,架构命名规则比较混乱,现在这些处理器基本不常见了,这里就不展开介绍。从ARMv7开始,采用Cortex命名,将整个处理器分为三大类,如图 2.2.2 所示。2 H* H/ l/ @1 g' j( q* d
7 A8 H: w' q- J! C, C
- i, k( a5 c8 ]2 A
/ y' I/ m$ f- l3 P( I7 Y( h
图 2.2.2 ARM处理器系列
/ s$ ^3 f# u; j, l' f. |, N8 M1 }3 v  _ 1)  ARM Cortex-A:应用程序系列。A表示应用处理器(APPlication Processor),该系列有内存管理单元(Memory Management Uint,MMU),实现虚拟内存,让每个用户进程都拥有自己独立的地址空间,这是现代多用户多进程操作系统(比如Linux、VxWorks)所必须的。该系列适用于高端消费电子领域,比如智能手机、平板电脑、智能电视、路由器等;2 {& O$ J9 w/ C

! e* F. r  G/ B4 [3 I9 k2)  ARM Cortex-R:实时控制系列。R表示实时控制(Real Time Controller),该系列适用于高性能、高实时性应用,比如硬盘/固态驱动控制器、企业网络设备、消费电子领域的蓝光播放器、汽车领域的安全气囊等;
, T. E) A1 e9 d0 A; E  H0 s6 s
3)  ARM Cortex-M:微控制器系列。M表示微控制处理器(Microcontroller Processors),该系列适用于低功耗、高性能且对成本敏感的产品,比如家电产品、物联网、无人机等;
9 r! P; @, y4 P7 o0 k  |0 X9 o
( M0 r( _) j- F5 ]2 H% `2 W
* Y: x+ Q4 f6 Z. N针对不同的应用场景和需求,每个系列还会再细分,比如ARM Cortex-M就再分为ARM Cortex-M0、ARM Cortex-M3、ARM Cortex-M4等,区别如表 2.2.1 所示。5 t0 ~! |4 E: u  N

8 ^. y, H( X4 p' y( i HNCB@L5{FWHMREL}2@DH}ER.png & ?) n4 ?2 `6 |3 ^6 T- ^

* y6 i; e5 Z0 Z表 2.2.1 Cortex-M系列处理器区别
4 `2 v8 r+ f$ s3 v  T5 y- r
' r% Y; J3 P) U9 s' T1.2.2 STM32介绍0 e" _: b" g% @4 J
在2004年,ARM公司推出新一代Cortex内核后,ST公司抓住机遇,在很短的时间内就向市场推出了一系列的32位微控制器,同时提供基于库的开发模式,加快用户研发周期。STM32就是ST公司基于ARM Cortex-M系列内核设计的微控制器,专为高性能、低功耗、低成本场景设计。' \  u' j1 o3 H  O4 F+ X1 W, c
4 }1 p3 r* K8 q$ g5 _3 L
STM32如今产品系列非常丰富,主要为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系列。2 m% E; b! @8 m  u; {

$ Q/ L, w; m0 Z+ D2 h1 c  Y YVTD64]CCB0FU15`@BL82U9.png * P' N2 A; F. u5 W5 |8 t$ K

2 K" A# J& l' c3 ^+ F  Y, I: v: B5 V: p图 2.2.3 STM32系列产品(2020.06)* G0 W+ x! l- i, ]
STM32的处理器种类众多,通过了解STM32的命令规范,可以了解整个STM32家族产品,也方便以后芯片选型,STM32 MCU系列命名规则如图 2.2.4 所示。' {9 @' `8 w" u

; T/ |- u" d! I (KJB9459$Q`[D`E9J[XTDEI.png
' t9 S6 r5 R3 [* M. R9 V0 ~, }2 Y/ E3 t6 V! B) ]5 S6 |
图 2.2.4 STM32芯片命名规则(仅适用于MCU)
5 A$ I' R% a( c1 E4 N* s+ ?& J2 l+ j
: |7 m' @* Z' c. R% p6 Y/ [; R以STM32F103C8T6为例,解析STM32芯片命名规范如表 2.2.2 所示。9 L1 P5 m" W- x

5 f  ^( \* U% S8 m5 C9 @ KPN)BKR{9RK(R]{]PIGATYX.png : j$ F+ U# s) U4 l- w8 l
* D6 z4 F6 d/ @4 I. T7 M
表 2.2.2 STM32F103C8T6各部分含义
* j- F) X$ l: v: U5 V
" f( Q3 @+ O3 ^/ t% O/ V1 F2 Q) ?; d% Y% _4 b3 U3 D! V
【总结】
& N5 k( T: [& }8 W/ r
( ^% H$ k( y1 nARM公司售卖Cortex-M系列的授权,意法半导体(STMicroelectronics,ST)购买了该授权,生产了一些列STM32产品,这些使用ARM技术的处理器,都习惯称为ARM处理器,其中STM32F103C8T6就作为了本手册配套开发板的处理器。! p7 w, [2 G5 P, ]

0 y% {" _% C1 }' N4 l/ a6 b1.3 常见处理器概念3 W8 |6 n9 s* R; {' `
前文中多次出现了MCU、MPU、DSP、FPGA等嵌入式处理器概念,很多初学者可能比较迷惑,下面将对这些概念进行简单介绍。9 T5 }) O' z6 I0 y

% y/ g! L0 m+ P! \1.3.1 MCU
8 z9 o( K# B3 {' }微控制器 (Micro-Controller Unit,MCU),俗称单片机。之所以称之为单片机(Single Chip Microcomputer),是因为不同于其它处理器,它将CPU、RAM(随机存储器)、ROM(只读存储器)、I/O、中断系统、定时器等各种功能外设资源集中到一个芯片上。这个芯片就是一个完整的微型计算机,只需要供电或加上极少的外围电路即可工作。
0 z1 J- B0 w% f$ H% V* J) D5 J3 d3 i. n
常见的MCU有80C51系列单片机、Atmel公司的AVR系列单片机、Microchip公司的PIC系列单片机、TI公司的MSP430系列单片机、ST公司的STM32系列单片机、NXP公司的LPC1700系列单片机。
7 l# x/ V8 z6 {8 S! Q' w. ]1 T8 ]/ g2 ~
早期的MCU主要是8位,后面发展出16位,再到现在主流的已经是32位。此外,主频不断提高、ROM不断增大、外设不断增多,单片机的应用领域和场合越来越大。
3 {6 o- y& O, Y+ r( z
2 X! z% l2 r( U0 R4 l$ D# K, F! c) t9 H3 U1 L2 Q8 n. v- z
1.3.2 MPU

# Z  W- i; o1 M- z微处理器(Micro-Processor Unit,MPU)。类似通用计算机的CPU,主要负责处理计算,需要外加RAM、Flash、电源等电路。( }' s- a4 Q, V( Q! z  K' d4 N

0 [. `0 i8 k! F6 \8 g# L3 iMCU和MPU的本质区别是因为应用场景的定位不同。MPU注重通过相对强大的运算/处理能力,执行复杂多样的大型程序,因此常需要外挂运行内存(RAM)、存储器(Flash)等。MCU注重功能较为单一、价格敏感的应用场景,不需要相对强大的运算/处理能力,更多的是对设备管理/控制,因此不需要大容量的RAM、Flash来运行大型程序,于是将RAM、Flash全集成在一起,大家也就俗称“单片机”,如图 2.3.1 所示。" j! l2 W. Z5 d. \/ s8 c5 p
" x- o; y) s! ]( ~8 k: ?
%Q@OT2V7DHQGLL2B{0UTUUC.png
0 Y' E/ q; s* q$ e; I- O
3 H* f1 ]4 _- @: b图 2.3.1 MPU和MCU的不同结构, p1 \' A  g- Z- Z9 M

5 l# _; C: M/ B/ W6 d6 a  {如今,随着技术的发展,市场及需求的变化,MPU和MCU的界限日趋模糊。高端的32位MCU主频越来越高,已经反超低端MPU主频,MCU也有外挂RAM和Flash的场景,依靠硬件结构去区分逐渐困难。读者可以简单的认为,嵌入式微处理器MPU,通常运行Linux、Android等非实时操作系统,应用在高端应用市场,比如智能手机、路由器等消费电子市场领域,而嵌入式微控制器MCU,常用运行裸机或实时性操作系统,应用在中、低端应用市场,比如家电控制领域、工业控制领域等。
2 g8 _. j; ~! y' y/ \
& g) ?: j. J$ n7 [1.3.3 DSP6 c4 P& B- P* v1 R. J
DSP通常有两个含义。& c) A' x* Q4 Q8 @* s
数字信号处理(Digital Signal Processing,DSP),是一门学科技术,使用数值计算的方式对信号进行加工处理的理论和技术。' a4 g0 p0 q% P. l
数字信号处理器(Digital Signal Processor,DSP),是一种专门用于数字信号处理领域的微处理器芯片。
. E' p" T8 v8 t" k* ~
( ^# t$ w& ^! c' u3 E如图 2.3.2 为TI公司的DSP芯片TMS320VC5509A。9 `  ?/ y: H& _  N5 K

0 r' e6 l9 }+ l ~)G~HFR4QTP5Y3[M76V}F@G.png . W$ z1 l1 }( L4 h" t. E- P4 K8 |$ [
* R0 e5 c8 q3 Y: [- ^; E) X) e0 o! p$ ~
图 2.3.2 DSP芯片
) M! V. `0 v2 `9 Y5 l! U& P" I# ?9 e
DSP芯片为了达到快速处理数字信号处理的目的,采用了许多特殊软硬件结构。首先是采用哈佛结构,将程序和数据分开,同时为处理器提供指令和数据。然后采用多级流水线技术,在指令周期内可以执行更多指令。加上专用的硬件乘法器、特殊的DSP指令,使得DSP芯片在计算处理上,远超同主频的MCU或MPU。* e* {$ e6 D1 j9 o# h

! t5 A, H5 z+ d8 JDSP芯片拥有强大的数据处理能力,在数字信号处理领域,如调制/解调、数据加密/解密、图形处理、数字滤波、音频处理等计算密集型的场景广泛应用。
2 {+ m7 Q0 r7 f6 |- w7 H
5 z# J4 P* o2 |% `( q7 t1.3.4 FPGA

" j6 D# v7 [3 R# h3 ]- {: o# b现场可编程门阵列(Field-Programmable Gate Array,FPGA),由可编程互连连接的可配置逻辑块 (CLB) 矩阵构成的半导体器件。通俗地说,FPGA就是一个可以通过编程改变内部硬件结构,实现所需功能的芯片。前面的MCU、DSP等都是硬件资源固定,只能通过修改软件实现所需功能。而FPGA是通过硬件描述语言或其它方式修改硬件,将FPGA变为CPU或专用芯片,来实现控制或算法。因此,MCU、DSP能够实现的功能,FPGA理论上都可以实现,反之则不一定。如图 2.3.3 为Xilinx公司的FPGA芯片XC3S400A。( U' ~' M* F: K. c, @
9 B: T5 M7 Y; r$ ]- T
@_LUXFSUFM0G@)]MLQQM{XO.png * d3 X" V0 I9 ]* I2 v6 h

9 c$ ~; S& `+ U8 X2 u6 t" K& K图 2.3.3 FPGA芯片, w! ]( H( [- ~' t# [
FPGA主要有两大优势:高速和灵活。FPGA使用硬件处理数据,采用并发和流水技术,多个模块之间可以同时并行执行。FPGA可以根据现场情况配置器件功能,能够在技术和需求变化时重新配置,实现系统优化升级。
: h( n+ h* w/ X) p5 {& r+ B3 n/ C) P# o* @# w( C) q) L( t8 k* F( B
在某些通信领域,需要处理高速的通信协议,同时通信协议随时都可能修改,不适合做成专门的芯片,FPGA的高速、灵活就便成了首选。
  j6 J- W: J; {) z; J2 \7 S# `( G: X- b7 a* n
虽然FPGA功能强大,但实际工程项目中,还需考虑硬件成本、开发难度和市场需求等因素。一些简单的控制场合,尽管FPGA和MCU都能胜任,但MCU价格低廉和研发简单,更划算。
0 i7 |% _& F0 Q
/ W* T4 l& j: D# ~1 o【总结】
/ I. _# N, w0 k
& ]3 {% }6 ^8 Z2 H5 H1 o: e
如今复杂的嵌入式系统往往是复合架构,比如“MPU+FPGA”、“MPU+DSP”、“MCU+FPGA”、“MCU+DSP”,甚至“MCU +MPU+FPGA+DSP”。控制、显示、通信一般选择MCU或MPU,通信和数据处理算法选择DSP,大量的数据处理和特定实现选择FPGA。$ Y& w" F6 O* U% t  D  ^2 {# O7 ~

! S6 i) a& W2 F4 x3 \1 X4 xMCU开发需要C语言基础,然后学习各类资源、接口,再到RTOS;MPU通常运行Linux,需要Linux基础、操作系统、网络编程等知识;DSP开发需要具备数据信号处理算法的理论知识;FPGA开发需要了解高速接口或音/视处理算法等。
5 O1 T: `9 u9 m! A8 x8 N1 |% S7 S) i3 ^7 c# i, D
一般来说,MCU相对比较简单,适合作为入门学习,待MCU学习完后,再结合实际情况选择深入学习方向。5 O1 ^6 z0 N- i

9 J! x* g: Y. v9 M2 ?: j$ x* }* Y, t8 x  e9 Q5 j( \
1.4 ARM开发

6 W; P# |, D: J1.4.1 MCU开发和MPU开发  I- z6 l$ B) Q" V# c
MCU开发就是我们常说的单片机开发,MPU通常运行嵌入式Linux,因此也称为ARM-Linux开发。MCU开发和MPU开发,也就是单片机开发和ARM-Linux开发,两者均可称为嵌入式开发,两者之间既有联系,又有区别。
( e+ j/ h; t5 v+ u
0 _; a$ [# ~" I1 ?# xMCU开发人员需要具备C语言、数字电子技术、模拟电子技术、微机原理等相关理论基础,还可能需要电路板绘制等专业技能。涉及电子信息工程、自动化、测量控制等相关专业。3 J$ r6 y4 n4 q1 L) o

/ C6 k, @* I: x1 L' o) wMCU开发主要涉及的内容包含:GPIO、UART、I2C、SPI、LCD等外设接口,时钟、中断、定时器、ADC/DAC、看门狗等内部资源,以及RTOS(FreeRTOS、RT-Thread、uCOS、LiteOS等)嵌入式实时操作系统。
0 t( Z) u& Q+ L% X) h' \- k- v' B* _( P% b3 P: j' P. u
MPU开发人员需要具备、数据结构、操作系统、计算机网络等相关理论基础。涉及计算机科学、软件工程、物联网等相关专业。
* L" v* T) q) y
1 T! \6 M7 R# G0 c4 oMPU开发主要涉及的内容包含:Bootload移植、Linux内核移植、Linux设备驱动开发(GPIO、UART、I2C、SPI等)、Linux应用开发(文件I/O、多任务编程、进程间通信、网络编程、Qt界面设计等),甚至包括Android驱动、Android应用编程。2 u8 ^, F: O. C" X, ]2 B
5 f/ i8 {: s: l
下表 2.4.1 列举MCU开发和MPU开发的一些区别。MPU开发通常没有仿真器,也没有集成开发环境IDE工具,但MPU资源丰富,反而下载方式比MCU丰富。MCU可以使用仿真器在线调试,也可以使用串口打印调试,而MPU一般只能使用串口调试打印。MCU的启动过程比较简单,而MPU的复杂很多,就Bootloader部分就相当于一个大型MCU开发工程。两者相互补充,占据了嵌入式设备的大部分份额。
0 r4 @3 Q; |, X+ N. ~% a
0 t! z9 n$ |2 z3 m% L0 v( I 9}AGG6E3NA15JOUS{)$}C66.png 8 {9 h4 O: I% V
9 d) P  o5 Z. O
表 2.4.1 MCU开发与MPU开发的区别1 e4 T; V" ~- k# _
6 v, }" _1 G* j- W3 m9 W
1.4.2 开源硬件Arduino和Raspberry Pi
3 c% e% f5 S6 l  W5 q5 f4 j在开源硬件领域,Arduino和Raspberry Pi(树莓派)都是电子创意设计常用的开发平台和工具。它们使用简单的开发方式,使初学者能快速搭建其创意原型,有效降低了学习难度,缩短了开发周期。如图 2.4.1 所示,为某Arduino开发板(左)和Raspberry Pi 3开发板(右)实物图。
8 T  |! i) S0 `$ X
( Y+ H+ e' g" w7 D0 t9 C BYQP1_4ISQH%]2AM@I$_N`1.png , R0 o' |' v' {- y0 w; {
1 A$ _8 R1 B4 a% ~' l
图 2.4.1 某Arduino开发板(左)和Raspberry Pi 3开发板(右)实物图8 r9 E# f, q0 Y  k" ]4 w3 p3 O
Arduino是一款基于微控制器(MCU)的开发板,它可以运行一些相对比较简单的应用程序,成本低廉,适合用于与传感器、外围电路进行控制和通信。
7 _& m( y( O  o5 F$ O( F' q+ W/ r% U/ j0 B
Raspberry Pi是一款基于微处理器(MPU)的开发板,可以看作是一台小型计算机,板载RAM、HDMI接口、USB接口、音频接口、网络接口等。通常运行发行版Linux操作系统,可以运行功能更丰富的应用程序,适合用于一些需要较多运算和功能的项目,比如游戏虚拟机、网页服务器、机器人、家庭智能控制系统等。
4 }5 S  }, f) L, o  m
0 V  e; {4 {& C, k8 Q6 C/ @【总结】
: e8 u- E5 e5 P1 v- }, p& L
. h- Q& x4 G( t; G; I# M- z
MCU开发和MPU的开发模式,差异还是比较大,读者在以后的实际开发中,再慢慢感受理解,这里了解即可。1 y5 v/ l5 l. |
9 v/ g- U9 Y$ A
开源硬件面向的群体主要还是电子爱好者,帮助他们无需深入了解相关知识的情况下,快速验证自己的创意想法。对于嵌入式开发人员,Arduino过于简单,Raspberry Pi底层不开源,都不适合深入研究,开发人员应选一款采用常见主控芯片设计的开发板进行学习、研究。   q3 q( B- U" j# P
: D) i8 `/ ^2 p
+ h4 N- _; C* O( K2 Q/ ]
收藏 评论0 发布时间:2022-4-27 10:22

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版