编辑推荐: |
本文主要介绍了 stm32硬件开发指南相关内容。 希望对你的学习有帮助。
本文来自于st中文论坛,由火龙果软件linda编辑、推荐。 |
|
一、stm32简介
1.1 stm32简介
stm32 系列微控制器是st公司以arm公司的cortex-m0,cortex-m3,coretex-m4三大嵌入式为内核的系列产品。按内核划分,stm32
有以下几大类产品:
(1) cortex-m0内核:stm32f0系列;
(2) cortex-m3内核:stm32f1系列,stm32f2系列,stm32l系列;
(3) cortex-m4内核:stm32f4系列。
5 v) m7 _3 u f; m: l 1.2 stm32 f1主流微控制器系列
作为一个主流的微控制器系列,stm32 f1满足工业、医疗和消费电子市场的各种应用需求。凭借这个产品系列,st
在全球的arm®cortex™-m 微控制器中处于领先地位,同时,树立了嵌入式应用的里程碑。该系列最大化地集成了高性能与一流外设和低功耗、低电压工作特性;在可以接受的价格范围内提供简单的架构和易用的工具。该系列包含五个产品线,它们之间引脚、外设和软件相互兼容:
(1) 超值型系列stm32f100 - 24mhz最高主频,集成了电机控制和cec功能;
(2) 基本型系列stm32f101 - 36mhz最高主频,具有高达1m字节的片上闪存;
(3) usb基本型系列stm32f102 - 48mhz最高主频,具有全速usb模块;
(4) 增强型系列stm32f103 - 72mhz最高主频,具有高达1m 字节的片上闪存,集成电机控制、usb和can模块;
(5) 互联型系列stm32f105/107 - 72mhz最高主频,具有以太网mac、can以及usb
2.0 otg功能。
1.3 stm32 l1超低功耗微控制器系列
stm32 l1系列,基于cortex-m3内核,工作频率为32mhz,在性能、特性、存储器容量和封装引脚数量方面扩展了超低功耗产品系列。stm32
l1系列融合了高性能和超低功耗的特性,采用了优化的架构和与stm8l 系列一样的专有超低漏电生产工艺。stm32
l1分为两个不同的产品(stm32l151和stm32l152),具备了stm32f 和stm8l
的优越功能,是高性能、低功耗的应用领域的最佳选择。
(1) 最低功耗模式:0.27 μa
(2) 动态运行模式:230 μa/mhz
1.4 stm32 f2高性能微控制器系列
内置arm® cortex™-m3内核的stm32 f2系列采用了st先进的90纳米nvm制造工艺技术,并且利用了创新的自适应实时内存加速器(art加速器)和多层总线矩阵技术,具有前所未有的性价平衡比率。
这个系列具有很高的集成度:高达1m字节闪存、128k字节sram,具有以太网mac、usb 2.0高速otg、摄像头接口、硬件加密支持和外部存储器接口。
st的加速技术,使得mcu在120mhz主频下能够实现相当于零等待周期的性能,达到150dmips,同时保持动态功耗在极低水平的188μa/mhz。
可用封装有lqfp64,lqfp100,lqfp144,wlcsp64(< 4 × 4mm),ufbga176
和lqfp176 。
1.5 stm32 f4 具有数字信号处理和浮点运算指令的高性能微控制器系列
基于arm® cortex™-m4处理器的stm32 f4系列微控制器产品,是业内领先的stm32系列mcu的扩展,旨在提供更高的性能。与stm32
f2系列一样,该系列微控制器同样采用意法半导体的90 纳米工艺和特有的art 加速器,在工作频率为168mhz
时处理性能达到210 dmips/469,这是迄今所有基于cortex-m内核的微控制器产品所达到的最高基准测试分数。
数字信号处理指令和浮点运算单元扩大了产品面向的应用范围。
stm32 f4系列是微控制器的实时控制功能与数字信号处理器的信号处理功能的完美结合体,为stm32
产品系列增添了一类新型器件——数字信号控制器(dsc)。
stm32 f4系列保持与stm32f2系列的引脚到引脚及软件兼容,并提供更多静态随机存取存储器,同时改进了部分外设,如全双工i2s
总线、改进型实时时钟(rtc)和速度更快的模数转换器(adc)。
可用封装类型包括:lqfp64、lqfp100、lqfp144、lqfp176 和ufbga176。
二、注意事项
半导体工艺制程的进步,使得内部线宽原来越细,芯片工作电压也越来越低。这对于工
程师硬件设计来说,提出了更高的要求。
2.1 电源
为stm32工作提供一个干净的稳定的可靠的电源在硬件设计中是非常重要的。保证stm32系列微控制器的供电电压都是其允许的电压范围之内,以确保stm32
的正常工作和设备的安全可靠地运行。

