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

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

[复制链接]
STMCU小助手 发布时间:2022-4-27 10:22
1.1 嵌入式产品实例分析
/ b7 ~# R2 j6 b$ y: k* X0 V" i嵌入式产品都是围绕应用设计软/硬件,应用的需求直接决定嵌入式处理器的选择。比如简单的智能产品,通常选择8位的单片机(MCU);复杂的智能产品,通常选择32位,甚至64位的MPU;更多的时候,常常MCU和MPU搭配,各自发挥各自的作用。# ~7 ^8 |% s" p
( W9 ]  m( \# p

* k7 q( N- x  X# S1.1.1 实例一:智能台灯: t* a/ q% Y6 _
该台灯首发价格为399元,月销上万,可以说是一款月流水千万级的产品。相较于传统台灯,主要增加了亮度、色温调节和手机控制,身价也涨了几倍,该智能台灯如图 2.1.1 所示,功能如下:
6 Y& Q8 e3 h2 i" D6 i/ a6 D$ E, d. a# [% _" i- c6 [
1) 可以根据外部光照情况,自动调整台灯亮度、色温;
1 ~8 I  y& e( b$ j) v5 U9 v
" k- c( i1 t" Q( w4 d' u) m* Y' O2) 可以手动调节台灯亮度、色温;
$ F& j: Z' T7 A& m3 ^# F" r  G7 U# W& L5 d
3) 一键切换到读写场景模式和阅屏场景模式;8 A* A4 ^1 [% i, Y, b

, U) c% N" O5 y4)  支持番茄时钟,每隔25分钟,灯光提醒用户休息;
2 X* m, X$ ]/ e8 K/ L9 F3 S8 H: }$ w& U9 h- ]; h
5)  支持手机连接,通过手机或手机语音控制;
" n& i: g+ M- m
) H, x% v" Q& Y1 X3 R B@RDSB5H20YN1PK}TS5[L6U.png
2 S: P  D$ t6 o4 x
+ p5 J2 }: B: x6 k1 u3 r& J1 O! v( x图 2.1.1 智能台灯实物图
& t: r2 |% \3 y% p2 \" c该智能台灯的底座为控制面板,拆解该底座即可看到内部电路结构,如图 2.1.2 所示。可以看到里面主要有两个芯片,根据芯片上面的丝印标识可知,一个是RTL8710B,一个是SN8F5828FC。, i: I$ [$ _' H4 h
) v0 q! C' Q3 ?. m; `) Q$ P
E0A}{N]I]X9{O9BGFB]UY~M.png ; G' C2 i! w0 C) F+ ?, k
! q$ c* v: M2 P- {& P4 F' P. r
图 2.1.2 智能台灯底座拆解9 e' Z8 I. |' w+ J
从互联网搜索“RTL8710B”可知,该模块是一个高集成度低功耗Wi-Fi连接解决方案,里面是一颗瑞昱(Realtek)生产的ARM-Cortex M3架构的32位MCU——RTL8710B。该模块封装好了Wi-Fi协议,用户只需要通过SPI/SDI、I2C或UART与模块连接,即可控制Wi-Fi收发数据。
4 H6 U$ g. ?0 I
6 _8 @. u2 s( }% ~- B! _& x从互联网搜索“SN8F5828”可知,该芯片是松翰(Sonix)生产的一款8051架构的8位MCU,通过下载该MCU的芯片手册可知,该MCU有多达14个PWM通道,可用于控制LED灯的亮度,另外还有UART和I2C,可用于与其它模块通信。! J$ V2 N  ~$ I' ^% v

& ?$ E# z$ J* j3 C根据以上分析,大致猜测该智能台灯的整体设计框图如图 2.1.3 所示。' n* X) ^/ S, s, c5 l: b5 K, d* ]2 [
8 ]% T  R* Q: r3 \1 f8 s
{11G8DDHPZ_]SJ`ELWMNSPY.png
; M5 F6 q5 p% q0 A0 B& m; |& [4 t# }0 Y: ?
图 2.1.3 智能台灯系统整体设计框图
2 w6 d! J7 q, L3 O+ X 光照传感器会随着外界光照情况变化自身阻值,主控MCU通过ADC获取电压变化,即可得知外部光照变化,控制PWM输出修改占空比,调整亮度和色温;触摸按键按下后,会让主控MCU的GPIO引脚电平产生变化,MCU程序读取GPIO电平获知按键操作,进而控制PWM输出修改占空比,调整亮度和色温;主控MCU先控制Wi-Fi模块连接到互联网,与云端连接,手机APP的按键操作或语音输入转换成对应控制指令发送给云端,云端将指令发送给Wi-Fi模块,再通过UART接口发送给主控MCU,主控MCU解析指令后,控制PWM输出修改占空比,调整亮度和色温;用户通过按键设置为番茄时钟模式,主控MCU则利用自身定时器计算时间,当为25分钟时,控制PWM输出修改占空比,调整亮度和色温。
* U( V* P, E5 U: J6 P2 a8 q& S" g! c  u
7 t  B4 w: ]9 v: A
1.1.2 实例二:智能手环
2 M4 Z8 U- S; k( ^9 ]% [该手环首发价格为299元,作为近几年的热门智能产品,销量可观。如今智能手环主打健康检测,功能全面,因此需要的传感器也越来越多。加上功耗和尺寸的限制,手环的主板集成度越来越高,足以媲美手机内部。该智能手环和内部结构如图 2.1.4 所示,主要功能如下:4 x" T4 a/ \1 J( }* \

  A$ l' Z! Z( w1) 彩色IPS触摸屏,显示时间、健康信息、设置闹钟;% t. B) S" U7 @1 G' N0 W% r

7 s6 u: o# B- Q4 i2) 闹钟、消息震动提醒;* H; y( D3 c. A  _" ]

3 d. c5 R) }  p/ d+ U3) 记录跑步数据;
- [# ^7 M" O& Q! V% L
% ^# N3 v0 u/ W! D! T5 x* [4) 测量当前心率;
3 Y& [5 f* b( e5 p9 k+ a4 M( V) S
/ V+ a$ r. c# z9 O5) NFC刷公交、地铁;' ]& b6 T3 n0 G* M

3 E. |& K5 S, q6) 蓝牙连接手机,进行系统升级或接收手机消息;. [/ m" a* [, I! X- q
, b2 X7 z; U9 V# @
VN6K}JWTRT_F4{IH9DTB3FC.png $ y0 S7 q4 v8 l2 v

9 r0 ], T- X7 }& m$ T6 J图 2.1.4 智能手环外观和内部电路- ^1 m+ k' Z) }. j6 D4 l
可以看到该智能手环内部芯片非常多,根据上面的丝印可知芯片型号,再搜索对应型号可知每个芯片的作用,这里整理如下。; u: i3 D! W/ _2 J7 f  m
0 R# a$ O! Y- I4 B+ ^
STM32L496VG:STMicroelectronics公司产品,ARM Cortex-M4架构的32位MCU,主频可达80 MHz,这里作为整个系统的主控;, D1 _" a2 a' ^

8 |6 Z% `! O# p8 e+ WPN80T:NXP和Garmin联合出品,一款面向可穿戴设备的安全便捷的NFC移动支付芯片,接口为SPI或I2C;
6 `7 J( ]6 T/ {9 c* Z( y0 m( \" w, T5 Y( @
DA14580:Dialog公司产品,一款ARM Cortex-M0架构的32位低功耗的蓝牙芯片,接口为UART、SPI或I2C;
5 B0 ?) |9 \& k1 ^, `8 R6 j' k: n7 |! t5 `5 n
MAX14745K:Maxim公司产品,一款面向低功耗的可穿戴设备的电池充电管理解决方案芯片,接口为I2C;
$ f4 j% u. Z$ i% ]4 T% ^0 i; ~) ?9 w, I3 ~0 I1 ^& _
AFE4410:TI公司产品,一款用于心率检测的芯片,接口为SPI或I2C;
: }5 e- s/ ]7 u0 V
* k1 H  J4 u3 Ql  IQS620:Azoteq公司产品,一款用于接近感应芯片,可检测手环是否佩戴上,接口为I2C;
& P* u3 P% J/ a1 {) B; K4 }& w# f
+ g$ ]* t: y  DLIS3DH:STMicroelectronics公司产品,一款超低功耗的高性能三轴线性加速度计,可检测当前手环的运动状态,接口为SPI或I2C;
3 P$ o: _, {/ ?+ S9 l9 v! G8 [: _9 [+ o0 n
GD25LQ64CWIG:GigaDevice司产品,一款64M的SPI接口Flash,可用于存储手环的主题数据包、图片数据等;
' `- p( v1 Y. T3 U1 b
3 J' g, o" n8 K- l6 A根据以上分析,大致猜测该智能手环的整体设计框图如图 2.1.5 所示。
! E- i+ t6 `. Q7 Q) _. x/ ^8 k# T8 W, M
$$H`1WEZYKDY}W(P`8$~Q7R.png ; Q; L3 T. _1 O4 ~+ `, P# g9 X

' [# U6 `! y! u- \. W" a图 2.1.5 智能手环系统整体设计框图; F" }  A; u8 H9 P7 Q5 [+ C* ^
前面智能台灯,整体框架比较简单,一般MCU运行裸机即可完成任务。智能手环整体框架就比较复杂了,一般都运行有操作系统RTOS。主控STM32L496VG接收来自蓝牙、NFC、三轴加速度计、接近感应传感器、心率传感器和屏幕触摸的数据,通过特地算法整合后,在OLED图形化的展示给用户,与用户之间进行交互。
- ~7 _6 [2 p+ y  f$ O3 \9 w5 e
* p' @0 ]* j; R1 k8 V. W9 ]$ i1.1.3 实例三:电视盒子
+ c% G8 ~* Y2 q# W. {如今家庭电视也朝智能发展,传统电视加上电视盒子,摇身一变为智能电视。目前市面上的电视盒子种类繁多,但其基本功能还是一致的,基本功能如下:
' t- ~. m# X  `' r  f6 Z* J% I8 k! o( W' G1 [
1) 高性能的处理器、大存储空间,安装应用程序,播放高清视频;: }9 [' v4 u- n& {
+ ?# h0 m; H/ B* u: J  W: e8 T8 P
2) 支持有线或无线连接网络,实现在线播放;
. S; v7 M' S+ {" j: t. x, m+ r% v' c
$ R8 Z; w+ }5 ~+ i' u3) 支持HDMI或AV输出音视频;1 B/ S+ u- J' P& r

  }# s7 A3 _% Z4 E( x4) 支持USB接口;
0 [* d* Y: h1 i6 _5 u' t/ w5 N9 }# H2 [4 s# t
5) 支持红外遥控;
- h8 Q- t* T, j/ N# q6 ~: z- y# [7 p" B- m, R% T# e
这里拆解某电视盒子,如图 2.1.6 所示内部结构,主要的芯片有四个,整理如下。
, l3 q. w  Y# S  x- V7 v6 I0 D2 _* ]. w# Q- @( m  G8 I2 @
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接口等,图中被散热器挡住;( |% m$ c- B7 K8 W# s
. g# h/ f% m" v0 _- |* z
D2516ECMDXGJD:Kingston公司产品,为嵌入式设计的低功耗DRAM,单个256MB,这里有两颗,总计512MB;" \) P& t! R3 Q9 a+ [
4 L$ B8 W- O$ u, B. y
SDINBDG4-8G:Sandisk公司产品,高可靠耐用的eMMC闪存芯片,容量为8GB;
" ^! o/ K, g8 B3 V# {  E. j' R: G; O" e% k' M
RTL8822BS:Realtek产品,支持2.4G/5G的双频WiFi&Bluetooth模块,接口为SDIO,图中被屏蔽罩挡住;  Y6 E  L: s* u9 q. S3 L1 L
& b5 ^7 I1 S4 T; b! a. V" k: j
B%ZDAIXJ8)6%X$PB$_Q0EAD.png
! e) i+ z5 |, A, h& a; t8 o5 l
5 D/ z$ M9 v; l, e1 G1 M& T图 2.1.6 电视盒子内部结构
$ O; K8 a, }8 }! P! q( N$ t8 J# r根据内部结构,猜测该电视盒子的整体设计框图如图 2.1.7 所示。
$ j, R* B8 g/ \8 K5 P) n  g2 K) x$ Y$ _$ r1 D
(MMQK8DW]~PA97P_WZOF79C.png
$ S5 @1 v) ^1 Q) h6 x6 O- S4 n8 Q# F( q
图 2.1.7 电视盒子系统整体设计框图1 }1 V3 y/ U/ A* R9 ^) y/ y' j0 p- T
电视盒子的整体框图比较简单,但其难度不低,一般运行Linux/Android系统,无论是软件复杂度还是硬件复杂度,都比一般的MCU项目复杂。MPU性能强大,接口繁多,像有线网口、HDMI接口、AV接口、USB接口都直接支持,这些接口MCU一般都没有。除此之外,MPU项目都外接RAM和Flash,根据项目需求选择合适大小,大小也远超MCU项目。# ?) O6 q# g( \* e

