登录/注册

stm32f20工作原理

stm32f20工作原理

更多

STM32F20 系列(主要指 STM32F2 系列)是基于 ARM Cortex-M3 内核 的高性能微控制器。其工作原理可以概括为以下几个核心层面:

  1. 核心引擎:ARM Cortex-M3 CPU

    • 指令执行: CPU 从连接到其指令总线的闪存中读取程序指令(用户编写的代码)。CPU 内部通过取指、译码、执行三个核心阶段处理这些指令。
    • 数据处理: CPU 通过其寄存器组(R0-R15,包括程序计数器 PC、堆栈指针 SP、链接寄存器 LR 等)和ALU进行算术/逻辑运算。
    • 系统控制: 通过内置的嵌套向量中断控制器管理各种硬件中断和异常,实现快速响应外部事件(如按键、定时器溢出、数据接收完成)。
    • 内存访问: CPU 通过数据总线与各类存储器(SRAM, Flash)和外设寄存器进行数据交换。
  2. 高速沟通网络:多层 AHB 总线矩阵

    • STM32F2 的核心创新之一是其高效的多层总线矩阵(Bus Matrix)架构。它不是单一的总线,而是一个互联网络
    • 功能: 允许多个总线主设备(主要是 CPU 内核、DMA1, DMA2)同时访问不同的从设备(如 Flash, SRAM, AHB 外设 GPIO, CRC 等, APB 外设 USART, SPI, I2C, TIM, ADC 等),大大减少了总线访问冲突和等待时间。
    • 层级:
      • I-Bus (Instruction Bus): CPU 专门用于访问 Flash(执行代码)的总线。
      • D-Bus (Data Bus): CPU 专门用于访问数据存储器(SRAM,外设数据)的总线。
      • S-Bus (System Bus): CPU 用于访问所有外设的系统总线(也连接到 Flash 和 SRAM)。
      • AHB 总线: 连接高速主设备(DMA1, DMA2)到总线矩阵和主要高速从设备。
      • APB 总线: 通过桥接器连接到总线矩阵。大多数外设挂在APB总线上(如 USART, SPI, TIM, ADC, DAC, I2C 等),它们相对于 CPU/DMA 速度较慢。APB 总线通常有多个(APB1, APB2)以支持不同速度和时钟源的外设。
  3. 数据搬运工:DMA 控制器

    • 用于在外设(如 ADC, DAC, SPI, UART, TIM, SDIO)和内存(SRAM)之间或内存与内存之间直接传输大量数据
    • 作用: 显著解放 CPU。当需要传输大量数据时(如 ADC 连续采样、发送大量串口数据),CPU 只需配置好 DMA 通道(源地址、目标地址、数据量、传输模式),启动 DMA。DMA 控制器会在传输完成后通过中断通知 CPU,此时 CPU 再去处理这些数据,期间 CPU 可以执行其他任务,极大提高系统效率。
  4. 存储器:程序与数据的居所

    • Flash 存储器: 存储用户程序代码、常量数据以及中断向量表(告知 CPU 遇到中断该跳到哪里执行处理程序)。STM32F2 的 Flash 具有ART™ (Adaptive Real-Time memory accelerator)加速器,相当于一个指令预取缓冲区和分支缓存,配合多层总线,使得 CPU 在通常工作频率下能从 Flash 获得接近零等待周期(Zero Wait State)的性能,大大提高执行效率。
    • SRAM: 程序运行时的“工作台”。用于存储变量、堆栈、函数调用信息以及 DMA 临时数据。读写速度非常快,无需等待周期。CPU 主要读写 SRAM。掉电后数据丢失。
  5. 外设:实现具体功能的接口

    • 种类繁多: GPIO(通用输入输出管脚)、USART/UART(串口通信)、SPI(高速串行通信)、I2C(两线制串行通信)、USB OTG(高速 USB 设备/主机/OTG)、CAN(汽车/工业总线)、SDIO(读写SD卡)、Ethernet MAC(以太网)、ADC/DAC(模数/数模转换)、Timer(定时/计数/输出 PWM)、RTC(实时时钟)、看门狗(监控系统运行)等等。
    • 工作原理:
      • CPU 或 DMA 通过访问外设寄存器配置和控制外设(如设置串口波特率、启动 ADC 转换、设置 PWM 占空比)。
      • 外设根据配置自动工作(如串口持续发送接收数据、定时器自动计数、ADC 按设置速率采样)。
      • 当外设需要 CPU 介入(如数据接收完成、转换结束、定时器溢出)时,会向 NVIC 发出中断请求。CPU 暂停当前任务,跳转到相应的中断服务程序进行快速处理。处理完毕返回原任务。
  6. 动力之源:时钟系统

    • 重要性: 如同人体的“心跳”和“血液”。为 CPU、总线、外设提供工作所需的精确时序脉冲。
    • 来源:
      • HSE(高速外部时钟): 外部晶振(如 8-25MHz),为系统提供高速、精准的主时钟源。
      • HSI(高速内部时钟): 内部 RC 振荡器(约 16MHz),精度较低,用于系统启动或作为备用时钟源。
      • LSE(低速外部时钟): 外部 32.768KHz 晶振,专供 RTC 和低功耗待机模式。
      • LSI(低速内部时钟): 内部约 32KHz RC 振荡器,用于独立看门狗和低功耗模式。
    • 核心器件:PLL (锁相环)
      • STM32F2 通常使用 PLL 将 HSE 或 HSI 的输入频率倍频到一个更高的频率(如 120MHz),作为系统主时钟 SYSCLK。SYSCLK 再经过分频器为不同总线(AHB, APB1, APB2)和外设提供所需的时钟信号。
    • 时钟树: 整个时钟分配路径非常复杂和灵活,由软件通过配置时钟控制寄存器来选择来源、使能 PLL、设置分频系数等。
  7. 系统启动与复位

    • 上电或复位后,CPU 会首先从固定地址(0x00000000,通常映射到 Flash 起始地址) 获取主堆栈指针的值(硬件初始化堆栈),然后从下一个地址(0x00000004) 获取复位向量的值(程序入口地址,通常是 Reset_Handler 函数)。
    • CPU 跳转到 Reset_Handler 函数执行,这是用汇编或 C 语言编写的启动代码。其核心任务包括:
      • 初始化关键硬件: 设置中断向量表的位置(通常在 Flash 起始处)。
      • 配置时钟: 初始化时钟源(通常启动 HSI 或 HSE,配置 PLL 倍频到目标系统频率)。
      • 配置内存区域: 初始化 .data 段(从 Flash 复制初始值到 SRAM)和 .bss 段(清零 SRAM 中的未初始化全局变量)。
      • 初始化系统: 配置 FPU(如果使用)、MPU(内存保护单元)等。
      • 跳转到 main 函数: 最终调用用户编写的 C 语言 main 函数,用户程序开始执行。
  8. 运行模式

    • 运行模式: CPU 正常工作,执行代码。
    • 低功耗模式:
      • 睡眠模式: CPU 时钟停止,外设保持运行。中断或事件可唤醒。
      • 停机模式: 所有高速时钟(HSE,HSI,PLL)停止。1.4V 域(主电源域)保持供电,可保留 SRAM 和寄存器内容。低功耗振荡器(LSI/LSE)可运行(供 RTC/IWDG)。外部中断和某些特定事件唤醒。
      • 待机模式: 电压调节器关闭。1.4V 域断电(SRAM 和寄存器内容丢失,除备份寄存器外)。只有备份域(RTC,备份寄存器,低功耗振荡器)可选供电。唤醒后等同于复位(从头开始执行程序)。从停机/待机模式唤醒时,程序可以读取特定寄存器来判断复位原因(如引脚唤醒、RTC 闹钟唤醒等),执行不同逻辑。