stm32系列微控制器的供电电压范围:

stm32系列的电源结构基本都有:内核电源区域、主电源区域、adc电源区域和备份区域。每个部分对供电的要求也有所不同。
2.1.1 内核电源区域
stm32 的内核电源区主要为内核等一些数字电路提供电源,而且stm32系列内部都嵌入了一个电压调节器给内核提供一个稳定的电源电压。
(1) stm32f0系列,cortex-m0,内核电压是1.8v;
(2) stm32f1/f2系列 ,cortex-m3,内核电压是1.8v;
(3) stm32f4系列,cotex-m4,内核电压是1.2v。
由于工艺等原因,一些tm32系列的内核电源要求使用一个外部的内核电源滤波电容,在st的资料中标识为vcap电容。从st公布的资料看,此电容是在内部电压调节器之后,给内核电源滤波,提供一个稳定的电源。vcap电容引申到了芯片的gpio端口,留给用户连接一个电容(据说,降低了芯片的设计面积,降低了芯片成本)。
vcap电容在stm32f应用的情况:

* 不同封装的stm32,其vcap电容引脚也不同,详细的请参考相应的数据手册。
注意:
1) pcb布局时,务必将vcap电容贴近stm32芯片。越靠近,越好(vcap电容引脚,相对于把内核的电源线拉出来了,外部的干扰较容易进到内核。vcap的连接线越长越容易收到干扰)。
2) vcap电容要求可靠稳定。理想的是使用钽电容,其受温度等因素少,性能稳定。考虑到成本,vcap电容使用一般的陶瓷贴片电容就可以了。
2.1.2 主电源区域
确保给stm32的供电电压都能在其允许的电压范围内。除此之外,还要进一步考虑靠近电源引脚上加电容以储能,确保stm32在电压瞬间跌落时,还可以保证stm32电压在正常的范围之内。
注意:
一般地,在vdd主电源引脚上加上一个电解电容(如10uf ~ 200uf),并且再并上一个小的贴片的瓷片电容(103/104瓷片电容就可以)。电解电容和瓷片电容一般成对出现,并且在pcb布线时,将这两个电容尽可能地靠近stm32
的vdd 主电源引脚。
vcc、gnd、vdda、vssa、vref等引脚,都需要连接,不能悬空。
每对vdd_x与vss_x都必须在尽可能靠近stm32的引脚处分别放置一个10nf~100nf的高频瓷介电容。
2.1.3 adc电源区域
stm32的adc电源的参考电压vref 依据不同的产品系列而不同: 
1) 如果实际电路中,如果没有使用adc,也必须将adc的电源vdda、vssa和vref(如果有的话)连接到电源和地线,不能悬空;
2) 如果在实际应用中使用了adc,理论上,建议将pcb中数字电路单元和模拟电源两部分分开;
3) 根据不同封装,如果stm32有vref-引脚,必须将其连接到vssa。
2.1.4 备份电源区域
stm32提供了一个备份电源,用户内部备份寄存器保存数据。stm32有一个专用的引
脚vbat引脚,使用电池或者使用其他电源时,连接到此引脚上。当vdd断电时,stm32会自动切换到备份电源上,这样可以保存备份寄存器的内容和维持rtc的功能。
stm32系列不同供电的单元也不尽相同: 
注意:如果在应用中没有外部电池,建议vbat在外部通过一个100nf的陶瓷电容与vdd相连。
2.2 调试
swj调试端口是stm32内核集成的串行线/jtag调试接口(serial wire and jtag)。
stm32f0支持swd调试。 
swj电路设计注意事项:
(1) njtrst、jtdi、jtms/swdio 和jtdo引脚推荐使用10k电阻上拉至vdd,jtck/swclk引脚推荐使用10k
电阻下拉至vss;
(2) 仿真工具(stlink,jlink)通过20个脚插座的1号脚判断目标板是否供电,通过19号脚可以向目标板供电(3.3v,<100ma)
2.3 未使用的gpio端口的处理
从目前一些工程师反应的意见来看,有如下几个pg电子下载的解决方案:
(1) 悬空,不做任何处理(不推荐);
(2) 将gpio设置为输出方式(据说,可以抵挡外来的干扰,因干扰是输入类型的);
(3) 将使用的gpio通过上拉或下拉电阻接电源或地(上拉或下拉电阻一般为10k欧姆)。
2.4 stm32的i2c接口
对于stm32的i2c要特别注意。stm32的i2c是真正开路输出的,在作为gpio时,需要上拉一个电阻才能正常使用(一般地,上拉电阻为4.7k欧姆)。不使用时,建议通过一个上拉电阻接电源。
2.5 boot loader
stm32内嵌了boot loader帮助用户下载固件,其映射在uart1口上。由于stm32在复位后,其gpio端口为高阻抗状态,这时线上可能会有一些噪声,造成通讯信号的不稳定。可在uart1引脚上拉两个电阻(一般为10k欧姆左右),以提高数据通讯的可靠性。如下图所示:

