打印

防止单片机程序莫明丢失的经验总结

[复制链接]
8437|44
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
救火车|  楼主 | 2009-5-7 10:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
昨天又有徒弟问到单片机内程序丢失的问题。
我把过去的经验整理一下。大家分享。
一、改善电源
    尽量改善电源。这是老话了。并不是说单片机能工作就行,电源要设计好,加上104去耦电容改进电路布局等措施。二、使用电压监测芯片
二、使用带电压监测的复位芯片。
防止上电/下电时,单片机电压处于工作和不工作的临界时,单片机自己胡来。上电后,电容从0V逐渐升到VCC;下电时,从VCC逐渐降到0V。不管转电压转换的多快,总会有一段时间处于电压不足的不稳定状态,什么情况都可能发生。
三、足电压编程、慢速编程
    让Flash/EEP存储器在编程时充入足够电荷。
    需要可靠性的场合尽量低速写入,把工作加到芯片上限 (一搬5V芯片用5.5V,3V芯片到3.6V),能明显提高数据可靠性.
四、保护编程口
    保护编程的IO口,加些上拉或下拉电阻。如IAP、ISP、JTAG等。防止单片机复位之前的时间被处界杂波干扰,误入编程状态。
    例1:ATMEL的ISP口的SCK、MISO脚尽量做输出使用。防止外围器件对这些脚产生跳动电平。防止误入ISP状态。对JTAG口也要做同样的保护。
    例2:STC单片机,尽量设置成P1.1P1.0为低电平时才可以编程。
五、产品尽量禁止编程功能
    比如AVR单片机,设置JTAGEN=1 OCDEN=1 因为JTAG有改写FALSH的能力。在产品阶段用不着它,把它禁止。如果可能,还可以设置熔丝位,禁止ISP功能。但是你要考虑清楚,禁止ISP功能以后就只能通过并行方式改写程序了。
    还有一些单片机有专门的引脚,控制编程允许。那么咱们可以让它处于禁止编程的状态。

    

下面是我对使用MEGA16L的防丢程序措施。5V电压8M晶振。
1.使用带电压监测的706硬件看门狗。即保证可靠复位,又防止CPU低电压工作。
2.不使用IAP自编程。熔丝位BOOTRST=1。以前我是用过自编程,但是为了安全起见,还是把它禁止了吧。
3.晶振选择高幅度振荡输出. CHOPT=0 工作电流会增加1个多毫安,但是稳定多了。
4.打开BOD  BODEN=0  BODLEVEL=0  一旦VCC下降到触发电平4.0v以下,MUC不工作;当VCC电平大于触发电平后,重新开始工作。
5.设置复位启动时间稍长。SUT 1=1  SUT0=0 上电复位时让CPU等待65个毫秒,使电源缓慢上升。
6.禁止JTAG。JTAGEN=1 OCDEN=1 因为JTAG有改写FALSH的能力。我在产品阶段用不着它,还是把它禁止了吧。还节省1毫安的工作电流。
最后的熔丝位变成了 C9 2F

相关帖子

沙发
救火车|  楼主 | 2009-5-7 10:16 | 只看该作者

第一次给自己加酷。呵呵。让hotpower说去吧!

使用特权

评论回复
板凳
xuehongren| | 2009-5-7 11:01 | 只看该作者

呵呵

不错 不错

使用特权

评论回复
地板
zjh006| | 2009-5-7 11:24 | 只看该作者

三、让Flash/EEP存储器在编程时充入足够电荷。

救火车,这条不明白,能解释一下吗?

使用特权

评论回复
5
救火车|  楼主 | 2009-5-7 11:42 | 只看该作者

引用sharks的部分贴子

sharks发表于 2007-12-1 15:34 侃单片机
我发现Flash/EEP存储器的本质机理其实是一个电容储存电荷(在MOS的浮栅中)。其实从原理上说这种结构不是可靠的。如果存储的时候,给Flash充电时间不够,保存期并不长。这是最常见的问题,我遇到过多次。
Flash供电电压不足经常造成数据不可靠。例如430单片机标称工作电压1.8-3.7,但Flash写入必须2.7V以上。我试验过2.3V仍能写入,但电压越低,数据越维持时间越短。2V以下断电重起两三次就没了。

使用特权

评论回复
6
johnwjl| | 2009-5-7 12:02 | 只看该作者

很好,我是来捧场的!

今年回家不坐汽车,坐车只坐火车.火车安全,因为有人救火车.

使用特权

评论回复
7
香水城| | 2009-5-7 12:09 | 只看该作者

好帖! 喷香水

~~~~~~~

使用特权

评论回复
8
icecut| | 2009-5-7 15:46 | 只看该作者

的确酷

电源问题是硬道理.
干扰问题是因人而异.有人说好有人说坏就是这原因.

使用特权

评论回复
9
aweyfan| | 2009-5-7 15:49 | 只看该作者

这一条有些问题

5.设置复位启动时间稍长。SUT 1=1  SUT0=0 上电复位时让CPU等待65个毫秒,使电源缓慢上升。

这个“使”不大对

使用特权

评论回复
10
bjc125| | 2009-5-7 19:59 | 只看该作者

呵呵 见识了

谢谢 

使用特权

评论回复
11
ayb_ice| | 2009-5-7 21:26 | 只看该作者

我就从没有发现过丢程序问题

使用特权

评论回复
12
救火车|  楼主 | 2009-5-8 16:10 | 只看该作者

也许吧。楼上做几年了?

使用特权

评论回复
13
mohanwei| | 2009-5-8 16:24 | 只看该作者

和做几年没有关系的。只要按照规范来做,半年的

都会比有若干年“摸索经验”的强……

使用特权

评论回复
14
zxp12345| | 2009-5-9 16:20 | 只看该作者

用OTP 的最保险.

呵呵,想丢都难!

使用特权

评论回复
15
yewuyi| | 2009-5-9 16:34 | 只看该作者

OTP也照样会可能出问题

使用特权

评论回复
16
zxp12345| | 2009-5-13 01:07 | 只看该作者

OTP没那么容易丢程序

如果不是破坏性的折腾,OTP没不容易丢程序.
当然,如果**,开盖,紫外光照射,另当别论.^_^^_^!

使用特权

评论回复
17
bjc125| | 2009-5-13 15:47 | 只看该作者

好帖呀 顶个

使用特权

评论回复
18
highgear| | 2009-5-13 20:46 | 只看该作者

顶救火车的经验总结

我的经验总结
1)改善电源
2)改善电源
3)改善电源

系统不稳定,不计软件缺陷,80%以上是电源造成的。

使用特权

评论回复
19
xinyijiayi| | 2009-5-13 21:32 | 只看该作者

我遇到过程序丢失

GPRS模块  程序丢失  害死人

还是从电源端解决的问题

使用特权

评论回复
20
McuPlayer| | 2009-5-19 22:45 | 只看该作者

不喜欢到处都是火气旺盛的帖子,顶个资源帖上来

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

113

主题

1249

帖子

2

粉丝