这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 如何防止单片机程序丢失

共12条 1/2 1 2 跳转至

如何防止单片机程序丢失

助工
2014-11-27 22:04:18     打赏
一、改善电源
    尽量改善电源。这是老话了。并不是说单片机能工作就行,电源要设计好,加上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

专家
2014-11-27 22:17:57     打赏
2楼
这个太好了,收藏!!!必须置顶

菜鸟
2014-11-30 00:24:49     打赏
3楼
不错,不过我很多时候没开看门狗

专家
2014-12-23 13:05:41     打赏
4楼
收藏!!!收藏!!!

菜鸟
2014-12-25 12:54:43     打赏
5楼
很实用的资料必须收着

高工
2014-12-25 13:18:16     打赏
6楼
赞一个

菜鸟
2014-12-25 16:38:55     打赏
7楼
好贴 收藏

高工
2014-12-28 22:14:08     打赏
8楼

不错,多谢楼主分享


高工
2014-12-30 21:03:09     打赏
9楼

谢谢分享


高工
2014-12-31 21:38:56     打赏
10楼
flash类器件比单片机更容易出错,高性能的单片机flash现在都带ecc校验了

共12条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]