2.6 stm32与大电流器件地线的布局
在pcb 上若有一些大电流器件或电路单元(如tft-lcd,大容量存储器,大电流驱动
等等)。建议分别接回到电源地上,如下图所示: 
三、stm32低功耗设计时,io引脚的配置
可以这么处理:
3.1 将未使用的gpio输入配置为模拟输入
gpio始终有一个输入通道,可以是数字或模拟通道。如果不需要读取gpio数据,则优先配置为模拟输入,这节省了输入施密特触发器的消耗。
在stm32cubemx配置中都有这么一个选项:将不用引脚配置为模拟状态。

3.2 调节gpio速度
上升时间,下降时间和最大频率可使用gpiox_ospeedr配置寄存器进行配置。这种调整对emi(电磁干扰)和sso(同时开关输出)有影响,因为开关电流峰值较高。因此必须平衡gpio性能与噪声。每个gpio信号的上升时间和下降时间必须适应与相关信号频率和电路板容性负载兼容的最小值。
3.3 不使用时禁用gpio寄存器时钟
如果某个gpio组不需要长时间使用,禁用其时钟。
比如标准外设库,禁用gpioa时钟:
rcc_apb2periphclockcmd(rcc_apb2periph_gpioa,
disable);
br
|
hal库,禁止gpioa时钟:
__hal_rcc_gpioa_clk_disable();"
~& k& e% u5 w0 w; p* x t7 [
br
|
3.4 进入低功耗模式时配置gpio
进入低功耗模式时,所有引脚信号必须连接到vdd或接地。如果gpio连接到外部接收器(外部元件输入),则必须使用pp或pu/pd强制gpio信号值。当gpio连接到驱动器(外部元件输出或总线)时,驱动器必须提供有效电平(
vdd或接地)。如果未定义驱动器电平,则必须使用pu/pd强制gpio上的信号。出于实际原因,当gpio是运行模式下的输入(模拟或数字)时,在低功耗模式下使用输入pu/pd可能更容易;当gpio是运行模式下的输出时,则使用输出pp。这可以避免在进入或退出停止模式时管理更改。
3.5 退出关机模式
退出关机(shut down)模式时,gpio会在上电复位时重新配置为默认值。
在将它们重新编程为正确值之前,这会需要额外的系统消耗。
如果这是应用程序的问题,则必须使用待机(standby)模式替代关机模式(仅限stm32l4系列和stm32l4 系列)。
|