总结简化版的工作原理流程:

  1. 上电复位: 硬件初始化基本状态(堆栈指针)。
  2. 启动代码: CPU 跳转到启动代码(Reset_Handler)。
  3. 时钟配置: 启动代码设置系统时钟源(如 PLL 倍频)得到 SYSCLK。
  4. 内存初始化: 启动代码设置中断向量表地址,初始化 .data 和 .bss 段。
  5. 跳转 main 函数: CPU 开始执行用户编写的 main 函数。
  6. 主循环与中断:
    • main() 中通常有一个 while(1) 循环执行主要逻辑。
    • 用户代码配置所需外设(GPIO、UART、TIM 等)的寄存器。
    • CPU 按指令从 Flash 读取程序,在 SRAM 中读写数据。
    • 外设工作(如 UART 接收数据、定时器计数、ADC 采样)。
    • 当外设事件发生(如数据准备好、定时器溢出、引脚电平变化):
      • 外设向 NVIC 发出中断请求
      • CPU(如果中断被允许)暂停当前代码,保存现场,跳转到对应的中断服务程序执行。
      • 中断服务程序快速处理外设数据或事件(如读取 UART 接收寄存器、清除中断标志)。
      • 中断服务程序执行完毕,恢复现场,CPU 返回主循环(或暂停位置)继续执行。
  7. 高效数据传输: 当需要处理大块数据时(如网络数据包、文件读写),使用DMA在内存和外设间直接传输,减少 CPU 负载。CPU 只需在传输开始前配置 DMA,在传输完成中断中做后续处理。