" H- l/ E* s) q: p( Z【总结】
4 ^/ l) q6 w1 v% ~
3 ?$ k' `3 l+ }' Y! c以上三个嵌入式产品实例,代表了嵌入式的三个方向。第一个是无操作系统的MCU项目,第二个是运行RTOS的MCU项目,第三个是运行Linux/Android的MPU项目,本手册主要涉及MCU,也就是前两个项目。读者理解了它们的共性,也就理解了什么是嵌入式系统。
1 f8 b3 @! Q7 r7 _" S$ c
' \; h# R8 k  W  I5 l$ V1) 以应用为中心,以计算机技术为基础,软件/硬件可裁剪,实现应用需要的功能;
6 I* ~7 S% l, n+ M
7 n" {# A( I+ I3 Y: D2) 对功能、可靠性、成本、体积、功耗有一定的要求;
. ^) }6 |0 A1 \  ~8 x' J4 P  t" o9 O  C3 n
3) 实现对其它设备进行控制、监视或管理的功能;
" Y: `3 n9 M# ~  D% g: f8 J2 r+ v" s+ B- m  b% N: @
4) 简单的说,除了通用计算机(读者使用的电脑)和部分服务器外的一切计算机系统,都是嵌入式系统;. g: P( @6 C* T" `: Z' [% D# L

& [0 G7 k# ^# l1.2 ARM与STM32的关系; x7 P2 j: {- l2 J0 R& l+ r. l% ^
1.2.1 ARM介绍
6 A4 L6 ^% A5 G( L* x' B% X1978年,奥地利籍物理学博士Hermann Hauser,和他朋友,一位英国工程师Chris Curry,共同创建了一家名为“Cambridge Processor Unit,CPU”的公司,中文字面意思就是“剑桥处理器单元”,主要从事研发当地电子仪器设备的业务,比如街头游戏机之类的。* X: O. U4 L4 ~
' `3 l4 q4 b% n$ T9 a1 r! K
1979年,在经营逐渐进入正规后,原来的公司名不怎么合适了,那个年代喜欢找个吉祥物作为公司名字,比如APPle公司。这俩就以橡子为吉祥物,取名为“Acorn Computer”,中文字面意思就是“橡果电脑”。
. t$ @8 @" z$ t" _% A9 O+ f# j: t2 L0 r6 v/ B, J# H# y, p
1981年,也许是改了公司名字,运气就来了,这一年,公司接到一个大单。英国广播公司BBC,计划在整个英国播放一套电脑普及的教育节目,希望Acron公司可以生产一套配套的电脑,之后英国政府还会海量采购电脑,在各个学校普及。
6 e) s1 @( C/ ^  k
" K; ?+ R' j' M/ Q/ z接下这个大单后,Acron公司就开始研发产品了。当时处理器正从8位向16位过渡,他们就去找了美国国家半导体和摩托罗拉公司生产的16位处理器。评估后发现,这些处理器执行上有点慢,中断的响应时间有点长,还有就是太贵,一台电脑才卖500英镑,处理器成本就要100英镑。于是又把目标转向当时如日中天的Intel,希望对方提供一些16位80286处理器的设计资料和样品,然而Intel根本就不理他们。
- h4 Y3 v# H$ @7 V5 B# L, t9 R: }$ T- r$ v/ n3 ]+ {
最后,Acorn公司没办法,临时采用了便宜的MOS科技生产的8位6502处理器,勉强研发出符合要求的个人电脑BBC Micro。绝处逢生的Acorn公司发现处理器受制于人,为了后面长久的发展,于是决定自己研发处理器。4 V5 Z1 |8 Q) c9 j, A( Z

1 S2 S" q7 K) d+ Z6 l/ l8 `* fAcorn公司的研发人员从美国加州大学伯克利分校,找到了一个关于新型处理器的研究——简化指令集。在此基础上,历时4年的艰苦奋斗,于1985年完成了微处理器的设计,以后的BBC Micro,都用这颗新处理器。对于这块芯片,Acorn公司给它命名为“Acorn RISC Machine,ARM”,中文字面意思就是“橡果精简指令集机器”,也就是ARM的第一次出现。
0 u# [# M# Q8 k" B& h" e5 C- k" W9 I) x
这里插讲一下简化指令集(Reduced Instruction Set Computer,RISC),与之相对应的就是复杂指令集(Complex Instruction Set Computer,CISC)。早期的处理器都是CISC架构(比如前面Intel处理器),随著时间推移,有越来越多的指令集加入。但是后来人们发现,整个指令集中,只有约20%的指令常常会被使用到,大约占了整个程序内容的80%,而剩余80%的指令,只占了整个程序内容的20%(典型的二八原则)。于是,1979年美国加州大学伯克利分校的DAVid Patterson教授(前面提到的新型处理器研究的作者),提出了RISC的想法,主张硬件专心加速常用的指令,不常用的指令则利用常用的指令去组合。6 o" Z) n& J; v

( b. t( _+ y* s2 e* q就在同一年,1985年10月,英特尔发布了80386,Acorn公司的ARM芯片被吊打。80386采用CISC技术,所有指令都支持,也就性能更好,但设计成本也高、功耗也大。Acorn公司的ARM芯片采用RISI技术,只支持常用指令,其它指令需要常用指令去组合,性能也就差一些,但成本低、功耗低、研发快。Acorn公司也不傻,性能比不过,就突出成本低,功耗低的优势,总有要求成本低、功耗低,性能要求不高的场景,于是就往我们现在所见的嵌入式方向发展。$ x$ e; G; V( d' P% n) U

4 q1 o- M/ _7 E8 t; K4 ^1990年,Acorn公司和APPle公司合作,成立新公司“Advanced RISC Machines,ARM”,中文字面意思就是“高级精简指令集机器”,这就是现在大家常说的ARM公司。
9 U; f! z7 K6 A+ Z' M' ?9 M9 q# S0 z+ z0 y- t+ }0 g+ x
成立新公司后的几年,ARM公司业绩平平,危机四起。于是ARM决定改变他们的产品策略,他们不再生产芯片,转而以授权的方式,将芯片设计方案转给其它公司。正是ARM的这种授权模式,极大地降低了自身的研发成本和研发风险。它以风险共担、利益共享的模式,形成了一个以ARM为核心的生态圈,使得低成本创新成为可能。. [$ N. D4 Q; K. F* N8 B
0 s; o' ?5 I0 o' R
随后,德州仪器(Texas Instruments,TI)、意法半导体(STMicroelectronics,ST)、恩智浦半导体(NXP Semiconductors,NXP)等半导体芯片厂商,相继购买ARM授权,然后根据自身行业需求,设计不同的外设接口的芯片。
8 Q8 J$ N0 K3 D$ f
+ q$ o5 v0 R! L. e6 l4 X0 n% C5 O" \4 ~ 2K97@7~%U9SPOZVUJH[HTFR.png ) O# e) W; g4 ^, E7 G
7 _% u# \( K' \- o5 l" A
图 2.2.1 ARM公司发展史
3 p% ^/ [) q5 r# ?. r8 e+ p7 q& i& p' j6 `) g
由上总结,ARM具有以下三种含义:+ w6 _9 D7 x( c/ i. v: G
( j, m( K$ y+ `' Y$ w
1) ARM是一家全球半导体行业技术领先的公司,主要业务是设计RISC嵌入式处理器;
* E$ I& u1 ~2 C
! N; H  ~% C5 W( b( E( P: }( n2) ARM是一类微处理器芯片或产品的统称,即所有采用ARM公司提供方案开发的RISC处理器;( D+ G) O5 V2 a" G
  U+ o" {# r6 ^& w! ~
3) ARM是一项技术的名称,即采用RISC的处理器体系结构;
' g0 z+ Q3 j! f6 Q7 l" n1 F8 K* x# t  X5 K- g3 B  o) l$ R
从1985年发布第一个ARM处理器开始,ARM公司不断升级迭代,加入新的指令系统、寄存器组、功能特性,发展出不同架构。早期的经典ARM处理器,架构命名规则比较混乱,现在这些处理器基本不常见了,这里就不展开介绍。从ARMv7开始,采用Cortex命名,将整个处理器分为三大类,如图 2.2.2 所示。
9 w4 B# R; a$ n/ c. N4 Y! U3 N; D/ Z% y, o* o
5 J& H/ [. ^1 I

0 A" x& d6 f) \图 2.2.2 ARM处理器系列
* x6 m5 `0 x3 \# U0 \1 ~ 1)  ARM Cortex-A:应用程序系列。A表示应用处理器(APPlication Processor),该系列有内存管理单元(Memory Management Uint,MMU),实现虚拟内存,让每个用户进程都拥有自己独立的地址空间,这是现代多用户多进程操作系统(比如Linux、VxWorks)所必须的。该系列适用于高端消费电子领域,比如智能手机、平板电脑、智能电视、路由器等;
' F, G" q" V. b/ f; t: `  h* I& m( q2 R# D8 I6 g# D
2)  ARM Cortex-R:实时控制系列。R表示实时控制(Real Time Controller),该系列适用于高性能、高实时性应用,比如硬盘/固态驱动控制器、企业网络设备、消费电子领域的蓝光播放器、汽车领域的安全气囊等;
; W1 ]% x) F+ S  y, P# l5 G
# `1 @1 n* I4 X3)  ARM Cortex-M:微控制器系列。M表示微控制处理器(Microcontroller Processors),该系列适用于低功耗、高性能且对成本敏感的产品,比如家电产品、物联网、无人机等;
; d: l, q# y: H/ B+ K' Z& H  i7 N, A4 ]& n6 a6 J5 J0 U$ O, }

. O0 [9 a* c2 o" n. E& J; [  F. C针对不同的应用场景和需求,每个系列还会再细分,比如ARM Cortex-M就再分为ARM Cortex-M0、ARM Cortex-M3、ARM Cortex-M4等,区别如表 2.2.1 所示。: ]+ D4 R/ `8 b/ Z, F

$ p( I$ R' e1 E4 w HNCB@L5{FWHMREL}2@DH}ER.png
- g! d# j$ ?! O! b: L+ F" C. p4 {6 F  m0 ]
表 2.2.1 Cortex-M系列处理器区别* q; A% W* R+ r( Y9 Y$ q) C# c4 ~5 y1 ?+ r

; [' z6 E/ P+ A! F/ x6 u+ b1.2.2 STM32介绍, z# L4 W% R( T7 a
在2004年,ARM公司推出新一代Cortex内核后,ST公司抓住机遇,在很短的时间内就向市场推出了一系列的32位微控制器,同时提供基于库的开发模式,加快用户研发周期。STM32就是ST公司基于ARM Cortex-M系列内核设计的微控制器,专为高性能、低功耗、低成本场景设计。1 B2 y- I) k% c* |4 _

9 }# h' q7 v/ d% ~" SSTM32如今产品系列非常丰富,主要为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系列。
5 |/ r4 l/ I3 Q) K& M/ E3 _4 f# g
" q* G4 u% O$ H. G! y" I YVTD64]CCB0FU15`@BL82U9.png
5 Y' z, N$ a0 R% {+ f1 M; r3 c% v; M
图 2.2.3 STM32系列产品(2020.06)2 |; i  n7 r9 R2 x& z* X4 R* c
STM32的处理器种类众多,通过了解STM32的命令规范,可以了解整个STM32家族产品,也方便以后芯片选型,STM32 MCU系列命名规则如图 2.2.4 所示。' S" F7 n3 y7 [- G. F0 b4 j
* X7 g4 O' L1 s8 a
(KJB9459$Q`[D`E9J[XTDEI.png
' H: _3 m4 Z  r; N0 u' U
3 a8 q& K2 V+ I6 a图 2.2.4 STM32芯片命名规则(仅适用于MCU)  G6 n( Z) N  V* T% t

$ B( `/ j" ]. T以STM32F103C8T6为例,解析STM32芯片命名规范如表 2.2.2 所示。6 M" ^" f* J4 u$ d6 r
4 w2 k) ^" ^! I* o
KPN)BKR{9RK(R]{]PIGATYX.png
& F" A9 `7 q9 T- }( @( {0 \* U
* f$ u3 x3 S# Q% L0 }; v表 2.2.2 STM32F103C8T6各部分含义
7 l& u. |6 U+ N9 e' E. c
0 D$ B- R& W1 b9 [8 I- I- P
# T1 a) c* z  \1 E, V【总结】: ?1 S+ M- n9 ~; b8 }; f

' g* Z- y2 B1 CARM公司售卖Cortex-M系列的授权,意法半导体(STMicroelectronics,ST)购买了该授权,生产了一些列STM32产品,这些使用ARM技术的处理器,都习惯称为ARM处理器,其中STM32F103C8T6就作为了本手册配套开发板的处理器。& x) }9 f9 [# p) b; {

0 q+ z' S9 C! A( o8 p1 V1.3 常见处理器概念  H) B0 U; e  c1 G! U  b
前文中多次出现了MCU、MPU、DSP、FPGA等嵌入式处理器概念,很多初学者可能比较迷惑,下面将对这些概念进行简单介绍。7 D! v, v3 Y+ U2 K5 f
' ]! t4 M8 v8 o+ s* t
1.3.1 MCU
; b9 i1 G2 U! [$ T, p6 I微控制器 (Micro-Controller Unit,MCU),俗称单片机。之所以称之为单片机(Single Chip Microcomputer),是因为不同于其它处理器,它将CPU、RAM(随机存储器)、ROM(只读存储器)、I/O、中断系统、定时器等各种功能外设资源集中到一个芯片上。这个芯片就是一个完整的微型计算机,只需要供电或加上极少的外围电路即可工作。7 [8 \0 f' S8 Q6 I9 m  b
$ l; j* r7 |+ C: |4 J1 A
常见的MCU有80C51系列单片机、Atmel公司的AVR系列单片机、Microchip公司的PIC系列单片机、TI公司的MSP430系列单片机、ST公司的STM32系列单片机、NXP公司的LPC1700系列单片机。
4 ~4 h( d9 x) U. u8 z0 U# @; G4 {# l
早期的MCU主要是8位,后面发展出16位,再到现在主流的已经是32位。此外,主频不断提高、ROM不断增大、外设不断增多,单片机的应用领域和场合越来越大。
  d; h( B0 N* h9 [; K  N& O8 }: N- e1 _) u+ r
: z1 w8 t0 Z" t. d
1.3.2 MPU
# G$ C& T: A# A
微处理器(Micro-Processor Unit,MPU)。类似通用计算机的CPU,主要负责处理计算,需要外加RAM、Flash、电源等电路。
0 f7 s: E0 r+ _' @7 P# }# e5 ^
2 l2 x0 g* [9 c/ R1 cMCU和MPU的本质区别是因为应用场景的定位不同。MPU注重通过相对强大的运算/处理能力,执行复杂多样的大型程序,因此常需要外挂运行内存(RAM)、存储器(Flash)等。MCU注重功能较为单一、价格敏感的应用场景,不需要相对强大的运算/处理能力,更多的是对设备管理/控制,因此不需要大容量的RAM、Flash来运行大型程序,于是将RAM、Flash全集成在一起,大家也就俗称“单片机”,如图 2.3.1 所示。* l# Y# T$ r2 e1 q' s( Y

3 ~7 Y  c5 l4 `9 [ %Q@OT2V7DHQGLL2B{0UTUUC.png
6 n+ @. O% a6 z: b
+ E$ I1 e* G8 `" \图 2.3.1 MPU和MCU的不同结构) B& R- v/ Y/ z

2 t- {7 y/ S9 V  n& g如今,随着技术的发展,市场及需求的变化,MPU和MCU的界限日趋模糊。高端的32位MCU主频越来越高,已经反超低端MPU主频,MCU也有外挂RAM和Flash的场景,依靠硬件结构去区分逐渐困难。读者可以简单的认为,嵌入式微处理器MPU,通常运行Linux、Android等非实时操作系统,应用在高端应用市场,比如智能手机、路由器等消费电子市场领域,而嵌入式微控制器MCU,常用运行裸机或实时性操作系统,应用在中、低端应用市场,比如家电控制领域、工业控制领域等。( R, {0 M* M) x# L
, k1 c1 ?6 a6 d& e: B
1.3.3 DSP
# I; M2 F, e6 H$ I/ x4 c" SDSP通常有两个含义。6 i' q% k6 P4 t# ~% Q: U
数字信号处理(Digital Signal Processing,DSP),是一门学科技术,使用数值计算的方式对信号进行加工处理的理论和技术。
2 `& K+ r# N0 U" }, R0 K数字信号处理器(Digital Signal Processor,DSP),是一种专门用于数字信号处理领域的微处理器芯片。* X; \6 x3 L( }1 B

" ?1 E# V* f4 L, a1 i3 A* G- D2 L: s如图 2.3.2 为TI公司的DSP芯片TMS320VC5509A。
+ I, B/ j$ D4 e* E
  [1 c0 e9 D! p9 H! v ~)G~HFR4QTP5Y3[M76V}F@G.png
0 P. I+ V) l$ @& r- m. q4 x& _, P5 e) W' U: m- {! {- j# z8 y
图 2.3.2 DSP芯片' h" x! K5 ~. r# S. I+ u$ d

' h2 w4 o+ |* \, Z& j- pDSP芯片为了达到快速处理数字信号处理的目的,采用了许多特殊软硬件结构。首先是采用哈佛结构,将程序和数据分开,同时为处理器提供指令和数据。然后采用多级流水线技术,在指令周期内可以执行更多指令。加上专用的硬件乘法器、特殊的DSP指令,使得DSP芯片在计算处理上,远超同主频的MCU或MPU。# U( o, p* p; ^9 t4 u$ ~& g
3 g! W# h" @8 F) C
DSP芯片拥有强大的数据处理能力,在数字信号处理领域,如调制/解调、数据加密/解密、图形处理、数字滤波、音频处理等计算密集型的场景广泛应用。# B! J& @3 P( ~% N4 G) ~& K

& B/ z  y) f) l1.3.4 FPGA
% O9 X& _4 Q! g2 [- V2 T
现场可编程门阵列(Field-Programmable Gate Array,FPGA),由可编程互连连接的可配置逻辑块 (CLB) 矩阵构成的半导体器件。通俗地说,FPGA就是一个可以通过编程改变内部硬件结构,实现所需功能的芯片。前面的MCU、DSP等都是硬件资源固定,只能通过修改软件实现所需功能。而FPGA是通过硬件描述语言或其它方式修改硬件,将FPGA变为CPU或专用芯片,来实现控制或算法。因此,MCU、DSP能够实现的功能,FPGA理论上都可以实现,反之则不一定。如图 2.3.3 为Xilinx公司的FPGA芯片XC3S400A。$ Q; v; m% M- g, ]* W/ G
# f  p$ x, v2 O. R# m$ O
@_LUXFSUFM0G@)]MLQQM{XO.png ) ~6 Z, u( V6 u6 \1 o

* J9 r- q  f2 r. B4 L) A图 2.3.3 FPGA芯片* w" p' ]4 ]; \% P' K4 I
FPGA主要有两大优势:高速和灵活。FPGA使用硬件处理数据,采用并发和流水技术,多个模块之间可以同时并行执行。FPGA可以根据现场情况配置器件功能,能够在技术和需求变化时重新配置,实现系统优化升级。
/ C8 Y2 d) s9 Z  ?
) b( w/ ^) t; n% j; E* K3 K在某些通信领域,需要处理高速的通信协议,同时通信协议随时都可能修改,不适合做成专门的芯片,FPGA的高速、灵活就便成了首选。
' \1 `, C8 S3 D# r
0 O- W: B' P7 T9 j虽然FPGA功能强大,但实际工程项目中,还需考虑硬件成本、开发难度和市场需求等因素。一些简单的控制场合,尽管FPGA和MCU都能胜任,但MCU价格低廉和研发简单,更划算。
/ @9 a0 e3 @2 p0 K9 G) g- |! T' D2 ^  x2 I0 ~' B6 c5 E
【总结】
3 g0 e5 _; k& ]6 D- R7 ]/ `

& W2 r4 @+ {/ H- c% [3 r( s如今复杂的嵌入式系统往往是复合架构,比如“MPU+FPGA”、“MPU+DSP”、“MCU+FPGA”、“MCU+DSP”,甚至“MCU +MPU+FPGA+DSP”。控制、显示、通信一般选择MCU或MPU,通信和数据处理算法选择DSP,大量的数据处理和特定实现选择FPGA。
3 h0 w. s0 N* m) ~: {5 y& N/ e2 e4 A% L) y1 F3 j
MCU开发需要C语言基础,然后学习各类资源、接口,再到RTOS;MPU通常运行Linux,需要Linux基础、操作系统、网络编程等知识;DSP开发需要具备数据信号处理算法的理论知识;FPGA开发需要了解高速接口或音/视处理算法等。; d* l& G2 ^' Y5 Q$ a4 H- t8 T
7 x; m8 h# `3 R. ?
一般来说,MCU相对比较简单,适合作为入门学习,待MCU学习完后,再结合实际情况选择深入学习方向。4 }8 d: C/ M5 i! c" W; C

5 F; m/ b4 C$ q. L$ |
0 c6 u* R7 F$ |1.4 ARM开发
1 Z2 d# L5 f5 j" {( `, T' Z
1.4.1 MCU开发和MPU开发
+ _) q5 \# \, B$ Q. [MCU开发就是我们常说的单片机开发,MPU通常运行嵌入式Linux,因此也称为ARM-Linux开发。MCU开发和MPU开发,也就是单片机开发和ARM-Linux开发,两者均可称为嵌入式开发,两者之间既有联系,又有区别。' x1 I. ^- {, F2 j4 ^' U

# j8 h: F3 D) {MCU开发人员需要具备C语言、数字电子技术、模拟电子技术、微机原理等相关理论基础,还可能需要电路板绘制等专业技能。涉及电子信息工程、自动化、测量控制等相关专业。
% ~; y, I  u0 `4 f5 f/ [# c+ d- e( r7 b% A# r  T* k0 r3 m
MCU开发主要涉及的内容包含:GPIO、UART、I2C、SPI、LCD等外设接口,时钟、中断、定时器、ADC/DAC、看门狗等内部资源,以及RTOS(FreeRTOS、RT-Thread、uCOS、LiteOS等)嵌入式实时操作系统。
' Q3 j) ]# F- N/ L8 p7 G% Q* I0 f4 t& \# t+ K  P: B3 |6 h( E
MPU开发人员需要具备、数据结构、操作系统、计算机网络等相关理论基础。涉及计算机科学、软件工程、物联网等相关专业。7 j9 j% p( v+ @& k$ ?. x% h0 c

7 K  ?% W1 i* V' c0 rMPU开发主要涉及的内容包含:Bootload移植、Linux内核移植、Linux设备驱动开发(GPIO、UART、I2C、SPI等)、Linux应用开发(文件I/O、多任务编程、进程间通信、网络编程、Qt界面设计等),甚至包括Android驱动、Android应用编程。4 z! u) Q; ]1 \- [! m
+ l; H* e7 D! C1 \7 n
下表 2.4.1 列举MCU开发和MPU开发的一些区别。MPU开发通常没有仿真器,也没有集成开发环境IDE工具,但MPU资源丰富,反而下载方式比MCU丰富。MCU可以使用仿真器在线调试,也可以使用串口打印调试,而MPU一般只能使用串口调试打印。MCU的启动过程比较简单,而MPU的复杂很多,就Bootloader部分就相当于一个大型MCU开发工程。两者相互补充,占据了嵌入式设备的大部分份额。
9 G, G# Z8 w% b2 f3 I  F$ @4 o3 `3 p1 ~+ F+ Y4 f& e
9}AGG6E3NA15JOUS{)$}C66.png
0 j- R$ o, z5 \3 B# v6 b
& u+ ^5 u* [% g- F表 2.4.1 MCU开发与MPU开发的区别1 U! S+ D) u/ T! a- v

3 F1 D! b* ]' X8 r2 [/ O( a1.4.2 开源硬件Arduino和Raspberry Pi
0 ]' i) L% O8 c在开源硬件领域,Arduino和Raspberry Pi(树莓派)都是电子创意设计常用的开发平台和工具。它们使用简单的开发方式,使初学者能快速搭建其创意原型,有效降低了学习难度,缩短了开发周期。如图 2.4.1 所示,为某Arduino开发板(左)和Raspberry Pi 3开发板(右)实物图。8 D9 q* D+ {' ?3 Z% S) w  A3 h
3 r) ]% @8 m9 P& T3 p7 Y( H  z5 p" S
BYQP1_4ISQH%]2AM@I$_N`1.png 5 V0 K4 Y% j" U: S2 o
. ^1 R# ~* e; @4 d
图 2.4.1 某Arduino开发板(左)和Raspberry Pi 3开发板(右)实物图% g, ]4 b/ Z& ~/ @; q% q
Arduino是一款基于微控制器(MCU)的开发板,它可以运行一些相对比较简单的应用程序,成本低廉,适合用于与传感器、外围电路进行控制和通信。
: m, N% U3 e# l9 Z. h2 i0 d( L6 s  B$ m4 C) `# O# ~4 ~
Raspberry Pi是一款基于微处理器(MPU)的开发板,可以看作是一台小型计算机,板载RAM、HDMI接口、USB接口、音频接口、网络接口等。通常运行发行版Linux操作系统,可以运行功能更丰富的应用程序,适合用于一些需要较多运算和功能的项目,比如游戏虚拟机、网页服务器、机器人、家庭智能控制系统等。- \' u1 j4 M: Z& a( J' s9 \

. E& e2 U0 n: I% P【总结】

( H9 s4 `: m1 r: J6 |& u- p
: T; h5 @% S& d4 k, x# _MCU开发和MPU的开发模式,差异还是比较大,读者在以后的实际开发中,再慢慢感受理解,这里了解即可。
! g, I0 E) l  U  F, G! `4 _, i$ F- c8 z. l
开源硬件面向的群体主要还是电子爱好者,帮助他们无需深入了解相关知识的情况下,快速验证自己的创意想法。对于嵌入式开发人员,Arduino过于简单,Raspberry Pi底层不开源,都不适合深入研究,开发人员应选一款采用常见主控芯片设计的开发板进行学习、研究。 7 `9 ]  j$ g2 q( o. w" _0 x

1 X. Y3 `$ A% x- ?
, X0 ?) R% D+ @& C% S. B* r
赞 收藏 评论0 发布时间:2022-4-27 10:22

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版