STM32的硬件设计
嵌入式系统的硬件组成
嵌入式处理器
-
嵌入式处理器是嵌入式系统的核心,其与外围电路配合组成了嵌入式系统
而嵌入式处理器可以分为以下几类:
-
微处理器MPU
属于CPU(中央处理器)的一个子集:大家都是PU(处理单元),区别在于CPU是广义的概念,一切计算机中的处理单元都称作CPU,而MPU特指用在微型计算机中的CPU,为了适应微型计算机的要求有所修改
-
微控制器MCU
将CPU和储存器、中断系统以及各种外设集成在一块单芯片上,也就是常说的单片机
这种设计将一般计算机中的许多部件都集成在芯片内部,从而实现了小型化与低功耗,适应嵌入式系统的要求,用于嵌入式系统的控制,比CPU、MPU专用性更强,也因此一般来说在性能上不如前两者
-
数字信号处理器DSP
专门用于信号处理的芯片,系统架构和指令算法经过特殊设计从而应用于数字滤波、快速傅里叶变换和频谱分析
-
片上系统SOC
以可编程逻辑器件PLD为载体,把微处理器、IP核与储存器集成在单一芯片上
关于ARM
-
我们经常听到“ARM架构”/“ARM内核”/“ARM处理器”,ARM作为嵌入式处理器中占据重要地位的公司,在此对与它相关的这些概念进行梳理:
-
ARM内核
英国ARM公司专门负责设计处理器的内核(类似通用计算机中的CPU部分)
ARM公司将他们设计的ARM内核分为三个系列,各个不同系列的内核针对不同应用领域进行优化,各个系列如下:
- Cortex-A:用于高性能应用处理器,常见于手机SoC,能运行复杂的系统与程序
- Cortex-R:用于实时处理器,常见于汽车芯片之类需要实时响应的任务
- Cortex-M:用于微控制器,即单片机领域,专门对低功耗与低成本要求设计
-
ARM架构
ARM内核使用的是ARM公司开发的ARM处理器指令集架构,所谓指令集架构即操作该处理器所能使用的指令
ARM架构使用精简指令集(RISC),与x86的完整指令集(CISC)相比包含指令较少、每条指令较短、执行效率更高
ARM架构随着发展迭代出了不同的版本,每个版本定义了不同的功能和指令集,比如ARMv8引入了64位指令集
-
ARM处理器
ARM公司自己不生产芯片,而是将设计好的内核授权给其他半导体厂家,由这些厂家为内核搭配各有特色的外设设计出芯片,使用了ARM内核的芯片即ARM处理器,比如STM32就使用了Cortex-M内核
外围电路
-
外围电路是嵌入式系统与外界环境交互所用的部件
需要特别注意:嵌入式系统的外围电路与外设并非一个概念,“外设”集成在单片机芯片上,外围电路则是单片机的配套设施
它们按功能可以分为以下四类:
-
环境感知
温/湿度传感器、光电类传感器、压力传感器等
-
通信
同步/异步串口、USB接口、以太网接口等
-
存储
SRAM、DRAM、NAND Flas、NOR Flash等
-
人机交互
指示灯、数码管、显示器、键盘等
STM32的硬件设计
STM32微控制器
-
STM32的架构
STM32是使用ARM Cortex-M4内核的32位微控制器
这意味着STM32芯片区别于使用专用8位架构的STM8,而是与常见的手机处理器芯片一样,属于ARM处理器(当然,见上文ARM内核各系列介绍,两者有所不同)
对STM32这样32位的MCU,char为8位,short为16位,long为32位,这三个数据类型分别对应
uint8_t,uint16_t和uint32_t,这和我们在开发时STM8时所用的数据类型保持一致(这也是我们不使用int这样在不同系统中长度不同的数据类型的原因) -
STM32的外设
STM32集成丰富的外设,以高性能类的STM32F4系列入门型芯片为例:
- 最大集成1.5MB的Flash存储器,320KB的SRAM
- 多达10路USART(最快12.5Mb/s),多达5路SPI(最快50Mb/s),多达4路I2C(最快1Mb/s),多达3路CAN总线
- 一个SDIO(SD卡接口),一个全速USB2.0 OTG
- 12位ADC,12位DAC
- 多达18个16位和32位定时器,最高频率100MHz
以上配置根据具体型号的不同有所差异
-
STM32的引脚
以常见的LQFP64封装为例,共有64个引脚,大部分引脚具备引脚复用功能,按功能可以分为5类:
-
电源引脚
-
数字电源VDD和数字电源地VSS(为了电源完整性,一般分为多组,均匀分布在芯片的四周以提高电源质量和减低电源阻抗)
-
模拟电源VDDA和模拟电源地VSSA(这两个引脚兼做ADC模块的参考电压)
模拟信号很容易受数字信号干扰,所以需要将两种隔离或者分开供电
-
调节器电源VCAP(这个电源需要外接电容,用于内核电源滤波)
-
备份电源引脚VBAT(为实时时钟、备份寄存器等模块供电)
-
-
复位和启动模式引脚
-
复位引脚NRST用于复位信号输入,该引脚为低电平时复位MCU
-
启动模式引脚BOOT0和BOOT1用于设置MCU的启动模式,因为STM32有Flash、SRAM和系统储存器等存储介质,复位后需要确定从哪一个介质开始执行程序,一般将这两个引脚下拉电阻或连接其他引脚来决定其模式:
BOOT0/BOOT1:0/X:从MCU片内Flash启动,最常用,因此一般电路设置为BOOT0接下拉电阻,BOOT1作为普通GPIO引脚使用
BOOT0/BOOT1:1/0:系统储存器启动,主要用于串口下载(ISP模式)
BOOT0/BOOT1:1/1:SRAM启动,主要用于代码调试
-
-
时钟引脚
时钟引脚分为两组:外部高速时钟HSE引脚OSC_IN和OSC_OUT,外部低速时钟LSE引脚OSC32_IN和OSC32_OUT
-
调试引脚
STM32支持两种调试引脚:JATG接口,使用JTMS、JTCK、JTDI、JTDO和JTRST;另一种串行调试接口SWD使用SWDIO、SWCLK、SWO(可选),由于SWD占用引脚较少,更加常用
-
GPIO引脚
-
最小系统板
-
最小系统板简介
最小系统板,又称最小板、核心板,指的是让MCU具备基本运行条件所需的外围电路
狭义的最小板包括电源电路、时钟电路、复位电路、调试电路与主控芯片;广义的最小板还会加上指示灯、按键,蜂鸣器等基本的人机接口电路
-
电源电路
给STM32供电的电路,即电源在连接到VDD引脚之前的电路
给STM32供电常见的方式有两种:USB供电(USB提供5V直流电)与外部接口供电
-
一般使用低压差线性稳压芯片将USB提供的+5V转换为STM32所用的3.3V电压,常见的型号是LD39050PU33R,固定输出3.3V,最大输出500mA电流;稳压芯片的输入和输出端加入滤波电容保证电压稳定
-
外部接口供电类似USB供电,除3.3V电源外,其他5V、7~12V的电源也要经过稳压芯片处理再接入到VDD
备用电源VBAT主要为备份电路,包括RTC、唤醒电路和备份寄存器等模块供电,VBAT一般和外部电池相连,如果不使用外部电池,则将VBAT和VDD相连
-
-
时钟电路
STM32F4系列具备LSI内部低速(不可作系统时钟)、HSI内部高速、HSE外部高速、LSE外部低速和PLL锁相环倍频后时钟,共五个时钟源,HSE和LSE这两种外部时钟需要时钟电路,时钟电路分两种:
- 振荡模式:在OSC_IN和OSC_OUT引脚间接入一个晶振和两个电容构成振荡电路提供时钟信号,LSE所用32.768kHz(215)的晶振,HSE则可以使用4~26MHz(由具体单片机型号决定)
- 旁路时钟模式:直接将外部电路提供的时钟信号接入OSC_IN,此时OSC_OUT悬空
-
复位电路
给NRST引脚一个低电平,即可让MCU复位,常使用的是阻容复位电路:其结构是在NRST与地之间并连的一个按钮和一个电容,这样的电路工作原理是:
- 按下按钮让NRST和地接通,NRST得到低电平从而复位,这就是手动复位
- MCU上电后电容短路,两端都为0V,进入复位状态,而MCU的电源VDD通过NRST引脚给电容充电,当电容电压上升到MCU高电平阈值时,MCU结束复位,这就实现了在给单片机上电时让MCU自动复位一次
-
调试电路
用于连接仿真器和MCU,仿真器通过调试电路进行程序下载和仿真
-
使用ST-Link仿真器时将MCU的调试引脚和ST-Link的对应引脚相连即可
-
SWD调试接口时需要将SWD数据输入输出信号SWDIO、时钟信号SWCLK,可选的SWD调试信息输出信号SWO连接到单片机对应引脚上,使用6针插座(还有3个引脚留给NRST、VDD和GND)
-
JATG则采用20针牛角插座,占用MCU的五个引脚
-
蓝桥杯开发板
主控芯片
-
主控芯片的型号
蓝桥杯的开发板使用STM32G431RBT6为主控芯片,其特性如下:
-
工作频率高达170 MHz
HSI频率为16MHz(另外有HSI48 RC频率可达48MHz),HSE频率可设定为4-48MHz,LSI频率为32kHz
-
1个通用32位定时器、2个专用于电机控制的16位PWM定时器、7个通用16位定时器以及1个16位低功耗定时器
-
高达128 KB的Flash存储器(存储代码)和高达32 KB的SRAM(存储运行数据)
-
有两路12位(4096)快速ADC
-
有VDDA模拟电压,VSSA模拟GND,VREF+参考电压(开发板上为J17连接)为3.3V
-
通信接口丰富:3个I2C接口,3个SPI接口(与2个半双工I2S接口复用),3个USART接口(其中包含1个UART接口和1个低功耗UART接口),1个FDCAN接口,1个SAI接口,支持USB设备
-
-
主控芯片的配套电路
- 芯片的每一个VDD引脚都连接了去耦电容
- 3.3V的参考电压经过电感平滑信号,让参考电压更稳定
- BOOT0(引脚复用PB8)通过下拉电阻置低电平下载程序
- 有RESET复位按键电路,连接NRST(引脚复用PG10),低电平复位
外围配置
-
DAP-link烧录器
除了主控芯片外,开发板上还有另一块STM32芯片,其型号是STM32F103C8T6,这块芯片用作DAP-link,通过SWD接口为主控下载程序,USB下载接口连接其PA11、PA12下载引脚
DAP-link是ARM官方的开源USB调试和编程库,它允许与上位机进行USB通信,这块芯片及其外围元件构成一块最小系统板,为其事先写好USB驱动和DAP协议,充当烧录器的角色
如此我们只需要使用USB线连接电脑和开发板就能烧录程序,不必外接下载调试器了;
另外有TLV1117芯片电路把USB的5V电压降压为3.3V,为主控供电
-
储存芯片
24C02芯片提供2kb的串行EEPROM存储,可非易失性地存储256个8位字节数据,通过I2C协议读写
-
电位器
开发板上有4个电位器(滑动变阻器),分别是两路信号发生器(用作频率输出)和两路分压电位器(用作电压采集)
另外有一个数字电位器芯片(可编程电阻)MCP4017
-
LED模块/LCD显示屏
开发板上有8个LED灯,共阳极连接,而其阴极连接至SN74HC573锁存器,当对应连接的引脚输出高电平时LED熄灭,反之亮起
对锁存器,当控制引脚LE(连接至PD2引脚)为高电平时,锁存器打通,低电平时锁定;
- 打通状态:任意输入通道(1D-8D,分别连接至PC8-PC15引脚)与其对应的输出通道(1Q-8Q,分别连接LD1-LD8)的电平状态相同
- 锁定状态:输出通道将保持切换至锁定状态前的状态,不再受输入通道影响
由于引脚有限,LCD显示屏和LED灯共用一组引脚
-
按键模块
除了复位按钮外,开发板有4个独立按键B1-B4,分别连接PB0/PB1/PB2/PA0
默认上拉到高电平,在按下后与GND导通变成低电平
-
ADC模块
也即上文所述的两个用作电压采集的电位器及其配套电路,,通过调节电位器来控制引脚采集的电压,采集电压的范围是0-3.3V
电压采集1和2分别连接PB15和PB12(需要分别通过J11和J12手动跳线连接),连接STM32G4的2个快速12位ADC
-
可调脉冲输出电路
也即上文所述的两个用作频率输出的电位器及其配套电路,每一路包含一个XL555:XL555的2号和4号管脚(分别为TRIGGER与RESET)的电压值控制3号管脚(OUTPUT)的输出电平:2号降至1/3VCC时(或者5号CONT控制引脚决定的阈值电压)输出高电平;6号(THRESHOLD,与2号电路相连)升至2/3VCC时输出低电平;3号引脚与主控芯片相连以采集频率
频率输出1的输出引脚连接至PB4(需要连接J9),频率输出2的输出连接至PA15(需要连接J10)
-
IIC/EEPROM储存器/MCP4017可编程电阻
24C02储存芯片和MCP4017可编程电阻芯片共用同个I2C总线(PB6为SCL/PB7为SDA),两者地址不同,因此可以通过I2C通信进行单独控制
本文来自博客园,作者:无术师,转载请注明原文链接:https://www.cnblogs.com/artlessist/p/18860919
本文使用知识共享4.0协议许可 CC BY-NC-SA 4.0
特别说明版权归属的文章以及不归属于本人的转载内容(如引用的文章与图片)除外

浙公网安备 33010602011771号