工程师笔记|带有空片检测功能的STM32需注意的GPIO设计

最新更新时间:2023-02-02来源: zhihu关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章

引言

从STM32F0部分型号开始,比如STM32F04x和STM32F09x,STM32越来越多的型号具有了空片检测(Empty Check)功能。以前,STM32的启动由BOOT0和BOOT1来决定,在引入了空片检测功能之后,则在BOOT0=0的情况下,还需要分两种情况:


一是内部已经存在代码,则从用户存储区启动;

二是如果是空片,则从系统存储区启动,执行内部Bootloader。


它带来什么好处呢?客户如果是空片上板,无需对BOOT0引脚进行跳线,就可以直接使用内部Bootloader进行串口或其他通讯口进行代码烧录了,可以说非常地方便。但是,这同时为GPIO的设计带来一个非常大的风险,在电路设计时需要引起注意,做好相应的措施。



问题起源

某客户在其产品的设计中,使用STM32G0B1RET6。有一天,客户工程师在测试电流的时候,无意间发现一个情况,说“有个比较奇怪的情况,STM32G0B1没有烧录代码的情况下,会比有烧录代码的情况下电流多了几十毫安。”按我们以往的认知,在没有烧录代码的情况下,没有任何操作,不该会出现这种情况啊。那么这是什么情况呢?


问题分析

测量STM32G0B1在没有烧录代码下的GPIO在悬空下的电平,可以发现有部分GPIO呈现为高电平,比如PA2/PA3和PA9/PA10。而客户在PA9上接了一个外部驱动电路,由高电平驱动,所以PA9的高电平,带动了该部分电路的工作,导致了电流的增加。

从参考手册RM0444的GPIO一章,我们知道STM32G0的GPIO在上电后应该为模拟状态,所以这些呈现高电平的GPIO显得有点奇怪。

突然想起STM32F091等型号早就已经有的空片检测功能,就继续查看STM32G0的参考手册RM0444的 “Memory and bus architecture”一章,果然,发现STM32G0系列同样拥有空片检测功能。也就是说,STM32G0B1在没有烧录代码的情况下,它是要到系统存储区去执行内部Bootloader的。

此时,需要打开应用笔记AN2606《STM32微控制器系统存储器自举模式》了解一下STM32G0B1在系统Bootloader下GPIO的状态。

由于之前已经检测到PA2/PA3和PA9/PA10为高电平,而这两个引脚对刚好是Bootloader中所用到USART1和USART2对应的GPIO引脚。于是,检查其在Bootloader中的配置状态,请参考图1。

Figure 1 系统Bootloader下USART1/2的端口状态


从图1中可以了解到PA2/PA3/PA9/PA10均配置为复用推挽结构,带上拉电阻。其中PA10/PA3为输入口,PA2/PA9为输出口。

使用一个1kΩ的电阻来测量PA9/PA10的端口状态,来确定其高电平的来源。系统VDD的电压为3.22V。


测量之前,需要了解一下GPIO的结构,如图2。

Figure 2 复用功能配置下的I/O的结构


从图2中可以得知,当作为输出时,端口上呈现的高电平来自P-MOS上的VDDIOX;当作为输入时,端口上呈现的高电平来自上拉电阻上的VDDIOX。下面来验证测试一下。

先对输出口PA9进行测量,使用1kΩ电阻串入PA9与VSS之间,并串上电流表,测得电流为3.22mA。由U=I·R公式,刚刚好,总电阻R = U / I = 3.22V ÷ 3.22mA = 1kΩ。也就是说,PA9的高电平由推挽结构中的P-MOS连接的VDDIOX提供,内部没有电阻。

再来对输入口PA10进行测量,使用1kΩ电阻串入PA10与VSS之间,并串上电流表,测得电流为85.4uA。总电阻R = U / I = 3.22V ÷ 85.4uA = 37.7kΩ,大于在外部串接的1kΩ电阻。也就是说,PA10的高电平来自上拉电阻所连接的VDDIOX,而且内部上拉电阻RPU = 37.7kΩ - 1kΩ = 36.7kΩ。