STM32F2 系列凭借其 Cortex-M3 内核、多层总线矩阵、ART加速器、高时钟频率、丰富外设和 DMA 支持,在高效处理核心任务、高速数据传输和外设并发操作方面表现出色,非常适合需要较高性能的工控、网络、音频、存储等应用。

舵机的工作原理是什么

舵机工作原理及STM32驱动代码1.舵机接线舵机上有三根线,分别为VCC(红色正极)、GND(棕褐色负极)、信号线(橙色信号线)。标准PWM(脉冲宽度调制)信号的周期固定为

2022-01-20 06:57:03

STM32串口通讯的工作原理是什么?

STM32串口通讯的工作原理是什么?

2021-12-06 06:32:04

STM32F40X通用定时器的特点及工作原理是什么

STM32F40X系列总共有多少个定时器?分为哪几类呢?STM32F40X通用定时器的特点及工作原理是什么?

2021-11-23 06:44:52

STM32f10x官方固件库资料

STM32f10x官方固件库资料

资料下载 kafenwong 2022-01-25 10:11:42

STM32f10x官方固件库资料

STM32f10x官方固件库资料

资料下载 Kafen 2022-01-25 09:58:43

STM32STM32F4 GPIO八种模式及工作原理详解

【STM32】STM32F4 GPIO八种模式及工作原理详解1. GPIO简介GPIO,即通用I/O(输入/输出)端口,是

资料下载 佚名 2021-12-04 14:51:09

STM32STM32F4 GPIO八种模式及工作原理详解

【STM32】STM32F4 GPIO八种模式及工作原理详解1. GPIO简介GPIO,即通用I/O(输入/输出)端口,是

资料下载 佚名 2021-11-26 17:06:13

图文教程:51端口结构及工作原理

图文教程:51端口结构及工作原理

资料下载 佚名 2021-04-19 16:42:32

STM32 ADC工作原理是什么?

ADC主要特征是什么?STM32 ADC工作原理是什么?

2021-10-29 06:45:51

stm32单片机的基本工作原理

我们使用的大部分电器都使用了单片机,那么stm32单片机的基本工作原理是什么呢?下面小编就带大家了解一下stm32单片机的基本

2021-08-19 11:06:55

掌握STM32单片机的工作原理

本文以STM32F103R6为测试单片机我们经常使用单片机完成一些工作,今天我写出的几个较为经典的例子希望能够帮助大家更好的认识单片机,更好的掌握STM32

2021-08-11 08:01:37

初识STM32工作原理和基础编程 精选资料推荐

一、初识STM32如何简单的点亮一个LED灯呢?如何用一个按键控制LED灯的点亮与否呢?本文将对这些问题做一个比较详细的解答,其中还有几个比较经典的例子,希望能帮助大家更好的理解STM32的

2021-08-11 06:06:53

stm32复位电路工作原理

stm32复位电路工作原理 相信大家对复位电路已经很熟悉了,复位电路是一种用来使电路恢复到起始状态的电路设备,这次我们来讨论一下stm32复位电

2021-08-07 11:59:52

DMA工作原理

103ZET62、STM32CubeMx软件3、IDE: MDK-Keil软件4、STM32F1xx/STM32F4xxHAL库知识概括:通过本

2021-08-04 08:10:10

STM32定时器的工作原理及分类

STM32—定时器知多少这里写目录标题STM32---定时器知多少定时器的分类定时器的工作原理定时器的应用定时器的分类定时器的分类:定时器的类型

2021-08-02 09:36:20
7天热门专题 换一换
相关标签