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

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

[复制链接]
STMCU小助手 发布时间:2022-2-16 20:43
问题:3 i  c- Z# Q, E. v  n) S
该问题由某客户提出,发生在 STM8S 器件上。, x# X/ E6 n* h9 q3 b
据讲述:在生产中,发现 STM8 存在一定比例的不良。具体表现是芯片的 NRST 引脚上有充放电的波形,, ~3 J# i( J' M% ?/ r3 N+ Q
如下图。此时,芯片无法正常工作。
- G8 n- S+ T9 b: } }RU8V`9(IP2C0%I58F~XULE.png : R. Y: b" |+ W" G

$ x. ?, E9 `9 \% F该产品已经量产,此现象只在当前批次中出现。* Y% l$ b" m$ p: c

) C8 F5 ^" u/ }4 i调研:) l5 n9 x; w# {# N
检查电路,没有明显问题。$ W$ z9 _( i% @  i: E
由以上波形可以看出,NRST pin 不断被拉低。而 STM8 当 NRST 引脚变低的时候会发生复位;同时,当芯片发生复位的时候,也会向外输出一个低脉冲。
1 i" M# K! a; X0 j+ \因此,可以判断芯片是在不停的复位过程。  `. ^$ Y7 q5 F# y% z
; l! L7 S/ a9 `. e; z/ H5 `4 Y
使用工具试图读取芯片仍然出错,提示信息如下:7 ^. k" Y- y# f8 W/ [( W

% b2 r8 X( G; v% ^5 y* l( X' f6 i (O3~XW7M~OSDIVWG2VM_[)1.png
6 {/ {  F* n/ ~7 a* p5 c$ d$ b4 ^( q) ^: S  ^! a4 B3 N9 i
可以看出,提示信息表明 option byte 存在不互补的情况。
  I! i4 q: M; h9 \7 [0 h/ z  O! _! t2 `1 F
Option byte 是一些比较特殊的字节,存放在不同于用户程序区和数据区的地方,但是从物理本质来说,它们又是一样的;同样,它们都可以在应用程序中改写。) ^! N+ [' f" _
但是 option byte 的不同之处在于,每一个 option byte(ROP 除外)实际上是由 2 个地址的内容共同决定的。这 2 个地址的内容是互补时,芯片认为是正常的;当这 2 个地址的内容不互补时,芯片认为是异常情况,将产生 EMC 复位,同时将 RST_SR 寄存器中的 EMCF 置位。5 \0 b3 a: J6 d' t
举例来说,对 STM8S105,有. E' l" ~' M5 d3 u+ \, V# o
2 [; Z/ }2 t( ]; I" ~
[VLMCHRKCIUMD@7`{$~80%I.png
8 k. I( U9 U4 V/ v9 n( t) S! ?$ p! h- q8 N% O, e
可以看到,0x4809 和 0x480A 的内容正好互补。* w$ Z0 ]" [2 M0 k0 f; P" h
其它的 option byte 也类似,具体可以查看相应器件的数据手册。: l$ O+ j9 y3 ^; }, H! l1 g
因此,当需要在程序中修改 option byte 时,需要对 option byte 及其互补字节都操作使其保持互补状态才是完整的步骤。' k/ j- `! D; H( H- m; I1 g1 k5 g, S

* @, J& }# Y/ G那么为什么会有 option byte 不互补的情况发生呢?  J6 _1 i! {, b$ \
经过了解,在客户的应用程序中,会进行改写 option byte 的操作。这样,当使用工具烧写完成后,如果有上电的情况,当程序恰好运行到改写 option byte 的过程中但又没完成其互补字节的操作时就掉电了,此时恰好造成了 option byte 不互补,从而引起不断的复位。
/ c8 W3 W; B5 w因为这个问题与程序运行的时间点相关,因此尽管是相同的代码,但是并不是每个产品上都有机会表现出来。/ e- F0 K/ ^) u: q3 T
: Y+ ]2 J! ~+ C5 R/ Y" b6 y
结论:
. r9 s. y( I! ~& Y通过以上的分析可以得知,该问题是 option byte 不互补造成的。
" Q0 U2 b; I3 Z9 t3 b
6 M( m2 b. o0 V处理2 ~) Q( w4 e3 c$ i
使用工具,将 option byte 重新烧写一次即可。
% g  Y  z3 O2 \: C8 I( ?
$ c) J- G( y. a  z建议:7 |! Q+ \0 D: F5 y) q" H4 ^& M+ {; J
此问题初看很象是质量问题。然而实际上,该问题是一个实践中经常出现的与质量无关的典型问题。(当然,这并不是说芯片在复位都是这个原因导致,也不能说所有的芯片一定都没有质量问题。)% n% f& L! c. h" c: Y

( T: f# f- O; S+ b/ @! G4 c那么如何从应用的角度来避免这个问题呢?* S' M8 Z0 ?* T  T+ p
一种方法是改写 option byte 尽可能在生产时使用工具去烧写。Option byte 之所以没有像 program memory 或者 data memory 那样操作,一是为了安全可靠,二是这些字节在实际使用中被改写的可能相对较小。因此,如果可能,尽量使用工具去烧写;
6 I0 `. j4 T9 ]5 b" w% c; r- J; r& g  I( Q: Q/ q1 q
对于在实际应用中确需在用户程序改写的情况,那么可以在改写前先读一下,然后做个判断,看是否已经是所需要的内容。如果不是再改写不迟。当改写时,要尽量保证系统安全稳定,避免发生改写到一半的时候被打断造成异常。
4 v+ S' ?. q* G5 v, D! e
2 n. }' z( A4 n) i$ {  R& a通过以上措施,可以将发生这种情况的可能降低。即使发生,也能很快地进行修复。
& C( U+ S4 `0 I8 \+ ^8 e. V( U5 X6 Z( |9 g  h7 T3 Y$ T) m* V; k; R) V! N
收藏 评论0 发布时间:2022-2-16 20:43

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版