多加一步再次确认输入口PA10的情况,这次不使用1kΩ电阻,而是直接将PA10串上电流表连接到VSS,得到电流值为87.7uA。内部上拉电阻RPU = U / I = 3.22V ÷ 87.7uA = 36.7kΩ,与上面的测试是相同的。也符合STM32G0B1数据手册中内部上拉电阻的范围,如图3。

Figure 3 I/O的上下拉电阻参数


存在的风险

到此,已经清楚用户存储区没有烧录代码的时候,STM32启动将进入系统 Bootloader,PA9被设置为复用输出并输出高电平,从而推动外部电路产生的电流增加。但是我们应该更加深入地研究这个问题。客户的情况还算是比较好的,接的是一个驱动电路,并不会带来损坏。

想象一下,如果在客户的应用中,PA9是用作输入口,用来连接一个传感器的中断输出,比如连接3轴MEMS加速度计LIS2DH12的INT1/2引脚。查看LIS2DH12的数据手册,可以得知INT1和IN2引脚的初始状态是输出低电平的,如图4。

Figure 4 LIS2DH的INT1/INT2引脚初始状态


由于LIS2DH12的INT引脚初始状态是推挽输出且输出低电平,如果直接连接到PA9,而用户打算将空片先焊接于用户板,再进行代码烧录的话,那么,当上电的时候,LIS2DH12的INT引脚输出低电平,而STM32G0B1进入内部Bootloader后PA9输出高电平,直连将导致短路,电流从STM32G0B1的PA9内部的VDDIOX经过P-MOS,从PA9引脚出来,经过连接线,到达LIS2DH12的INT引脚,从内部的M-MOS流到VSS,中间因为没有电阻而造成短路,很可能会对芯片产生损坏。所以必须加以注意!


PA10作为复用输入功能,倒是没有这个风险。


结论

由于空片检测功能的存在,带有此功能的STM32型号在空片的情况下启动,将会进入系统存储区,执行内部Bootloader。内部Bootloader会将部分GPIO设置为复用功能输出引脚并输出高电平或低电平,如果此引脚在用户应用中作为输入引脚连接到外部芯片的输出引脚,那么STM32空片事先焊接于用户板时,上电将可能带来极大的风险。在GPIO设计中如遇到有空片检测功能的STM32必须对此加以注意。



解决办法

两种解决办法供用户选择。

1) 在两个芯片的连接中串入电阻进行保护,流经此电阻的电流必须要低于GPIO的注入电流,而且还必须保证不影响双边的高低电平识别。

2) 在使用带有空片检测功能的STM32型号中,在硬件设计上要预先检查AN2606中所描述的Bootloader使用并配置的复用功能输出引脚,在GPIO设计时避免在用户应用中将其作为输入引脚。


以上两种方法,推荐使用第二种方法,更简单、更稳妥。


关键字:STM32 编辑:什么鱼 引用地址:工程师笔记|带有空片检测功能的STM32需注意的GPIO设计

上一篇:工程师笔记|STM32G4 Advanced Timer Break 功能
下一篇:工程师笔记|STM32H7双核CM4作为Master初始化系统

推荐阅读

