avr单片机熔丝位设置方法及步骤及设置注意事项

发布者:LIGANG888最新更新时间:2019-12-27 来源: elecfans关键字:avr  单片机  熔丝位  设置方法  注意事项 手机看文章 扫描二维码
随时随地手机看文章

  一、什么是熔丝位

  熔丝是一个保护知识产权的设计。简单的说,你在特定的引脚上加电压,足够的电流,就可以烧断里边的这根熔丝,烧断以后,片里的程序就不可以被读出来也不能改写了,只能用来运行。一般成品出售时都这样做。专用的写片机支持这个功能。自己也可以根据芯片的官方文档来操作。熔丝位是在一个特定的地址上可以读到熔丝状态的一个位。0表示已熔断,1表示未熔断。

  二、avr熔丝位介绍

  AVR Studio 中 STK500 处理熔丝位有巨大的优势:它是以功能组合让用户配置。 这种方式与小马(PonyProg2000,SL-ISP)相比,具有以下的优势(优势是如此明显,可以用“巨大优势”来形容):有效避免因不熟悉熔丝位让芯片锁死 (这是初学者的恶梦), 笔者曾经锁死过三片Atmega16。 不需要靠记忆与查文档,就能配置熔丝位(这也是初学者的恶梦) 动手之前:请你一定弄清楚了,你这样改会有什么后果,除非你有很多钱不在乎多锁死几个芯片。

