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

关于BOOT0脚的连接话题

[复制链接]
STMCU小助手 发布时间:2021-2-24 10:56
关于BOOT0脚的连接话题
* A' p+ b0 P% R# y4 o9 `0 N
尽管STM32系列众多,一般来讲,所有芯片都预留了至少一个物理管脚用于系统复位后启动模式的选择,换句话说,就是芯片复位后通过识别boot脚及相关配置项的设置来选择程序从哪里开始运行。

" F! k( L9 V& \# T
STM32芯片的启动一般分为三个区域可以启动执行,用户主闪存区【main flash memory】,系统存储区【system memory】,内置RAM区【embedded SRAM】。
& d/ R; B! b6 d& h* D9 U. c' O' E/ b+ b
用户主闪存区就是存放用户程序的存储空间,应用代码平常在该区域运行。

1 W8 A# X" I" ?1 U
系统存储区,指芯片厂家,这里指ST事先存放的程序代码,一般用做用户程序更新升级。
& V; a% N5 y5 {1 u! m& _
内置RAM区,存放数据或代码地方。调试时可以将代码加载到该区进行调试验证。

% G" L/ s! n8 |7 P) J1 K; B. S7 C
这里先不妨看看STM32F4系列芯片的启动配置。

5 i/ O, }' p! }
1.1.jpg

, b- u" x6 @9 Y8 y
STM32F4系列芯片启动后从哪里开始执行程序代码由BOOT0、BOOT1两个物理脚的电平共同确定。

3 T' v- n, u. Z/ S1 x
再看下STM32F0系列芯片的启动配置:

4 x; ~# }* X4 E
1.2.jpg

+ s% ^/ u. q( E7 v9 M  U: f
跟F4系列稍有不同,灰色部分完全脱离BOOT物理脚的配置,不过仅限于部分芯片。但所有STM23F0系列都支持非灰色部分的BOOT配置。它这里只用到一个BOOT0物理脚,然后结合寄存器配置位来决定芯片启动后程序运行的起始位置。具体来讲,就是在芯片重启后,在第4个系统时钟的上升沿来检查BOOT引脚的电平及相关寄存器配置位来选择在复位后的启动模式。【顺便说下,检测之后BOOT脚什么电平也就无所谓了。】
+ l- g2 f' \+ E% w1 F) [( w0 ]
尽管STM32芯片系列众多,启动模式的选择手法基本相似,由BOOT物理引脚或配以寄存器配置位来决定。这里要讲的重点是boot物理引脚外接低电平的电路处理问题。
  g# O! [8 D% R2 f
以上面提到的STM32F4或STM32F0为例,如果希望芯片复位后从用户闪存区开始运行,显然那个BOOT0脚要接低电平。我们不妨先看看两块ST官方学习板的电路怎么接的。

. z6 @: o+ S1 K. Y- P; g9 j# ?% u) v
1.3.jpg

$ r6 n: [" p: e, q7 T' n
1.4.jpg
6 I; [" j8 U* W8 j) n7 [
因为希望芯片复位后运行用户闪存区的代码,BOOT0脚要接低电平。经常有人就直接接GND了,多数时候一切正常。但对于有些应用环境,如果BOOT0脚直接接地就可能时不时地出现些类似死机的奇怪现象。

! w( d& w; E0 h. ]5 V
印象中深刻的有两次,两个客户使用STM32芯片开发类似的产品,电路板板载射频模块。产品投产后,客户发现偶尔会出现死机的现象。反复找软硬件原因,没法找到。让人郁闷的是,即使加上看门狗还是偶尔会出现死机的现象。

2 I' C$ Z5 W. x* L4 {, r
后来,无意中发现到BOOT0脚这个地方跟ST官方参考电路有出入,修改为10K电阻到地后再做测试验证,问题消失。【当然,这个过程中有时可能还需对电路板重新整体规划调整,以减少环境对MCU的干扰】
( p+ o8 d  e1 i: c
Boot接低电平直接接地有风险,建议串接电阻到地。那串接电阻是不是就可以随意呢?
是不是越大越好呢?比如几百K甚至达到M级电阻。
; v  g0 Y( h% s5 @
记得几个月前,有个客户邮件咨询反馈,他好像是用STM32F0芯片开发产品。他反映在给产品上电时偶尔出现程序不运行的情况。经过基本信息了解后,建议其对供电和BOOT脚的焊接等做确认。
. E, O- {! {2 @" t! Q$ Z# L
他觉得供电稳定,焊接也无异常。但还是偶然会出现上电后程序不运行的情况。后来发现他在BOOT0脚串了个1M的电阻到地。建议其改为几K后问题解决。

+ M* w7 q' ?4 O, t6 Y
我们知道,STM32芯片是在复位后的第4个系统时钟对BOOT脚及相关配置项读取来决定启动模式。对于BOOT0脚,如果直接接地,要是因为外界干扰或电源波动让地上有突发波动脉冲,往往立即反应到管脚上。若恰好此时采样就可能误判而进入非用户程序区启动模式。对于电磁干扰厉害的应用场合,要特别注意这点。

; }" _# \5 N& Y. z% p
1.5.jpg
+ V  o2 R& c& e% G
如果那个电阻太大呢?不难理解,该电阻越大,该脚的低电位就越不明朗。大到一定程度后,遇到个别因素【比方电源的波动、外界干扰、内阻个体差异等因素】个别时刻可能产生误触发,导致对该脚电平的误读误判,进而让芯片进入非用户程序区的启动模式。最终给人感觉就是用户程序没有得以运行。

; Q$ `: e9 m% O  ]
在发生上述情况时,看门狗往往也不起作用,让人不解的同时也觉得恐怖。这是因为很多时候WDG是通过用户程序软件启动,现在用户程序都没机会运行,就更别说开启看门狗并让它管事了。
( m1 B* D$ z' A) f* L* {( q
总的来讲,若BOOT脚需要低电平的话,建议接个10K上下电阻到地,不建议直接接地,阻值也不要过大。这种问题很隐蔽,当你没意识到这里时,不太可能简单地从程序逻辑或电路原理上很快找到原因。令人头疼的时这种情形往往是时有时无,重现性很差,也不固定在哪块板上出现。

$ M- g5 B; A, r, s& s% j" z
文章出处: 茶话MCU
$ u' X5 O3 D. _* j
收藏 评论1 发布时间:2021-2-24 10:56

举报

1个回答
guyuekt 回答时间:2021-3-1 16:42:09
感谢分享,虽然我都是接上电阻了,但是不知道没有电阻或阻值过大会这么严重

所属标签

相似分享

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