STM32 出现的背景
基于 ARMv7 架构的 Cortex 系列由 ARM 公司在2006年推出,Cortex 系列的推出满足人们对性能日渐复杂的设计要求,根据不同需求,Cortex 系列共三个不同的子系列:
- Cortex-A 系列主要面向一些复杂的应用,用来运行一些操作系统,运用到各类消费电子中
- Cortex-R 系列主要面向实时系统,运用到军事航天
- Cortex-M 系列主要面向微控制领域,为如今工业控制系统、微控制系统等对功耗和成本要求较高的嵌入式领域实现高性能低成本提供基础,对嵌入式系统编程进行了大大简化,可以说 Cortex-M 做到了集高性能、低功耗、低成本于一体
STM32 推出
ST 公司作为全球高级半导体制造商之一,是 ARM 公司 Cortex-M3 最主要的合作方。ST 公司于 2007 年 6 月 20 日推出了 Cortex-M3 内核的 STM32 微控芯片,STM32 系列微控芯片又分成两个子系列。分别为工作频率在 36MHZ 的 STM32F101 系列,工作频率在 72MHZ 的 STM32F103 系列,后者较前者带有更多 RAM 及外设。这两个系列芯片在程序方面有很好的兼容性,有相同的 Flash,使程序开发及升级变得更加方便。
STM32 几大类
按内核架构分为不同产品:
- 主流产品,包括 STM32F0、STM32F1、STM32F3
- 超低功耗产品,包括 STM32L0、STM32L1、STM32L4、STM32L4+
- 高性能产品,包括 STM32F2、STM32F4、STM32F7、STM32H7
STM32F1 系列:
属于中低端的 32 位 ARM 微控制器,该系列芯片按本身所带的 Flash 大小可以分为三类:16K 和 32K 小容量、64K 和 128K 中容量、256K、384K 和 512K 大容量:
- ARM32 位的 Cortex-M3
- 最高 72MHz 工作频率,在存储器的 0 等待周期访问时可达 1.25DMips/MHZ
- 从 32K 到 512K 字节的闪存程序存储器
- 最大 64K 字节的 SRAM
- 2.0-3.6V 供电和 I/O 引脚
- 4-16MHZ 晶振振荡器
- 内嵌经出厂调教的 8MHz 的 RC 振荡器
- 产生 CPU 时钟的 PLL
- 带校准的 32KHz 的 RC 振荡器
- 睡眠、停机和待机模式
- Vbat 为 RTC 和后备寄存器供电
- 2 个 12 位模数转换器,1us 转换时间
- 转换范围:0 至 3.6V
- 双采样和保持功能
- 温度传感器
- 2 个 DMA 控制器,共 12 个 DMA 通道:DMA1 有 7 个通道,DMA2 有 5 个通道
- 支持的外设:定时器、ADC、SPI、USB、IElec 和 UART
- 多达 112 个快速 I/O 端口(仅 Z 系列有超过 100 个引脚)
- 串行单线调试(SWD)和 JTAG 接口
- 多达 8 个定时器
- 2 个看门狗定时器(独立的和窗口型的)
- 系统时间定时器:24 位自减型计数器
STM32F103 系列处理器作为首款 Cortex-M 内核 32 位精简指令集的处理器,具备程序代码效率高、外设丰富等许多优点。该系列处理器的频率为 72MHz,内置 Flash,存储空间高达 512K 字节,SRAM 也达到 64K 字节,为程序的编写提供了坚实的基础,同时还拥有丰富 I/O 口。
概述
在本博客网站,截止于2022/06/27,我们只讨论 STM32 家族中的基础款: STM32F1 。这款芯片搭载的是 ARM Cortex-M3 32位处理器内核。内部的数据路径是32位,寄存器是32位,存储器接口也是32位。
新的特性
与传统的 ARMv4T 架构相比 ARM7 有很大的不同和优点:
优点 | 描述 |
---|---|
架构 | ARMv7-M 哈佛架构,指令和数据总线分开,无瓶颈。 |
指令集 | Thumb/Thumb-2 指令集 16位和32位指令可直接混写,无需状态切换。 |
流水线 | 三级流水线 + 分支预测。出现转移时流水线无需刷新,几乎做到无损失。 |
性能 | 1.25 DMIPS/MHz 。 |
功耗 | 0.19 mW/MHz 。 |
低功耗模式 | 内置睡眠模式。 |
面积 | 0.86 mm² (内核 + 外设)。 |
中断 | 不可屏蔽中断 NMI + 1~240 个物理中断,每个外设都可以独占一个中断,效率高。 |
中断延迟 | 12 个时钟周期,最快只需 6 个。 |
中断压栈 | 硬件自动压栈,无需代码且效率高。 |
存储器保护 | 8 段存储器保护单元(MPU)。 |
内核寄存器 | 寄存器不分组(SP除外),结构简单。 |
工作模式 | 只有线程模式和处理模式两种,简单。 |
乘除法指令 | 单周期乘法指令,2~12周期除法指令。 |
位操作 | 先进的 Bit-band 位操作技术,可直接访问外设寄存器的某个位。 |
系统节拍定时 | 内置系统节拍定时器,有利于操作系统移植。 |
STM32F103VET6
博主到迄今一直在使用的 STM32 是某火的开发板,芯片型号 STM32F103VET6。
注意: 目前项目上所用的芯片,因进口芯片过于贵的原因,采用 GD32F103VET6 来开发,成本低,但目前国产芯片内置的温度传感器貌似不能使用。
备注:温度传感器的原因找到了,因使用了某些特定的引脚,导致电平被拉高无法正常表示高低电平,导致了内置的模拟量为常量。
型号说明
字母说明 | 描述 |
---|---|
STM32 | ST 公司基于 ARM 的32位内核生产的微控制器。 |
F | 通用类型。 |
103 | 增强型。 |
V | 100 脚封装。 |
E | 512K 字节的闪存存储器。 |
T | 封装采用 LQFP 。 |
6 | 工业级温度范围, -40℃ ~ 85℃ 。 |
硬件说明
硬件名称 | 描述 |
---|---|
CPU工作频率 | 72MHz。 |
GPIO | 80 个 I/O 口。 |
外设 | DMA,电机控制 PWM,PDR,POR,PVD,PWM,温度传感器,WDT。 |
定时器 | 4 个通用定时器,2 个高级定时器,2 个基本定时器。 |
连接性 | 1 个 CAN,1 个 FSMC,2 个 I2C,1 个 SDIO,3 个 SPI , 2 个 UART,3 个USART,1 个 USB,2 个 I2S。 |
ADC | 12 位 ADC ,三路共有 16 个通道。 |
DAC | 12 位 DAC,两路共有 2 个通道。 |
工作电压 | 2.0 ~ 3.6V ,标准为 3.3V 电压。 |
最大耗散功率 | 434mW 。 |
电气特性
需要特别注意:
所有流入 VDD 的电流之和要小于 150mA ,同理流出也是。
输出下沉电流 下于 25mA。
注入电流之和小于 25mA(正向和负向注入电流之和)。
学路漫漫其修远兮,吾将上下而求索