意法半导体推出STM32WB1MMC Bluetooth® LE 认证模块 简化并加快无线产品开发
意法半导体推出STM32WB1MMC Bluetooth® LE 认证模块简化并加快无线产品开发2023 年 3 月 28 日,中国——意法半导体新推出的STM32 Bluetooth® 无线模块让设计人员能够在无线产品尤其是中低产量项目中发挥STM32WB双核微控制器(MCU) 的优势。该模块取得Bluetooth Low Energy 5.3认证和全球无线电设备许可证,支持STM32Cube 生态系统,有助于简化应用开发,加快产品研发周期。STM32WB1MMC多合一模块缓解了供应链紧张难题和交货时间问题,并有助于避免认证成本和认证延误产品开发。STM32WB1MMC是一个LGA 封装的功能完整的无线通信参考设计,在一块经济的P
发表于 2023-03-28
意法半导体推出STM32WB1MMC Bluetooth® LE 认证模块  简化并加快无线产品开发
半个小时搞定——stm32 之 DAC
DAC 可谓是 stm32 继按键最简单的一个寄存器配置吧,花了半个小时搞定!DAC 主要特征● 2 个 DAC 转换器:每个转换器对应 1 个输出通道● 8 位或者 12 位单调输出● 12 位模式下数据左对齐或者右对齐● 同步更新功能● 噪声波形生成● 三角波形生成● 双 DAC 通道同时或者分别转换● 每个通道都有 DMA 功能● 外部触发转换看了这些东西,貌似很激动的样子,我们下面就开始配置 DAC 外设了先直接看看寄存器:位 12 DMAEN1:DAC 通道 1 DMA 使能(DAC channel1 DMA enable 该位由软件设置和清除。0:关闭 DAC 通道 1 DMA 模式;1:使能 DAC 通道 1 DMA
发表于 2023-03-28
基于STM32的高性能、低成本芯片的税控器方案设计
随着金税工程的推广,税控市场将得到迅猛发展,作为四大税控产品之一,其市场份额不容小觑,税控厂家需要为产品的性能、成本做多方面考量。之前各个厂家的税控器方案,可能因为成本的考虑选择了8位单片机,也有因为性能扩展的需要选择16位、32位MCU作为税控器主控芯片。今天,ST(意法半导体公司)延续了其之前基于STR7的税控器体系架构,并借鉴在STR9银税一体机方案中的经验,推出了一款采用2这一高性能、的税控器方案。  方案介绍 与以往方案(图1)对比,STM32方案(图2)结构简单,模块功能化,减少了外部数据总线的数量,有效减小制板面积,很好地保证了系统的可靠性及安全性。ST还提供详细的设计报告,无论是软件还是硬件的开发都大大缩短了厂家的开
发表于 2023-03-28
STM32 在温度监控系统中的应用
引言现代工业控制领域通常要测量很多信号,将其转化为计算机可以识别的二进制信号,并利用计算机监视和记录各种测量的信号。这个过程就要涉及到信号的采集和处理。CAN 总线是一种串行多主总线,它卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。本文介绍了基于 STM32 和 CAN 总线的温度监控系统的设计,通过上位机与下位机的通信,实现对温度数据的监控,并经初步实验达到了设计的要求。1 系统总体方案概述系统总体框图如图 1 所示,本系统采用主站+从站的结构,CAN 主站主要实现温度数据的存储以及 CAN 总线协议和串口协议之间的桥接,CAN 从站主要实现温
发表于 2023-03-28
基于STM32的景点语音自动导览系统的研究与设计
景点语音导览主要有以下几种方式:一种是通过定位系统(GPS)的用户终端接收工作卫星的导航信息,从而解算出车辆的经纬度信息,进而计算出实时坐标,将其与景点坐标相比较,当车辆驶入景点一定距离范围内时,不用人工干预,系统自动播报景点语音信息;另一种是对车轮轴的转角脉冲进行计数,将计数值和预置值对比,即可确定播放时刻,达到准确播放景点语音信息的目的;第三种方案是利用无线射频识别技术,在每一个景点范围内设置一个具有ID 的射频发射器,采用间歇工作方式发射信号,当旅游列车即将到达景点时,车载系统接收到射频发射器信号并解码出景点的ID 号,由系统控制自动播放对应编号的景点语音信息。由于景点自然环境的复杂性,种方式难以满足系统要求;第二种方式简单可
发表于 2023-03-28
一个严谨的STM32串口DMA发送&接收(1.5Mbps波特率)机制
1 前言直接存储器访问(Direct Memory Access),简称 DMA。DMA 是 CPU 一个用于数据从一个地址空间到另一地址空间“搬运”(拷贝)的组件,数据拷贝过程不需 CPU 干预,数据拷贝结束则通知 CPU 处理。因此,大量数据拷贝时,使用 DMA 可以释放 CPU 资源。DMA 数据拷贝过程,典型的有:内存—>内存,内存间拷贝外设—>内存,如 uart、spi、i2c 等总线接收数据过程内存—>外设,如 uart、spi、i2c 等总线发送数据过程2 串口有必要使用 DMA 吗串口(uart)是一种低速的串行异步通信,适用于低速通信场景,通常使用的波特率小于或等于 115200bps。对于小于或
发表于 2023-03-28
小广播
设计资源 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved