单片机:STM32F103的架构

STM32F103是STMicroelectronics推出的一款基于ARM Cortex-M3内核的32位微控制器(MCU),属于STM32F1系列,广泛应用于工业控制、汽车电子、消费电子等领域。以下是对STM32F103架构的详细介绍,涵盖其核心、存储器、总线、外设及关键特性,旨在提供全面且清晰的说明。


1. 总体架构概述

STM32F103采用ARM Cortex-M3内核,结合ST的定制化外设和存储器架构,形成高效的嵌入式系统。其架构可以分为以下几个主要部分:

  • 核心:Cortex-M3处理器,32位RISC架构,主频最高72MHz。
  • 存储器:Flash、SRAM和寄存器,支持程序存储和数据处理。
  • 总线系统:多层AHB总线和APB总线,连接核心与外设。
  • 外设:丰富的外设模块,如GPIO、UART、SPI、I2C、CAN、ADC等。
  • 时钟与电源管理:灵活的时钟树和低功耗模式。

下图为STM32F103的简化架构框图(文字描述):

Cortex-M3 Core <-> NVIC <-> AHB System Bus
    |                    |
Flash/SRAM <-> AHB <-> DMA <-> Peripherals (APB1/APB2)
    |                    |
Clock (RCC) <-> Power Management

2. 核心:ARM Cortex-M3

STM32F103的核心是ARM Cortex-M3,这是一个专为嵌入式应用设计的32位RISC处理器,具有以下特性:

  • 指令集:支持Thumb-2指令集,兼顾高性能和代码密度。
  • 主频:最高72MHz(通过PLL倍频,基于8MHz外部晶振或内部RC振荡器)。
  • 流水线:3级流水线(取指、解码、执行),提高指令执行效率。
  • 中断管理:嵌套向量中断控制器(NVIC):
    • 支持多达60个中断通道(具体数量因型号而异)。
    • 可配置中断优先级(4位抢占优先级,4位子优先级)。
    • 支持快速中断响应(12周期中断进入延迟)。
  • 调试支持
    • 集成JTAG/SWD接口,支持实时调试和跟踪。
    • 包含数据观察点和断点单元(DWT、ITM)。
  • 哈佛架构:指令和数据总线分离,提高并行处理能力。

性能:Cortex-M3提供1.25 DMIPS/MHz的性能,STM32F103在72MHz下可达90 DMIPS。


3. 存储器架构

STM32F103的存储器系统包括以下部分:

  • Flash存储器
    • 用于存储程序代码和常量。
    • 容量:根据型号不同,常见为64KB(STM32F103C8T6)、128KB(STM32F103RBT6)至512KB(STM32F103ZET6)。
    • 支持页面擦除和编程,页面大小为1KB或2KB。
    • 包含选项字节(Option Bytes),用于配置读保护、写保护等。
  • SRAM
    • 用于运行时数据存储(如变量、堆栈)。
    • 容量:20KB(C8T6)、48KB(ZET6)等,具体因型号而异。
    • 支持零等待周期访问(在72MHz下)。
  • 备份寄存器
    • 42字节备份寄存器,用于掉电后保存关键数据(需VBAT供电)。
  • 存储器映射
    • 地址空间分为多个区域(基于ARM Cortex-M3标准):
      • 0x0000_0000 - 0x1FFF_FFFF:代码区(Flash或SRAM映射)。
      • 0x2000_0000 - 0x2000_FFFF:SRAM区。
      • 0x4000_0000 - 0x5FFF_FFFF:外设寄存器区(APB1、APB2、AHB)。
      • 0xE000_0000 - 0xE00F_FFFF:Cortex-M3内部外设(如NVIC、SysTick)。
  • 启动模式
    • 支持从Flash、SRAM或系统存储器启动,通过BOOT引脚配置。

4. 总线系统

STM32F103采用**多层AHB(Advanced High-performance Bus)APB(Advanced Peripheral Bus)**总线架构,确保高效的数据传输和外设访问:

  • AHB总线
    • 高性能总线,连接Cortex-M3核心、存储器和DMA控制器。
    • 支持32位数据传输,运行在系统时钟(最高72MHz)。
    • 包含多个AHB矩阵,允许并行访问(如核心访问Flash时,DMA访问SRAM)。
  • APB总线
    • 分为APB1(低速,最高36MHz)和APB2(高速,最高72MHz)。
    • APB1连接低速外设(如I2C、UART2-5、CAN)。
    • APB2连接高速外设(如GPIO、SPI1、USART1、ADC)。
  • DMA(Direct Memory Access)
    • STM32F103提供1或2个DMA控制器(型号相关),每个控制器支持7或12通道。
    • 支持存储器到存储器、存储器到外设、外设到存储器传输。
    • 减轻CPU负担,适合高吞吐量任务(如ADC数据采集、UART数据传输)。

5. 外设模块

