计算机嵌入式基础
什么是嵌入式系统?
嵌入式系统通常指的是专门为某种功能设计的微型计算机系统,比如智能手表、家电控制板、汽车ECU等。
什么是嵌入式系统的IO?
IO(Input/Output,输入/输出)就是嵌入式系统与外部世界“交流”的通道,比如按钮、LED灯、传感器、蜂鸣器等。
一、IO逻辑
IO口的基本类型
嵌入式系统的IO口一般分为两类:
- 输入口(Input):用来读取外部信号,比如检测按钮是否按下、读取温度传感器的数值等。
- 输出口(Output):用来控制外部设备,比如点亮LED灯、驱动蜂鸣器等。
IO口的工作原理
每个IO口通常都可以配置为输入或输出。
以单片机(如STM32、51单片机)为例:
- 输入模式:IO口连接到外部信号(如按钮),单片机通过读取该IO口的电平(高/低)来判断外部状态。
- 输出模式:单片机通过设置IO口的电平(高/低),来控制外部设备(如LED灯的亮灭)。
IO口的电平
- 高电平(High):通常是接近电源电压(如3.3V或5V)。
- 低电平(Low):通常是接近地电压(0V)。
比如,LED灯的一个端接IO口,另一个端接地。当IO口输出高电平时,LED灯亮;输出低电平时,LED灯灭(具体电路可能有差异)。
二、计算机组成
计算机的组成一般分为五大部分,称为“计算机五大部件”,它们共同协作完成计算机的各种功能。
模拟电路的网站:Circuitjs web 在线电路模拟器
1. 运算器(算术逻辑单元,ALU)
负责各种算术运算(加减乘除)和逻辑运算(与、或、非等)。
是计算机“计算能力”的核心部分。
2. 控制器(Control Unit)
负责指挥和协调计算机各部件的工作。
解释和执行指令,控制数据流动和操作顺序。
控制器和运算器合称为“中央处理器”(CPU)。
3. 存储器(Memory)
用于存放数据和程序。
包括内存(RAM,运行时存储)和外存(硬盘、U盘等,长期存储)。
没有存储器,计算机无法记忆和处理数据。
3.1 只读存储器(ROM)
- 掉电不丢失
- 存储程序,ROM也叫程序存储器
- 硬盘、U盘
- 读取速度慢
3.2 随机存取存储器(RAM)
- 掉电丢失
- 存储临时变量和程序运行产生的数据
- 内存条
- 速度快
3.3 cache存储器
Cache(高速缓存)是计算机中一种速度非常快但容量较小的存储器,主要用于缓解CPU与内存(RAM)之间的速度差异,提升系统整体运行效率。
4. 输入设备(Input Devices)
用于把外部信息输入到计算机中。
常见的有:键盘、鼠标、扫描仪、摄像头、麦克风等。
5. 输出设备(Output Devices)
用于把计算机处理的结果输出给用户或其他设备。
常见的有:显示器、打印机、音响等。
三、三级存储结构
cache、内存、外存放在一起也被称作三级存储结构
1.寄存器:在CPU内部,速度最快,容量最小。
2.高速缓存(Cache):介于CPU和内存之间,速度快,容量小。
3.内存(RAM):速度较快,容量适中。
4.外存(ROM):速度慢,容量大。
四、总线
1.按照功能分为三类:
不是总线分为三类,而是总线有的功能有三种,一般是总线包含三个功能,下面的分类是概念性的东西。
1.1数据总线(Data Bus)
作用:用来在计算机各部件之间传输“数据”本身。
特点:数据总线的“宽度”决定了每次能传输的数据位数(比如8位、16位、32位、64位)。数据总线的宽度决定了CPU和外界的数据传送速度。
举例:32位数据总线一次能传输32位(4字节)数据。
比喻:像一条可以并排行驶多辆车的马路,车越多(位宽越大),一次能运送的数据就越多。
1.2.地址总线(Address Bus)
作用:用来传送“地址信息”,告诉CPU要访问内存或设备的哪个位置。
特点:地址总线的“宽度”决定了能访问的最大内存空间。
例如:16位地址总线最大寻址64KB,32位最大寻址4GB。
比喻:像快递单上的地址,告诉快递员(CPU)要把东西送到哪里。
1.3.控制总线(Control Bus)
作用:用来传递各种“控制信号”,协调和管理数据、地址的传输。
特点:控制总线宽度决定了CPU对外部期间的控制能力。
常见信号:读/写信号、时钟信号、中断信号、复位信号等。
比喻:像交通信号灯和指挥员,告诉大家什么时候可以走、什么时候要停、该做什么操作。
2.DMA
定义:是一种让外部设备可以绕过CPU,直接与内存交换数据的技术。
在没有DMA的情况下,数据在外设(如硬盘、网卡)和内存之间的传输都要经过CPU,CPU需要不断地参与搬运数据,效率低、CPU负担重。
有了DMA,数据可以直接在外设和内存之间传输,CPU只需发出启动命令,剩下的传输工作由DMA控制器完成,CPU可以去做别的事情,提高了效率。
五、单片机基础
1.单片机简介
单片机,全称单片微型计算机(Microcontroller Unit,简称MCU),是一种将CPU、内存(RAM/ROM)、输入输出接口(I/O)、定时器/计数器、串口等功能集成在一块芯片上的微型计算机。
2.单片机型号
一、51单片机
1. 基本介绍
51单片机
51单片机是指以Intel 8051为核心的单片机系列,属于8位单片机。(八位的不一定51单片机)诞生较早,结构简单,指令系统精炼,适合入门学习和基础控制应用。
51单片机(8051)
国产51单片机:STC89C51 宏晶科技 STC
外国51单片机:AT89C51 ATMEL
2. 主要特点
(1)8位数据总线,一次只能处理8位数据。
(2)主频一般较低(常见为12MHz~40MHz)。
(3)片上资源有限(如RAM、ROM、I/O口数量较少)。
(4)指令集简单,易学易用。
(5)价格低廉,资料丰富,适合初学者和简单控制场合。
3. 典型应用
简单的家电控制、电子玩具、计数器、定时器等。
二、32单片机(以STM32为代表)
1. 基本介绍
32单片机
32单片机通常指基于ARM Cortex-M内核的单片机,如STM32系列。
属于32位单片机,数据总线和寄存器宽度为32位。
32单片机(通常说的就是ARM)
外国32单片机:STM32 意法半导体 ST
国产32单片机:GD32 兆易创新 GD
2. 主要特点
(1)32位数据总线,一次能处理32位数据,运算能力强。
(2)主频高(常见为几十MHz到几百MHz)。
(3)片上资源丰富(大容量RAM/Flash、丰富的I/O口、外设接口如ADC、DAC、USB、CAN、以太网等)。
(4)支持多种高级功能(如DMA、定时器、PWM、低功耗等)。
(5)性能高,适合复杂控制和数据处理。
3. 典型应用
智能家居、工业自动化、机器人、物联网、音视频处理、医疗设备等高要求场合。
六、开发板\最小系统板
1.开发板
定义:开发板是为方便学习、开发和调试单片机(或其他芯片)而设计的一块电路板。
特点:(1) 板上集成了单片机芯片、下载/调试接口、电源电路、复位电路、时钟电路等最基本的运行环境。
(2) 通常还会带有丰富的外设接口和模块,比如按键、LED、蜂鸣器、显示屏、串口、USB、以太网、SD卡、传感器等。
(3)方便用户直接进行实验、开发和测试,无需自己焊接复杂电路。
适用人群:适合初学者、工程师、项目开发者。
2. 最小系统板
定义:最小系统板(也叫最小系统)是指让单片机能够正常运行所需的最基本电路,通常只包含:单片机、电源电路、晶振(时钟电路)、复位按键、烧录引脚组成
时钟电路(晶振)
复位电路
特点:(1) 只保证单片机能“点亮”并运行程序,不带其他外设。
(2) 体积小、结构简单、成本低。
(3) 适合嵌入到最终产品中,或作为开发板的核心部分。
3. 区别与联系
对比项 | 开发板 | 最小系统板 |
---|---|---|
功能 | 丰富,带多种外设和接口 | 只包含单片机最基本运行电路 |
体积 | 较大 | 很小 |
适用场景 | 学习、开发、调试、实验 | 产品嵌入、最基础的运行环境 |
成本 | 较高 | 很低 |
联系:开发板通常包含一个最小系统板,最小系统是开发板的“核心”,开发板是在最小系统基础上扩展了更多功能和外设。
4.显示屏
用于显示信息的模块,可以是液晶屏(LCD)、OLED屏、TFT屏等。显示文字、图像、数据等内容,是人机交互的重要部分。
5.资源扩展板
定义:用于扩展开发板的附加电路板。
特点:通常通过排针、排母、排线等方式与主开发板连接,提供更多的外设资源。
作用:让开发版具有更多功能,便于开发复杂应用。
七、STM32
1.简介
STM32 是意法半导体(STMicroelectronics)推出的一系列基于 ARM Cortex-M 内核的 32 位单片机(MCU,Microcontroller Unit)。STM32 因其高性能、低功耗、丰富的片内外设和良好的生态支持,在嵌入式开发领域非常流行。
2.优势
(1)产品型号丰富,可选择性强;
(2)运算速度快,功耗低;
(3)处理器外设接口丰富;
(4)库函数开发体系学习资料多,应用广泛。
3.STM32的常见系列
(1)STM32F0/F1/F3/F4/F7/H7:主打通用、高性能应用,F1(如STM32F103)是入门和应用最广的系列。
(2)STM32L0/L1/L4/L5/U5:主打超低功耗应用。
(3)STM32G0/G4:新一代通用和高性能系列。
(4)STM32WB/STM32WL:带无线功能(如蓝牙、LoRa)。
八、单片机命名规则
STM32U575RIT6
STM32:32位意法半导体微控制器
U:超低功耗
575:芯片型号
R:表示引脚数(64)
I:表示闪存容量为2048K=2MB
T:TQFP封装
6:工作温度范围在-40度到85度
ST | 意法半导体 |
M | 微控制器 |
32 | 32位处理器 |
类型 | F 通用/基础型 foundation G 多用途型 general-purpose L 低功耗 low power H 高性能 High performance S 简单/标准型 Standard U超低功耗 |
系列 | 0 精简系列 1/2/3 增强系列 4/7 高性能系列 |
子型号 | 00/01/02/03/05/07 |
引脚数量 | K/6-32脚 C/8-48脚 R-64脚 V-100脚 Z-144脚 A-168脚 I-176脚 B-208脚 N-216脚 |
存储量 | 6 :32KB 8 : 64KB B :128KB C :256KB D :384KB E : 512KB G :1MB I : 2MB |
封装 | U - UQFN封装 T - TQFP封装 |
工作温度 | 6 - -40 ~ 85度 |
九、ARM(CPU)体系结构
1.概念
ARM(CPU)体系结构是指ARM公司设计的一系列基于RISC(精简指令集)理念的处理器架构。ARM架构以高效、低功耗、易于移植和高度集成著称,广泛应用于手机、嵌入式设备、单片机、智能家居、物联网等领域。
2.ARM是什么
ARM公司是一家芯片知识产权(IP)供应商,它与一般的半导体公司最大的不同就是不制造芯片且不向终端用户出售芯片,而是通过转让设计方案,由合作伙伴生产出各具特色的芯片。
早期经典处理器:ARM7 ARM9 ARM11
后续处理器开始以cortex命名
Cortex-X系列:
超高性能,为AI赋能,为人工智能运行提供效能
Cortex-A系列:
针对开放式操作系统的高性能处理器
应用于智能手机、数字电视、智能平板等高端运用
Cortex-R系列:
提供非常高的性能和吞吐量,同时保持精准的时序属性和可预测的中断延时,通常用于时序关键的应用中
针对实时系统、满足实时性的控制需求
应于汽车制动系统、动力系统等
Cortex-M系列:
为单片机驱动的系统提供了低成本优化方案
应用于传统的微控制器市场、智能传感器、汽车周边、物联网设备等
ARM指令集是指ARM架构处理器所使用的机器指令集合。ARM指令集以精简、高效、低功耗著称,是RISC(精简指令集计算机)理念的典型代表。
3.STM32U575采用ARM Cortex-M33内核架构
ARM Cortex-M33内核的关键特性:
- Armv8-M架构(CPU的架构)
- AHB-lite总线接口,哈佛总线架构
4.冯·诺依曼架构和哈佛架构
3.1. 冯·诺依曼结构(Von Neumann Architecture)
定义:由数学家冯·诺依曼提出,是现代计算机最经典、最常见的结构。
核心特点:
(1)程序存储器和数据存储器共用同一存储空间(即程序和数据都放在同一块内存里)。
(2)程序和数据共用同一条总线(数据总线、地址总线)。
(3)指令和数据的获取不能同时进行,需要轮流访问内存。
优点:结构简单,硬件实现容易,成本低。
缺点:存在“冯·诺依曼瓶颈”——指令和数据不能同时访问,速度受限
3.2. 哈佛结构(Harvard Architecture)
定义:最早用于信号处理和嵌入式系统的计算机结构。
核心特点:
(1)程序存储器和数据存储器分开,各自有独立的存储空间。
(2)程序和数据各自有独立的总线。
(3)指令和数据可以同时访问,互不干扰。
优点:速度快,效率高,适合对性能要求高的场合(如DSP、部分单片机)。
缺点:硬件结构复杂,成本较高。
十、指令集(RISC和CISC)
1.概念:
指令集(Instruction Set)是指CPU能够识别和执行的所有机器指令的集合。
在计算机体系结构中,指令集主要分为两大类:RISC(精简指令集)和 CISC(复杂指令集)。
2.分类
2.1 RISC(精简指令集计算机,Reduced Instruction Set Computer)
特点:
(1)指令种类少,格式统一,执行速度快。
(2)每条指令执行时间短,通常一条指令一个时钟周期完成。
(3)依赖于软件(编译器)来完成复杂操作,硬件实现简单。
(4)适合流水线和并行处理,能效比高。
代表架构:ARM、MIPS、PowerPC、RISC-V等。
应用领域:嵌入式系统、移动设备、单片机、服务器等。
2.2 CISC(复杂指令集计算机,Complex Instruction Set Computer)
特点:
(1)指令种类多,部分指令功能复杂,可以完成多步操作。
(2)指令长度不统一,执行时间不等。
(3)依赖于硬件来实现复杂操作,硬件实现复杂。
(4)适合早期内存和编译器资源有限的环境。
代表架构:x86(Intel/AMD PC处理器)、早期的IBM 360等。
应用领域:个人电脑、服务器等。
十一、Cortex-M33的寄存器
1.通用寄存器
通用寄存器 一个寄存器存储32位
R0-R12:13个通用寄存器。其中 R0-R7为低端寄存器,可作为16位或32 位指令操作数,R8-R12为高端寄存器,只能用作32位操作数
R13:栈指针寄存器 SP(the stack pointer),Cortex-M0 在不同物理位置上存在两个栈指针,主栈指针 MSP(main ),进程栈指针 PSP。
在处理模式下,只能使用主堆栈,在线程模式下,可以使用主堆栈也可以使用进程堆栈。 系统上电的默认栈指针是MSP。这样设计的目的是为了在进行模式转换的时候,减少堆栈的保存工作。同时也可以为不同权限的工作模式设置不同的堆栈。
R14:链接寄存器LR(the Link Register),用于存储子程序或者函数调用的返回地址
R15:程序计数器PC(the Program Counter register)存储下一条将要执行的指令的地址。
2.特殊寄存器
xPSR:组合程序状态寄存器,该寄存器由三个程序状态寄存器组成
应用程序状态寄存器 (APSR):保存程序计算结果的状态标志 N负数标志 Z零标志 C进位借位标志 V溢出标志
中断程序状态寄存器 (IPSR):包含当前ISR(中断服务程序)的异常编号
执行程序状态寄存器 (EPSR):包含Thumb状态位 ---->运行Thumb指令集