
问题: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 如下图。此时,芯片无法正常工作。 ![]() 该产品已经量产,此现象只在当前批次中出现。* Y% l$ b" m$ p: c 调研:) l5 n9 x; w# {# N 检查电路,没有明显问题。$ W$ z9 _( i% @ i: E 由以上波形可以看出,NRST pin 不断被拉低。而 STM8 当 NRST 引脚变低的时候会发生复位;同时,当芯片发生复位的时候,也会向外输出一个低脉冲。 因此,可以判断芯片是在不停的复位过程。 `. ^$ Y7 q5 F# y% z ; l! L7 S/ a9 `. e; z/ H5 `4 Y 使用工具试图读取芯片仍然出错,提示信息如下:7 ^. k" Y- y# f8 W/ [( W ![]() $ b4 ^( q) ^: S ^! a4 B3 N9 i 可以看出,提示信息表明 option byte 存在不互补的情况。 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" ~ ![]() $ 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 那么为什么会有 option byte 不互补的情况发生呢? J6 _1 i! {, b$ \ 经过了解,在客户的应用程序中,会进行改写 option byte 的操作。这样,当使用工具烧写完成后,如果有上电的情况,当程序恰好运行到改写 option byte 的过程中但又没完成其互补字节的操作时就掉电了,此时恰好造成了 option byte 不互补,从而引起不断的复位。 因为这个问题与程序运行的时间点相关,因此尽管是相同的代码,但是并不是每个产品上都有机会表现出来。/ e- F0 K/ ^) u: q3 T : Y+ ]2 J! ~+ C5 R/ Y" b6 y 结论: 通过以上的分析可以得知,该问题是 option byte 不互补造成的。 处理:2 ~) Q( w4 e3 c$ i 使用工具,将 option byte 重新烧写一次即可。 建议:7 |! Q+ \0 D: F5 y) q" H4 ^& M+ {; J 此问题初看很象是质量问题。然而实际上,该问题是一个实践中经常出现的与质量无关的典型问题。(当然,这并不是说芯片在复位都是这个原因导致,也不能说所有的芯片一定都没有质量问题。)% n% f& L! c. h" c: Y 那么如何从应用的角度来避免这个问题呢?* S' M8 Z0 ?* T T+ p 一种方法是改写 option byte 尽可能在生产时使用工具去烧写。Option byte 之所以没有像 program memory 或者 data memory 那样操作,一是为了安全可靠,二是这些字节在实际使用中被改写的可能相对较小。因此,如果可能,尽量使用工具去烧写; - J; r& g I( Q: Q/ q1 q 对于在实际应用中确需在用户程序改写的情况,那么可以在改写前先读一下,然后做个判断,看是否已经是所需要的内容。如果不是再改写不迟。当改写时,要尽量保证系统安全稳定,避免发生改写到一半的时候被打断造成异常。 通过以上措施,可以将发生这种情况的可能降低。即使发生,也能很快地进行修复。 6 Z( |9 g h7 T3 Y$ T) m* V; k; R) V! N |
STM8自学笔记(推荐STM8很好的入门电子书)
基于STM8的DALI (数字可寻址调光协议)
分享STM8 风驰光盘的资料,是完整的(包括原理图+例程+PDF注释)
《无刷直流电机控制应用 基于STM8S系列单片机》
STM8S库函数中文参考 小软件
【资料分享】STM8L的智能手持血糖监测设备的源码
基于STM8S207工程模板
【培训资料】STM8系列PPT培训资料
STM8S 直流电机例程及相关资料
无刷直流电机控制应用+基于STM8S系列单片机---电子书