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

【经验分享】STM8 连续复位问题

[复制链接]
STMCU小助手 发布时间:2022-2-16 20:43
问题:
; ?: ]) [4 q% f该问题由某客户提出,发生在 STM8S 器件上。! Y  G6 [4 P) ]. v2 p
据讲述:在生产中,发现 STM8 存在一定比例的不良。具体表现是芯片的 NRST 引脚上有充放电的波形,1 F( b* O  }' r0 L+ G) F. u) Q
如下图。此时,芯片无法正常工作。
  @/ G+ k0 Z9 l3 z }RU8V`9(IP2C0%I58F~XULE.png
3 Z% d0 v  L5 x
( w, q" ^* ^7 w1 T, H% d该产品已经量产,此现象只在当前批次中出现。
* g* Q% i! r7 H. b% _% v& ]. N6 M8 M3 c
1 c) D& u2 h0 v* ^3 f调研:! \% _4 }4 n# J; V# f2 ?" N& s5 \
检查电路,没有明显问题。
! w% a4 h5 r: j* l9 H7 F# U1 |- I由以上波形可以看出,NRST pin 不断被拉低。而 STM8 当 NRST 引脚变低的时候会发生复位;同时,当芯片发生复位的时候,也会向外输出一个低脉冲。
. \5 ]/ t- W) ?6 J0 p% K) J因此,可以判断芯片是在不停的复位过程。
& Z- I" m3 ]0 v, V
3 `1 j  t' o! h使用工具试图读取芯片仍然出错,提示信息如下:
' O# N/ l9 ^$ ]1 U- m
7 o& B" }+ s; ?6 W/ G) f+ K0 n (O3~XW7M~OSDIVWG2VM_[)1.png 8 Q! e) [, r  I( S, R
8 x* @2 h- t* N6 f
可以看出,提示信息表明 option byte 存在不互补的情况。
8 i1 z$ P' Y6 X! S6 B. k) ^5 A. s* ~3 F
Option byte 是一些比较特殊的字节,存放在不同于用户程序区和数据区的地方,但是从物理本质来说,它们又是一样的;同样,它们都可以在应用程序中改写。) Z/ K8 e+ [" f+ h! j# W; l2 [
但是 option byte 的不同之处在于,每一个 option byte(ROP 除外)实际上是由 2 个地址的内容共同决定的。这 2 个地址的内容是互补时,芯片认为是正常的;当这 2 个地址的内容不互补时,芯片认为是异常情况,将产生 EMC 复位,同时将 RST_SR 寄存器中的 EMCF 置位。
1 M, T! x- F7 |% o+ V7 p举例来说,对 STM8S105,有
  {" l6 Z0 e7 p. Z
9 N6 H: d/ ^7 T [VLMCHRKCIUMD@7`{$~80%I.png
% Z) ]1 H& N6 O- u$ L  C# O8 {4 P; i# |; T" L
可以看到,0x4809 和 0x480A 的内容正好互补。
* S+ E! b( I/ v其它的 option byte 也类似,具体可以查看相应器件的数据手册。1 `9 O* {- l# r4 D. l- n
因此,当需要在程序中修改 option byte 时,需要对 option byte 及其互补字节都操作使其保持互补状态才是完整的步骤。
; N& W9 i4 w; J) w' E4 a" Y! R. `0 {+ n3 u7 a
那么为什么会有 option byte 不互补的情况发生呢?
" d. I( |: p1 ?' p( I" _& }经过了解,在客户的应用程序中,会进行改写 option byte 的操作。这样,当使用工具烧写完成后,如果有上电的情况,当程序恰好运行到改写 option byte 的过程中但又没完成其互补字节的操作时就掉电了,此时恰好造成了 option byte 不互补,从而引起不断的复位。: `+ F# i, j9 M
因为这个问题与程序运行的时间点相关,因此尽管是相同的代码,但是并不是每个产品上都有机会表现出来。
" j' J7 y) a. A8 O* X  o" A2 f  e4 P6 f) U. V0 c8 P) Y  {, K6 v2 r1 |
结论:4 l1 i8 H0 L9 ~+ K* B
通过以上的分析可以得知,该问题是 option byte 不互补造成的。- ^( A- v+ ^2 s0 E
& V5 o( P; z' r7 J0 D0 F' L
处理:
/ i; C0 [  k& [2 b7 x4 Q8 h3 c' G: K使用工具,将 option byte 重新烧写一次即可。
: R: E+ w. v( K# g$ e1 w  J3 j" O8 K3 [1 C
建议:1 s6 G. y2 J. L( ]+ @
此问题初看很象是质量问题。然而实际上,该问题是一个实践中经常出现的与质量无关的典型问题。(当然,这并不是说芯片在复位都是这个原因导致,也不能说所有的芯片一定都没有质量问题。)
! `! n, C( c! B6 D/ B
  h5 G4 b4 d' J; D' O/ ]" ^5 A那么如何从应用的角度来避免这个问题呢?
  n" g' N4 n. m- B一种方法是改写 option byte 尽可能在生产时使用工具去烧写。Option byte 之所以没有像 program memory 或者 data memory 那样操作,一是为了安全可靠,二是这些字节在实际使用中被改写的可能相对较小。因此,如果可能,尽量使用工具去烧写;
% q2 ~; M9 T9 G5 u
4 P! |  z, f0 S" {, M; z对于在实际应用中确需在用户程序改写的情况,那么可以在改写前先读一下,然后做个判断,看是否已经是所需要的内容。如果不是再改写不迟。当改写时,要尽量保证系统安全稳定,避免发生改写到一半的时候被打断造成异常。
! o* h7 d: b0 ^) B& T& Y0 r; u0 Z6 o
通过以上措施,可以将发生这种情况的可能降低。即使发生,也能很快地进行修复。2 I$ q4 K0 |" }3 T

: @0 p4 V3 Z# Z' c) F% D
赞 收藏 评论0 发布时间:2022-2-16 20:43

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版