STM32F103集成了丰富的片上外设,增强了其应用灵活性:

  • GPIO(通用输入输出)
    • 多达80个GPIO引脚(视封装而定,如LQFP48、LQFP64)。
    • 支持多种模式:输入、输出、复用功能、模拟输入。
    • 可配置上拉/下拉电阻、推挽/开漏输出。
  • 定时器
    • 4个通用定时器(TIM2-TIM5),支持PWM、输入捕获、输出比较等。
    • 1个高级定时器(TIM1),适合电机控制。
    • 2个基本定时器(TIM6-TIM7),用于DAC触发或简单计时。
    • 2个看门狗(独立看门狗IWDG、窗口看门狗WWDG)。
  • 通信接口
    • USART/UART:3-5个串口(型号相关),支持异步通信,最高4.5Mbps。
    • SPI:1-2个SPI接口,支持主/从模式,最高18Mbps。
    • I2C:1-2个I2C接口,支持标准/快速模式(100/400kHz)。
    • CAN:1个bxCAN控制器,支持CAN 2.0A/B协议,最高1Mbps。
    • USB:1个全速USB 2.0接口(12Mbps),支持设备模式。
  • 模拟外设
    • ADC:2个12位ADC,最高1Msps,支持多达16个通道。
    • DAC:部分型号支持2通道12位DAC。
    • 温度传感器:内置,连接到ADC通道。
  • RTC(实时时钟)
    • 支持日历、闹钟功能,使用32.768kHz外部晶振或内部RC振荡器。
  • CRC单元
    • 硬件计算循环冗余校验,用于数据完整性验证。

6. 时钟与电源管理

  • 时钟系统(RCC)
    • 时钟源
      • HSE(外部高速晶振,4-16MHz,典型8MHz)。
      • HSI(内部8MHz RC振荡器)。
      • LSE(外部32.768kHz晶振,用于RTC)。
      • LSI(内部40kHz RC振荡器,用于IWDG)。
    • PLL:倍频HSE/HSI,最高输出72MHz。
    • 时钟分配
      • 系统时钟(SYSCLK):最高72MHz,供CPU和AHB使用。
      • APB1时钟:最高36MHz。
      • APB2时钟:最高72MHz。
      • ADC时钟:最高14MHz(由APB2分频)。
  • 电源管理
    • 工作电压:2.0V-3.6V(主电源VDD)。
    • 备份电源(VBAT):1.8V-3.6V,用于RTC和备份寄存器。
    • 低功耗模式:
      • 睡眠模式:仅CPU停止,外设和中断仍工作。
      • 停止模式:所有时钟停止,SRAM和寄存器内容保留。
      • 待机模式:最低功耗,仅备份域工作。

7. 关键特性与优势

  • 高性能:Cortex-M3内核结合72MHz主频,提供强大的计算能力。
  • 低成本:STM32F103C8T6(64KB Flash)价格低廉,适合入门和量产。
  • 丰富外设:支持多种通信协议和模拟功能,满足多样化需求。
  • 灵活性:多种封装(LQFP48/64/100等)和存储容量,适应不同应用。
  • 开发支持
    • ST提供STM32CubeMX和HAL库,简化外设配置。
    • 支持多种IDE(STM32CubeIDE、Keil、IAR)。
    • 丰富的社区资源和开发板(如“蓝板”、正点原子)。

8. 型号差异

STM32F103系列根据Flash容量、引脚数和外设配置分为多种型号:

  • 低密度:如STM32F103C8T6(64KB Flash,48引脚)。
  • 中密度:如STM32F103RBT6(128KB Flash,64引脚)。
  • 高密度:如STM32F103ZET6(512KB Flash,144引脚)。
  • 差异点
    • Flash/SRAM容量。
    • 外设数量(如UART、SPI、ADC通道数)。
    • 引脚数和封装类型(LQFP、BGA等)。

9. 典型应用场景

  • 工业控制:PLC、传感器数据采集。
  • 汽车电子:CAN总线通信、仪表控制。
  • 消费电子:智能家居、无人机。
  • 医疗设备:便携式监测仪。
  • 通信设备:USB/UART接口模块。

10. 学习资源

  • 官方文档
    • STM32F103参考手册:详细描述寄存器和外设。
    • Cortex-M3技术参考手册:核心架构说明。
  • 教程
    • 正点原子、野火的STM32F1开发指南。
    • ST社区论坛和STM32CubeMX教程。
  • 工具
    • STM32CubeMX:生成初始化代码。
    • STM32CubeIDE:开发和调试环境。

11. 总结

STM32F103的架构以ARM Cortex-M3为核心,结合多层AHB/APB总线、丰富的外设和灵活的存储器系统,提供了高性能、低成本的嵌入式解决方案。其核心特点包括高效的指令执行、强大的中断管理、多种通信接口和低功耗设计。理解其架构有助于开发者优化代码、配置外设和设计高效应用。

你可能感兴趣的:(单片机:STM32F103的架构)