STM32与单片机
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。由于8位单片机由于内部构造简单,体积小,成本低廉,在一些较简单的控制器中应用很广。常见的8位单片机主要有:Intel的51系列,Atmel的AVR系统,Microchip公司的PIC系列,TI的MSP430系列等。而STM32是一种功能比较强大的32位的单片机。它和8位单片机最大的不同是,它不仅可以使用寄存器进行编程,还可以使用官方提供的库文件进行编程,这样不仅编程方便,而且更容易移植。
STM32与嵌入式
嵌入式是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。主要分为DSP,微控制器MCU,微处理器,SOC四种。一个完整的嵌入式系统,从开发过程分为4层:硬件层、驱动层、操作系统层和应用层。而STM32是MCU的一种,故也属于嵌入式技术。
STM32与ARM
ARM可以说是一个公司的名称,一类微处理的通称,也代表一种技术。其实ARM是一个做芯片标准的公司,它负责芯片内核的架构设计,而把具体的实现,授权给像TI,ST等半导体公司。例如任何一个Cortex-M3芯片,他们的内核结构都是一样的,不同的是他们的存储器容量,片上外设,IO 以及其他模块的区别。ARM公司为了能让不同的芯片公司生产的Cortex-M3芯片能在软件上基本兼容,和芯片生产商共同提出了一套标准CMSIS标准(Cortex Microcontroller Software Interface Standard),翻译过来是ARM Cortex™ 微控制器软件接口标准”,也就是其库函数。
STM32系列32位Flash微控制器基于ARM Cortex™-M处理器,旨在为MCU用户提供新的开发自由度。它包括一系列32位产品,集高性能、实时功能、数字信号处理、低功耗与低电压操作等特性于一身,同时还保持了集成度高和易于开发的特点。主要的产品型号有:
STM32F1系列主流MCU
STM32 F1系列主流MCU满足了工业、医疗和消费类市场的各种应用需求。凭借该产品系列,意法半导体在全球ARM Cortex-M 微控制器领域处于领先地位,同时树立了嵌入式应用的里程碑。该系列利用一流的外设和低功耗、低压操作实现了高性能,同时还以可接受的价格、利用简单的架构和简便易用的工具实现了高集成度。
该系列包含五个产品线,它们的引脚、外设和软件均兼容。
• 超值型STM32F100- 24 MHz CPU,具有电机控制和CEC功能
• 基本型STM32F101- 36 MHz CPU,具有高达1MB的Flash
• STM32F102 – 48 MHz CPU具备USB FS
• 增强型STM32F103- 72 MHz CPU,具有高达1MB的Flash、电机控制、USB和CAN
• 互联型STM32F105/107- 72 MHz CPU,具有以太网MAC、CAN和USB 2.0 OTG
当前主要的产品型号有:
STM32F103
STM32F103器件采用Cortex-M3内核,CPU最高速度达72 MHz。该产品系列具有16KB~ 1MB Flash、多种控制外设、USB全速接口和CAN。具体的产品型号及对应的Flash大小、封装类型以及引脚数,如下图所示
STM32F103ZE功能特点
我们
本系列将采用STM32F103ZE芯片进行实验,其具备的功能特点有:
内核:ARM32位Cortex-M3 CPU,最高工作频率72MHz,1.25DMIPSMHz。单周期乘法和硬件除法。
存储器:片上集成512KB的Flash存储器。6-64KB的SRAM存储器。
时钟、复位和电源管理:2.0-3.6V的电源供电和IO接口的驱动电压。POR、PDR和可编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。
低功耗:3种低功耗模式:休眠,停止,待机模式。为RTC和备份寄存器供电的VBAT。
调试模式:串行调试(SWD)和JTAG接口。
DMA:12通道DMA控制器。
支持的外设:定时器,ADC,DAC,SPI,IIC和UART。
2个12位的us级的AD转换器(16通道):AD测量范围:0-3.6 V。双采样和保持能力。片上集成一个温度传感器。
2通道12位DA转换器:STM32F103xC,STM32F103xD,STM32F103xE独有。
最多高达112个的快速IO端口:根据型号的不同,有26,37,51,80,和112的IO端口,所有的端口都可以映射到16个外部中断向量。除了模拟输入,所有的都可以接受5V以内的输入。
最多多达11个定时器:4个16位定时器,每个定时器有4个ICOCPWM或者脉冲计数器。2个16位的6通道高级控制定时器:最多6个通道可用于PWM输出。
2个看门狗定时器(独立看门狗和窗口看门狗)。
定时器:24位倒计数器。2个16位基本定时器用于驱动DAC。
最多多达13个通信接口:2个IIC接口(SMBusPMBus)。5个USART接口(ISO7816接口,LIN,IrDA兼容,调试控制)。3个SPI接口(18 Mbits),两个和IIS复用。CAN接口(2.0B)。USB 2.0全速接口。SDIO接口。
STM32的优异性体现在如下几个方面:
1, 超低的价格。以8位机的价格,得到32位机,是STM32最大的优势。
2, 超多的外设。STM32拥有包括:FSMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、ADC、DAC、RTC、DMA等众多外设及功能,具有极高的集成度。
3, 丰富的型号。STM32仅M3内核就拥有F100、F101、F102、F103、F105、F107、F207、F217等8个系列上百种型号,具有QFN、LQFP、BGA等封装可供选择。同时STM32还推出了STM32L和STM32W等超低功耗和无线应用型的M3芯片。
4, 优异的实时性能。84个中断,16级可编程优先级,并且所有的引脚都可以作为中断输入。
5, 杰出的功耗控制。STM32各个外设都有自己的独立时钟开关,可以通过关闭相应外设的时钟来降低功耗。
6, 极低的开发成本。STM32的开发不需要昂贵的仿真器,只需要一个串口即可下载代码,并且支持SWD和JTAG两种调试口。SWD调试可以为你的设计带来跟多的方便,只需要2个IO口,即可实现仿真调试。
学习STM32有两份不错的中文资料:
《STM32参考手册》中文版V10.0
《Cortex-M3权威指南》中文版(宋岩 译)
前者是ST官方针对STM32的一份通用参考资料,内容翔实,但是没有实例,也没有对Cortex-M3构架进行多少介绍(估计ST是把读者都当成一个Cortex-M3熟悉者来写的),读者只能根据自己对书本的理解来编写相关代码。后者是专门介绍Cortex-M3构架的书,有简短的实例,但没有专门针对STM32的介绍。所以,在学习STM32的时候,必须结合这份资料来看。
参考链接
[1] STM32维基百科
[2] 意法半导体微控制器
[3] 13个基于STM32的经典项目设计实例
[4] STM32官方学习笔记