avr单片机熔丝位设置方法及步骤及设置注意事项

  三、AVR单片机熔丝位设置

  对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。


  (1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”或成为已编程状态“0””。


  (2)在使用通过选择打钩“√”方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“√”表示设置熔丝位状态为“0”还是为“1”。


  (3)使用CVAVR中的编程下载程序时应特别注意,由于CVAVR编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的“all”选项。此时的“all”选项会以熔丝位的初始状态定义来配置芯片的熔丝位,而实际上其往往并不是用户所需要的配置结果。如果要使用“all”选项,应先使用“read-》fusebits”读取芯片中熔丝位实际状态后,再使用“all”选项。


  (4)新的AVR芯片在使用前,应首先查看它熔丝位的配置情况,再根据实际需要,进行熔丝位的配置,并将各个熔丝位的状态记录备案。


  (5)AVR芯片加密以后仅仅是不能读取芯片内部Flash和E2PROM中的数据,熔丝位的状态仍然可以读取但不能修改配置。芯片擦除命令是将Flash和E2PROM中的数据清除,并同时将两位锁定位状态配置成“11”,处于无锁定状态。但芯片擦除命令并不改变其它熔丝位的状态。


  (6)正确的操作程序是:在芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的锁定位。芯片被锁定后,如果发现熔丝位配置不对,必须使用芯片擦除命令,清除芯片中的数据,并解除锁定。然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的锁定位。


  (7)使用ISP串行方式下载编程时,应配置SPIEN熔丝位为“0”。芯片出厂时SPIEN位的状态默认为“0”,表示允许ISP串行方式下载数据。只有该位处于编程状态“0”,才可以通过AVR的SPI口进行ISP下载,如果该位被配置为未编程“1”后,ISP串行方式下载数据立即被禁止,此时只能通过并行方式或JTAG编程方式才能将SPIEN的状态重新设置为“0”,开放ISP。通常情况下,应保持SPIEN的状态为“0”,允许ISP编程不会影响其引脚的I/O功能,只要在硬件电路设计时,注意ISP接口与其并接的器件进行必要的隔离,如使用串接电阻或断路跳线等。


  (8)当你的系统中,不使用JTAG接口下载编程或实时在线仿真调试,且JTAG接口的引脚需要作为I/O口使用时,必须设置熔丝位JTAGEN的状态为“1”。芯片出厂时JTAGEN的状态默认为“0”,表示允许JTAG接口,JTAG的外部引脚不能作为I/O口使用。当JTAGEN的状态设置为“1”后,JTAG接口立即被禁止,此时只能通过并行方式或ISP编程方式才能将JTAG重新设置为“0”,开放JTAG。


  (9)一般情况下不要设置熔丝位把RESET引脚定义成I/O使用(如设置ATmega8熔丝位RSTDISBL的状态为“0”),这样会造成ISP的下载编程无法进行,因为在进入ISP方式编程时前,需要将RESET引脚拉低,使芯片先进入复位状态。


  (10)使用内部有RC振荡器的AVR芯片时,要特别注意熔丝位CKSEL的配置。一般情况下,芯片出厂时CKSEL位的状态默认为使用内部1MHz的RC振荡器作为系统的时钟源。如果你使用了外部振荡器作为系统的时钟源时,不要忘记首先正确配置CKSEL熔丝位,否则你整个系统的定时都会出现问题。而当在你的设计中没有使用外部振荡器(或某钟特定的振荡源)作为系统的时钟源时,千万不要误操作或错误的把CKSEL熔丝位配置成使用外部振荡器(或其它不同类型的振荡源)。一旦这种情况产生,使用ISP编程方式则无法对芯片操作了(因为ISP方式需要芯片的系统时钟工作并产生定时控制信号),芯片看上去“坏了”。此时只有使用取下芯片使用并行编程方式,或使用JTAG方式(如果JTAG为允许时且目标板上留有JTAG接口)来解救了。另一种解救的方式是:尝试在芯片的晶体引脚上临时人为的叠加上不同类型的振荡时钟信号,一旦ISP可以对芯片操作,立即将CKSEL配置成使用内部1MHz的RC振荡器作为系统的时钟源,然后再根据实际情况重新正确配置CKSEL。


  (11)使用支持IAP的AVR芯片时,如果你不使用BOOTLOADER功能,注意不要把熔丝位BOOTRST设置为“0”状态,它会使芯片在上电时不是从Flash的0x0000处开始执行程序。芯片出厂时BOOTRST位的状态默认为“1”。

avr单片机熔丝位设置方法及步骤及设置注意事项


  四、AVR单片机熔丝位设置的注意事项

  对于AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出AVR熔丝位配置操作时的一些要点和需要注意的相关事项。


  (1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”或成为已编程状态“0””。


  (2)AVR芯片加密以后仅仅是不能读取芯片内部Flash和E2PROM中的数据,熔丝位的状态仍然可以读取但不能修改配置。芯片擦除命令是将Flash和E2PROM中的数据清除,并同时将两位锁定位状态配置成“11”,处于无锁定状态。但芯片擦除命令并不改变其它熔丝位的状态。


  (3)正确的操作程序是:在芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的锁定位。芯片被锁定后,如果发现熔丝位配置不对,必须使用芯片擦除命令,清除芯片中的数据,并解除锁定。然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的锁定位。


  (4)使用ISP串行方式下载编程时,应配置SPIEN熔丝位为“0”。芯片出厂时SPIEN位的状态默认为“0”,表示允许ISP串行方式下载数据。只有该位处于编程状态“0”,才可以通过AVR的SPI口进行ISP下载,如果该位被配置为未编程“1”后,ISP串行方式下载数据立即被禁止,此时只能通过并行方式或JTAG编程方式才能将SPIEN的状态重新设置为“0”,开放ISP。通常情况下,应保持SPIEN的状态为“0”,允许ISP编程不会影响其引脚的I/O功能,只要在硬件电路设计时,注意ISP接口与其并接的器件进行必要的隔离,如使用串接电阻或断路跳线等。


  (5)当你的系统中,不使用JTAG接口下载编程或实时在线仿真调试,且JTAG接口的引脚需要作为I/O口使用时,必须设置熔丝位JTAGEN的状态为“1”。芯片出厂时JTAGEN的状态默认为“0”,表示允许JTAG接口,JTAG的外部引脚不能作为I/O口使用。当JTAGEN的状态设置为“1”后,JTAG接口立即被禁止,此时只能通过并行方式或ISP编程方式才能将JTAG重新设置为“0”,开放JTAG。这一条要重点记住,因为如果JTAGEN是默认设置“0”的话,PC口有4个I/O口是不能当做通用I/O来操作的,我曾经就吃过大亏,从硬件到程序反复检查就是找不到错误,浪费了太多的时间。


  (6)使用内部有RC振荡器的AVR芯片时,要特别注意熔丝位CKSEL的配置。一般情况下,芯片出厂时CKSEL位的状态默认为使用内部1MHz的RC振荡器作为系统的时钟源。如果你使用了外部振荡器作为系统的时钟源时,不要忘记首先正确配置CKSEL熔丝位,否则你整个系统的定时都会出现问题。对于CKSEL3/0位的设置就是对时钟的设置,一般来说我都是采用外部晶振(8M或16M)直接将CLSEL3/0全部都设置为“1”就可以了。

关键字:avr  单片机  熔丝位  设置方法  注意事项 引用地址:avr单片机熔丝位设置方法及步骤及设置注意事项

上一篇:AVR单片机生成负压的原理解析
下一篇:AVR单片机教程——EasyElectronics Library v1.0手册

推荐阅读最新更新时间:2024-11-20 06:03

开发单片机程序时,初级工程师常犯的错误
这里利用一个实际发生的例子,针对初级工程师经常犯的一个小错误,或者经常要走的一个弯路,做了针对性的纠正。希望可以帮到大家,文笔不好文章中有叙述不清的地方大家多多指教。 这篇文章我不是想说编程的规范性的东西,如果你想让自己的程序文件最起码直观的看起来美观、可读性强,推荐找华为的“C语言编程规范”。我只想说一说当我们的 单片机 遇到多个模块的数据需要处理,类似于“多任务”时我们应该怎么办? 背景是这样的,去年9月份开始安排一个工程师开始做电动汽车交流充电桩,机械设计部分由公司机械结构部门负责。充电桩的电子部分总体上分为X个部分(用到的资源),电阻触摸屏(RS232),M1卡读写(RS232),电能计量表(RS485
[单片机]
Micrichip 单片机 I /O引脚使用注意事项
最近遇到了关于PIC单片机的IO口问题,在网上查了一下。 PORT寄存器和LAT寄存器的使用是有区别的。 PORT锁存输出数据,输入时是读IO引脚的电平高低。 LAT输出和输入时都是读写数据锁存器。 例如:在按键输入时,如果用LAT的话,死活也不会检测到按键的输入的。 在输出时,见到有网友说用同一个口上的两个引脚时,写PORT可能会出现错误。具体原因我也不知道 总结一下: 1、I/O作为输出时使用锁存器LAT; 2、I/O作为输入时使用端口PORT; 3、读数据手册时,要注意细节。
[单片机]
MSP432E401Y单片机智能小车测速功能
* MSP432E401Y * Description:本函数实现定时和测速功能 * 引脚:PD0- 编码器输入信号 * * Author: Robin.J ***************************************************************************/ /* DriverLib Includes */ #include ti/devices/msp432e4/driverlib/driverlib.h /* Standard Includes */ #include common.h uint32_t count = 0; //uint32_t
[单片机]
单片机时钟制作一枚高稳定的恒温晶振
  单片机时钟一直咱单片机爱好者的必修课之一。从大大小小各式各样的屏出发,LCD的,数码管的,点阵屏的,VFD的,OLED的甚至是辉光管,边光显示器,那是应有尽有琳琅满目,所有那些有 内在潜质 的显示模块都被大家应用于自己的单片机设计之中。但是很多朋友遇到过这样一个问题:时间走不准。有时候新作品一天甚至几个小时就会快3-8秒;前两个月调好的钟过了几个月走时又不准了   我想,这其中有很大一部分原因是晶体导致的(有些朋友研究出也可能跟数据读写速度、芯片质量甚至是布线方式存在关系,咱们暂时不探究)。为了达到一个精确的显示效果,很多朋友啊买了带温度补偿的,或者内置晶体的实时时钟芯片。对于走时速度的调整也使用了累计法,对走快的或走慢
[单片机]
关于MSP430单片机时钟的注意事项
XT2OFFG 、XT1LFOFFG 、 XT1HFOFFG 、 DCOFFG这四个标志位对应着相应振荡源的运行状态, XT2OFFG 、XT1LFOFFG 、 XT1HFOFFG上电时默认都是1,即上电时晶振1和晶振2都是关闭的,如果相应接口上确实接上了晶振,则需要在程序开始时运行一下语句: do { UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // Clear XT2,XT1,DCO fault flags SFRIFG1 &= ~OFIFG; // Clear fault flags for(unsigned int i = 0; i 10000; i
[单片机]
16位Σ-Δ A/D转换器AD7705与微控制器的接口设计
   AD7705是 AD公司新推出的16位Σ-ΔA/D转换器。器件包括由缓冲器和增益可编程放大器(PGA)组成的前端模拟调节电路,Σ-Δ调制器,可编程数字滤波器等部件。能直接将传感器测量到的多路微小信号进行A/D转换。这种器件还具有高分辨率、宽动态范围、自校准、优良的抗噪声性能以及低电压低功耗等特点,非常适合仪表测量、工业控制等领域的应用。它采用三线串行接口,有两个全差分输入通道,能达到0.003%非线性的16位无误码数据输出,其增益和数据输出更新率均可编程设定,还可选择输入模拟缓冲器,以及自校准和系统校准方式。工作电压3 V或5 V。3 V电压时,最大功耗为1 mW,等待模式下电源电流仅为8 μA。    1 内部结构
[模拟电子]
如何使用触摸传感器和8051微控制器控制LED灯
在这个项目中,我们将触摸传感器与 8051 微控制器 AT89S52 连接。如果您是 8051 微控制器的新手,那么您可以从LED 闪烁开始 8051。 什么是电容式触摸传感器? 电容式触控作用于我们身体上可用的静电荷。屏幕已经充满了电场。当我们触摸屏幕时,由于流经我们身体的静电荷形成闭合电路。此外,软件决定要执行的位置和动作。电容式触摸屏不适用于手套,因为手指和屏幕之间不会有任何传导。 此项目中使用的触摸传感器 本项目使用的触摸传感器为电容式触摸传感器模块,传感器驱动基于驱动IC TTP223。IC TTP23的工作电压为 2.0V 至 5.5V ,触摸传感器的电流消耗非常低。由于价格低廉、电流消耗低且易于集成支持,采用
[单片机]
如何使用触摸传感器和8051<font color='red'>微控制器</font>控制LED灯
飞思卡尔8位MCU增强汽车和工业设计性能
飞思卡尔半导体日前推出了EL和SL微控制器(MCU)系列,以帮助嵌入式设计人员提高汽车局部互连协议(LIN)和一般市场应用的系统性能。EL和SL系列基于飞思卡尔广泛使用的S08内核,是一个旨在第开发时间和成本的高度集成的8位解决方案。   EL系列增加了内存和外设,而SL系列则针对成本敏感的应用。对于那些要求更高汽车LIN应用(如灯光传感器、天窗、座椅定位马达、控制面板和门锁)性能的开发人员来说,这两款8位器件非常理想。   EL和SL系列器件具有嵌入式EEPROM、片上仿真/调试和先进的嵌入式从属LIN界面控制器(SLIC)模块。作为飞思卡尔的独有技术,SLIC能够增强系统性能,实现消息处理的自动化。对LIN从属应用
[汽车电子]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved