你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

带有空片检测功能的 STM32 需注意的 GPIO 设计

[复制链接]
STMCU小助手 发布时间:2022-8-7 17:03
1. 引言
7 R  M  _' t' P- p从 STM32F0 部分型号开始,比如 STM32F04x 和 STM32F09x,STM32 越来越多的型号具有了空片检测(Empty Check)功能。以前,STM32 的启动由 BOOT0 BOOT1来决定,在引入了空片检测功能之后,则在 BOOT0=0 的情况下,还需要分两种情况:一是内部已经存在代码,则从用户存储区启动;二是如果是空片,则从系统存储区启动,执行内部 Bootloader。它带来什么好处呢?客户如果是空片上板,无需对 BOOT0 引脚进行跳线,就可以直接使用内部 Bootloader 进行串口或其他通讯口进行代码烧录了,可以说非常地方便。但是,这同时为 GPIO 的设计带来一个非常大的风险,在电路设计时需要引起注意,做好相应的措施。
. A/ O% v% `) ?( \  D3 Z
2. 问题' x* _* i2 j$ k' z
2.1. 问题起源
! V6 f& R* d5 u- n$ C2 x9 n某客户在其产品的设计中,使用 STM32G0B1RET6。有一天,客户工程师在测试电流的时候,无意间发现一个情况,说“有个比较奇怪的情况,STM32G0B1 没有烧录代码的情况下,会比有烧录代码的情况下电流多了几十毫安。”按我们以往的认知,在没有烧录代码的情况下,没有任何操作,不该会出现这种情况啊。那么这是什么情况呢?4 f  i% b* z* k: \7 D$ C
2.2. 问题分析
6 P& U7 o9 ^' `" A& f& x% p测量 STM32G0B1 在没有烧录代码下的 GPIO 在悬空下的电平,可以发现有部分GPIO 呈现为高电平,比如 PA2/PA3 和 PA9/PA10。而客户在 PA9 上接了一个外部驱动电路,由高电平驱动,所以 PA9 的高电平,带动了该部分电路的工作,导致了电流的增加。
( `4 x% ~0 i/ E' K2 G. a. R; Q从参考手册 RM0444 的 GPIO 一章,我们知道 STM32G0 的 GPIO 在上电后应该为模拟状态,所以这些呈现高电平的 GPIO 显得有点奇怪。
- K$ C, J/ j; ~突然想起 STM32F091 等型号早就已经有的空片检测功能,就继续查看 STM32G0 的参考手册 RM0444 的 “Memory and bus architecture”一章,果然,发现 STM32G0 系列同样拥有空片检测功能。也就是说,STM32G0B1 在没有烧录代码的情况下,它是要到系统存储区去执行内部 Bootloader 的。
+ h# T, s  ?4 m9 Q/ ?此时,需要打开应用笔记 AN2606《STM32 微控制器系统存储器自举模式》了解一下STM32G0B1 在系统 Bootloader 下 GPIO 的状态。
3 S1 q! g% ]; s; @8 Z由于之前已经检测到 PA2/PA3 和 PA9/PA10 为高电平,而这两个引脚对刚好是Bootloader 中所用到 USART1 和 USART2 对应的 GPIO 引脚。于是,检查其在Bootloader 中的配置状态,请参考图 1。 ! L! A  V+ Z' t1 r. F; b% e8 v
5 J8 c" {# E) j3 f1 x! m. y
3 m7 k3 n" b6 L" p# `0 r: u
%5`B952Y_IDO{1})C[@BVL6.png 8 D% I. y+ Q6 G& Y

* Z. W: o% B5 w3 d2 D
7 ~% k( q* m( k6 l' ?8 b
从图 1 中可以了解到 PA2/PA3/PA9/PA10 均配置为复用推挽结构,带上拉电阻。其中 PA10/PA3为输入口,PA2/PA9 为输出口。
- c" q. z* e, |: w# h# s: f使用一个 1kΩ 的电阻来测量 PA9/PA10 的端口状态,来确定其高电平的来源。系统 VDD 的电压为 3.22V。4 O8 n5 V; P8 D# M; o5 [# \) X
测量之前,需要了解一下 GPIO 的结构,如图 2。
6 ]$ Y) f; J+ @( e
8 h1 D" J- X5 s& @" S  t3 ~9 p
7 h9 D) g' J3 e% Z+ K
79RE70W`T6`XEJIWEI`C0TY.png
$ M) r: q/ u9 H; [0 b6 U" Q! V3 O3 h& p0 w: {
从图 2 中可以得知,当作为输出时,端口上呈现的高电平来自 P-MOS 上的 VDDIOX;当作为输入时,端口上呈现的高电平来自上拉电阻上的 VDDIOX。下面来验证测试一下。
$ K& G# |$ k0 `% d/ [* k. {6 T先对输出口 PA9 进行测量,使用 1kΩ 电阻串入 PA9 与 VSS 之间,并串上电流表,测得电流为 3.22mA。由 U=I·R 公式,刚刚好,总电阻 R = U / I = 3.22V ÷ 3.22mA = 1kΩ。也就是说,PA9 的高电平由推挽结构中的 P-MOS 连接的 VDDIOX提供,内部没有电阻。 % c: I6 k$ {4 B1 b
再来对输入口 PA10 进行测量,使用 1kΩ 电阻串入 PA10 与 VSS 之间,并串上电流表,测得电流为 85.4uA。总电阻 R = U / I = 3.22V ÷ 85.4uA = 37.7kΩ,大于在外部串接的 1kΩ 电阻。也就是说,PA10 的高电平来自上拉电阻所连接的 VDDIOX,而且内部上拉电阻 RPU = 37.7kΩ - 1kΩ = 36.7kΩ。
' \' `0 h( J* W5 E& }% _# L多加一步再次确认输入口 PA10 的情况,这次不使用 1kΩ 电阻,而是直接将 PA10 串上电流表连接到 VSS,得到电流值为 87.7uA。内部上拉电阻 RPU = U / I = 3.22V ÷ 87.7uA = 36.7kΩ,与上面的测试是相同的。也符合 STM32G0B1 数据手册中内部上拉电阻的范围,如图3, b8 u, ~2 T. t  M) L  X

; ^6 [8 ]/ J. T' _9 \& |9 c

; P7 C) x( n0 k" O- L0 { HN~4(GY{$EH]UW{QQG`0$S6.png
: B+ `! [; Q, h
3 u0 A5 V8 P: w' d+ g9 r$ Y完整版请查看:附件2 g+ M: u  E/ V. x; w' w( G0 q# {

; |4 |: Z6 F' X: b  U/ o
" a! k) d7 h9 f* p3 {- D1 l. w" i! Y5 T$ t; q' `( D

LAT1032_带有空片检测功能的STM32需要注意的GPIO设计_v1.0.pdf

下载

404.3 KB, 下载次数: 0

收藏 评论0 发布时间:2022-8-7 17:03

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版