STM32简单介绍 一、背景如果你正为项目的处理器而进行艰难的选择:一方面抱怨16位单片机有限的指令和性能,另一方面又抱怨32位处理器的高成本和高功耗,那么,基于 ARM Cortex-M3内核的STM32系列处理器也许能帮你解决这个问题。使你不必在性能、成本、功耗等因素之间做出取舍和折衷。即使你还没有看完STM32的产品手册,但对于这样一款融合ARM和ST技术的“新生儿”相信你和我一样不会担心这款针对16位MCU应用领域 的32位处理器的性能,但是从工程的角度来讲,除了芯片本身的性能和成本之外,你或许还会考虑到开发工具的成本和广泛度;存储器的种类、规模、性能和容 量;以及各种软件获得的难易,我相信你看完本专题会得到一个满意的答案。对于在16位MCU领域用惯专用在线仿真器(ICE)的工程师可能会担心开发工具是否能够很快的上手?开发复杂度和整体成本会不会增加?产品上 市时间会不会延长?没错,对于32位嵌入式处理器来说,随着时钟频率越来越高,加上复杂的封装形式,ICE已越来越难胜任开发工具的工作,所以在32位嵌 入式系统开发中多是采用JTAG仿真器而不是你熟悉的ICE。但是STM32采用串行单线调试和JTAG,通过JTAG调试器你可以直接从CPU获取调试 信息,从而将使你的产品设计大大简化,而且开发工具的整体价格要低于ICE,何乐而不为?有意思的是STM32系列芯片上印有一个蝴蝶图像,据ST微控制器产品部Daniel COLONNA先生说,这是代表自由度,意在给工程师一个充分的创意空间。我则“曲解”为预示着一种蝴蝶效应,这种蝴蝶效应不仅会对方案提供商以及终端产 品供应商带来举足轻重的影响,而且会引起竞争对手策略的改变……翅膀已煽动,让我们一起静观其变!二、STM32市面上流通的型号截至2010年7月1日,市面流通的型号有:基本型:STM32F101R6,STM32F101C8,STM32F101R8,STM32F101V8 ,STM32F101RB,STM32F101VB增强型:STM32F103C8STM32F103R8,STM32F103V8,STM32F103RB,STM32F103VB,STM32F103VE,STM32F103ZE三、STM32系列的作用ARM公司的高性能”Cortex-M3”内核1.25DMips/MHz,而ARM7TDMI只有0.95DMips/MHz一流的外设1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI,18MHz的I/O翻转速度低功耗在72MHz时消耗36mA(所有外设处于工作状态),待机时下降到2μA最大的集成度复位电路、低电压检测、调压器、精确的RC振荡器等简单的结构和易用的工具。四、STM32F10x重要参数2V-3.6V供电容忍5V的I/O管脚优异的安全时钟模式带唤醒功能的低功耗模式内部RC振荡器内嵌复位电路工作温度范围:-40℃至+85℃或105℃五、性能特点基本型STM32F101:36MHz CPU,多达16K字节SRAM,1x12位ADC温度传感器增强型STM32F103:72MHz CPU,多达20K字节SRAM,2x12位ADC 温度传感,PWM定时器,CAN,USB六、STM32互联型系列简介:全新STM32互连型(Connectivity)系列微控制器增加一个全速USB(OTG)接口,使终端产品在连接另一个USB设备时既可以 充当USB主机又可充当USB从机;还增加一个硬件支持IEEE1588精确时间协议(PTP)的以太网接口,用硬件实现这个协议可降低CPU开销,提高 实时应用和联网设备同步通信的响应速度。全新互连型系列还是STM32家族中首款集成两个CAN2.0B控制器的产品,让开发人员能够研制可连接两条工业标准CAN(控制器区域网)总 线的 ** 设备。此外,新系列微控制器还支持以太网、USB OTG和CAN2.0B外设接口同时工作,因此,开发人员只需一颗芯片就能设计整合所有这些外设接口的 ** 设备。STM32互连型系列产品强化了音频性能,采用一个先进的锁相环机制,实现音频级别的I2S通信。结合USB主机或从机功能,STM32可以从 外部存储器(U盘或MP3播放器)读取、解码和输出音频信号。设计人员还可以在新系列微控制器上开发人机界面(HMI)功能,如播放和停止按键,以及显示 器界面。这个功能使其可用于各种家庭音响设备,如音响底座系统、闹钟/音乐播放器和家庭影院。新系列产品整合先进的面向连接的外设,标准的STM32外设(包括一个PWM定时器),高性能的32位ARM Cortex-M3 CPU,这些特性使开发人员可以在设备上(如家电、楼宇或工业自动化)整合多种功能,如马达控制、用户界面控制和设备互连功能。其它目标应用包括需要联 网、数据记录或USB外设扩展功能的系统,如病患监视、销售终端机、自动售货机和保安系统。包括新的互连型系列在内的STM32系列微控制器具有多种配套软件和开发工具,其中包括意法半导体免费提供的软件库以及第三方工具厂商的广泛支持。意法半导体还将推出一个新的评估板,目前正在向大客户提供STM32F105和STM32F107互连型系列的样片。七、STM32新系列产品的功能:STM32互连型系列产品分为两个型号:STM32F105和STM32F107。STM32F105具有USB OTG 和CAN2.0B接口。STM32F107在USB OTG 和CAN2.0B接口基础上增加了以太网10/100 MAC模块 。片上集成的以太网MAC支持MII和RMII,因此,实现一个完整的以太网收发器只需一个外部PHY芯片。只使用一个25MHz晶振即可给整个微控制器 提供时钟频率,包括以太网和USB OTG外设接口。微控制器还能产生一个25MHz或50MHz的时钟输出,驱动外部以太网PHY层芯片,从而为客户节省了一个附加晶振。音频功能方面,新系列微控制器提供两个I2S音频接口,支持主机和从机两种模式,既用作输入又可用作输出,分辨率为16位或32位。音频采样频 率从8kHz到96kHz。利用新系列微控制器强大的处理性能,开发人员可以用软件实现音频编解码器,从而消除了对外部组件的需求。把U盘插入微控制器的USB OTG接口,可以现场升级软件;也可以通过以太网下载代码进行软件升级。这个功能可简化大型系统网络(如远程控制器或销售终端设备)的管理和维护工作。八、充分发挥 STM32架构的优势:除新增的功能强化型外设接口外,STM32互连系列还提供与其它STM32微控制器相同的标准接口,这种外设共用性提升了整个产品家族的应用灵 活性,使开发人员可以在多个设计中重复使用同一个软件。新STM32的标准外设包括10个定时器、两个12位1-Msample/s 模数转换器 (交错模式下2-Msample/s)、两个12位数模转换器、两个I2C接口、五个USART接口和三个SPI端口。新产品外设共有12条DMA通道, 还有一个CRC计算单元,像其它STM32微控制器一样,支持96位唯一标识码。新系列微控制器还沿续了STM32产品家族的低电压和节能两大优点。2.0V到3.6V的工作电压范围兼容主流的电池技术,如锂电池和镍氢电 池,封装还设有一个电池工作模式专用引脚Vbat。以72MHz频率从闪存执行代码,仅消耗 27mA电流。低功耗模式共有四种,可将电流消耗降至两微安。从低功耗模式快速启动也同样节省电能;启动电路使用STM32内部生成的8MHz信号,将微 控制器从停止模式唤醒用时小于6微秒。九、存储器和封装选项:在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列和 增强型系列;新系列产品沿用增强型系列的72MHz处理频率。内存包括 ** KB到256KB闪存和 20KB到 ** KB嵌入式SRAM。新系列采用LQFP ** 、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32 平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。如何保证ADC精度之STM32的ADC共有最多3个ADC模块,最多21个ADC输入通道特性12位分辨率自校准转换结束,注入转换结束和发生模拟看门狗事件时产生中断带内嵌数据一致的数据对齐非常丰富的操作模式双重模式(带2个或以上ADC的器件)ADC转换时间:1μs:ADC时钟为14MHz时达到最快14个时钟周期,转换周期可调:14、20、26、41、54、68、84、252ADC供电要求:2.4V~3.6VADC输入范围:VREF-≤VIN≤VREF+规则通道转换期间有DMA请求产生模拟看门狗ADC输入通道映射STM32的双ADC操作模式ADC的误差种类(1) 理想ADC转换曲线(2) 实际ADC转换曲线(3) 实际ADC两终点连线ET 总误差:实际ADC转换曲线与理想曲线间的最 大偏离EO 偏移误差:实际转换曲 线上第一次跃迁与理想 曲线中第一次跃迁之差EG 增益误差:实际转换曲 线上最后一次跃迁与理 想曲线中最后一次跃迁 之差ED 微分线性误差:实际转 换曲线上步距与理想步 距(1LSB)之差EL 积分线性误差:实际转 换曲线与终点曲线间最 大偏离消除影响ADC精度的因素 1、ADC模块自身的误差积分线性误差(ILE)和微分线性误差(DLE)依赖于ADC模块的设计,校准它们是困难的。进行多次转换再做平均可以减小它们的影响。偏移和增益误差可以简单地使用ADC模块的自校准功能补偿。2、电源噪声,尤其是开关电源(PS)的高频噪声线性稳压器具有较好的输出。强烈建议在整流输出端连接滤波电容。如果使用开关型电源,建议使用一个线性稳压器为模拟部分供电。建议在电源线和地 线之间连接具有良好高频特性的电容,即在靠近电源一端应放置一个0.1μF和一个1~10μF的电容。每一对VDD和VSS管脚都需要使用单独的去藕电 容。VDDA管脚必须连接到2个外部的去藕电容器(10nF瓷介电容+1μF的钽电容或瓷介电容)对于100脚和144脚封装的产品,可以在VREF+上 连接一个外部的ADC的参考输入电压,从而改善对输入低电压的精度。1、电源输出不稳,随负载变化ADC模块使用VREF+或VDDA作为模拟参考,数字数值的输出是这个参考电压与模拟输入信号的比值,VREF+必须在各种负载情况下保持稳定。可以使用诸如LM236作为VREF+的参考电压,这是一个2.5V的电压参考二极管2、模拟输入信号的噪声平均值方法:适合处理不频繁变化的模拟输入信号,增加一个外部滤波器消除高频噪声。3、将最大的信号幅度与ADC动态范围匹配选择参考电压(仅适合于具有VREF+引脚的产品),使用一个外部的前级放大器。4、I/O引脚间的串扰(临近数字信号的翻转)模拟信号线的周围布置地线产生屏蔽,能有效地减小串扰干扰噪声。消除影响ADC精度的因素VDD与VDDA的处理供电引脚STM32共有7种封装规格,共有多组VDD/VSS引脚,以及一组VDDA/VSSA引脚。尽管所有VDD和所有VSS在内部相连,在芯片外部仍然需要连接上所有的VDD和VSS。因为导线较细,内部连接负载能力较差,抗干扰的能力也较差,如果漏接VDD或VSS,容易造成内部线路损坏,同时抗干扰能力下降。VDD与VSS的去藕电容每对VDD与VSS都必须在尽可能靠近芯片处分别放置一个10nF~100nF的高频瓷介电容。在靠近VDD3和VSS3的地方放置一个4.7μF~10μF的钽电容或瓷介电容。VDD与VDDA的关系VDDA为所有的模拟电路部分供电,包括:ADC模块,复位电路,PVD(可编程电压监测器),PLL,上电复位(POR)和掉电复位(PDR)模块,控制VBAT切换的开关等。即使不 使用ADC功能,也需要连接VDDA,强烈建议VDD和VDDA使用同一个电源供电。VDD与VDDA之间的电压差不能超过300mV,VDD与VDDA 应该同时上电或调电。供电方案 如何达到最优功耗水准低功耗模式 I/O引脚的处理 1、如果需要减小I/O端口的电流消耗,可以根据具体情况配置I/O端口的状态:输入端口配置为浮空输入,带外部上拉的输出端口配置为推挽输出并输出’1’,带外部下拉的输出端口配置为推挽输出并输出’0’。2、未用的内部外设:保持为关闭和默认的复位状态:不要进行重映射,复位寄存器RCC_APB1RSTR和RCC_APB2RSTR。关闭对应的时钟,时钟使能寄存器:RCC_AHBENR、RCC_APB2ENR和RCC_APB1ENR。进入SLEEP模式的省电操作1、为了降低系统功耗,进入SLEEP模式时,执行如下操作流程:关闭无需等待中断或事件的外设时钟;设置进入机制(Sleep-Now或Sleep-on-Exit);设置系统进入SLEEP模式。2、退出睡眠模式的方式:WFI(等待中断),可由任一外设中断触发,WFE(等待事件),可由任一外设事件触发。进入STOP省电模式的操作为了降低系统功耗,进入STOP模式的操作流程:关闭设置为普通IO功能的GPIO口时钟;关闭已开启时钟的外设的使能位(尤其是ADC、DAC、USB等带模拟模块的外设);关闭已开启时钟的外设的时钟;关闭预取缓冲区,并将Flash等待周期置为0;设置PWR_CR中LPDS位选择电压调节器的模式:正常模式:电压调节器处于正常供电状态;低功耗模式:可降低电压调节器自身的功耗,将MCU从STOP模式唤醒的时间有所增加;设置系统进入STOP模式。退出STOP省电模式的操作1、退出停止模式:以WFI进入时:任意外部中断线的中断;以WFE进入时:任意外部中断线的事件;不包括PVD和USB唤醒事件。2、从STOP模式恢复后,时钟的配置返回到复位时的状态(系统时钟为HSI),用户程序必须重新配置整个时钟系统,包括PLL。1、ADC模块自身的误差积分线性误差(ILE)和微分线性误差(DLE)依赖于ADC模块的设计,校准它们是困难的。进行多次转换再做平均可以减小它们的影响。偏移和增益误差可以简单地使用ADC模块的自校准功能补偿。2、电源噪声,尤其是开关电源(PS)的高频噪声线性稳压器具有较好的输出。强烈建议在整流输出端连接滤波电容。如果使用开关型电源,建议使用一个线性稳压器为模拟部分供电。建议在电源线和地 线之间连接具有良好高频特性的电容,即在靠近电源一端应放置一个0.1μF和一个1~10μF的电容。每一对VDD和VSS管脚都需要使用单独的去藕电 容。VDDA管脚必须连接到2个外部的去藕电容器(10nF瓷介电容+1μF的钽电容或瓷介电容)对于100脚和144脚封装的产品,可以在VREF+上 连接一个外部的ADC的参考输入电压,从而改善对输入低电压的精度。消除影响ADC精度的因素1、电源输出不稳,随负载变化ADC模块使用VREF+或VDDA作为模拟参考,数字数值的输出是这个参考电压与模拟输入信号的比值,VREF+必须在各种负载情况下保持稳定。可以使用诸如LM236作为VREF+的参考电压,这是一个2.5V的电压参考二极管。2、模拟输入信号的噪声平均值方法:适合处理不频繁变化的模拟输入信号,增加一个外部滤波器消除高频噪声。3、将最大的信号幅度与ADC动态范围匹配选择参考电压(仅适合于具有VREF+引脚的产品),使用一个外部的前级放大器。4、I/O引脚间的串扰(临近数字信号的翻转)模拟信号线的周围布置地线产生屏蔽,能有效地减小串扰干扰噪声。消除影响ADC精度的因素VDD与VDDA的处理供电引脚STM32共有7种封装规格,共有多组VDD/VSS引脚,以及一组VDDA/VSSA引脚。尽管所有VDD和所有VSS在内部相连,在芯片外部仍然需要连接上所有的VDD和VSS。因为导线较细,内部连接负载能力较差,抗干扰的能力也较差,如果漏接VDD或VSS,容易造成内部线路损坏,同时抗干扰能力下降。VDD与VSS的去藕电容每对VDD与VSS都必须在尽可能靠近芯片处分别放置一个10nF~100nF的高频瓷介电容。在靠近VDD3和VSS3的地方放置一个4.7μF~10μF的钽电容或瓷介电容。 VDD与VDDA的关系 VDDA为所有的模拟电路部分供电,包括: ADC模块,复位电路,PVD(可编程电压监测器),PLL,上电复位(POR)和掉电复位(PDR)模块,控制VBAT切换的开关等。即使不 使用ADC功能,也需要连接VDDA,强烈建议VDD和VDDA使用同一个电源供电。VDD与VDDA之间的电压差不能超过300mV,VDD与VDDA 应该同时上电或调电。1、如果需要减小I/O端口的电流消耗,可以根据具体情况配置I/O端口的状态:输入端口配置为浮空输入,带外部上拉的输出端口配置为推挽输出并输出’1’,带外部下拉的输出端口配置为推挽输出并输出’0’。2、未用的内部外设:保持为关闭和默认的复位状态:不要进行重映射,复位寄存器RCC_APB1RSTR和RCC_APB2RSTR。关闭对应的时钟,时钟使能寄存器:RCC_AHBENR、RCC_APB2ENR和RCC_APB1ENR。进入SLEEP模式的省电操作1、为了降低系统功耗,进入SLEEP模式时,执行如下操作流程:关闭无需等待中断或事件的外设时钟;设置进入机制(Sleep-Now或Sleep-on-Exit);设置系统进入SLEEP模式。2、退出睡眠模式的方式:WFI(等待中断),可由任一外设中断触发,WFE(等待事件),可由任一外设事件触发。进入STOP省电模式的操作为了降低系统功耗,进入STOP模式的操作流程:关闭设置为普通IO功能的GPIO口时钟;关闭已开启时钟的外设的使能位(尤其是ADC、DAC、USB等带模拟模块的外设);关闭已开启时钟的外设的时钟;关闭预取缓冲区,并将Flash等待周期置为0;设置PWR_CR中LPDS位选择电压调节器的模式:正常模式:电压调节器处于正常供电状态;低功耗模式:可降低电压调节器自身的功耗,将MCU从STOP模式唤醒的时间有所增加;设置系统进入STOP模式。退出STOP省电模式的操作1、退出停止模式:以WFI进入时:任意外部中断线的中断;以WFE进入时:任意外部中断线的事件;不包括PVD和USB唤醒事件。2、从STOP模式恢复后,时钟的配置返回到复位时的状态(系统时钟为HSI),用户程序必须重新配置整个时钟系统,包括PLL。