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_tuint16_tuint32_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通信进行单独控制

posted @ 2025-05-06 09:02  无术师  阅读(447)  评论(0)    收藏  举报