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-13 05:17

MSP430F5438A单片机基于SPI的FatFs移植笔记
不管移植什么程序,最重要的就是, 不要自以为是 一定要先查资料,花一周查资料,查到查不到为止,否则你编了一半的程序再参考别人的,直接后果是你下不了决心推翻重来 1. FatFs移植要点: 相信能看到这个博客的都知道FatFs是什么了,目前应该是0.11版本,我就不多废话了,一个开源的文件系统,不全面的说,作用就是让你编程序操作写SD卡的内容能够被PC机读出来(有不对的话懂的大神请指正) 它的好处就是只要写底层的几个硬件驱动函数就OK了,上层的函数都已经写好了,清楚格式直接调用就可以了。 所谓“硬件驱动”函数,就是告诉单片机,完成一个动作(比如初始化)具体需要哪个IO口怎样变化,哪个IO口该高,哪个IO口该低,通信端口选哪个
[单片机]
HOLTEK 新推出 HT45F8550/60 锂电池保护 MCU
Holtek针对 锂电池 保护应用领域,全新推出HT45F8550/60 锂电 池保护SoC MCU。相较于传统锂电池保护控制器,HT45F8550/60内建高精准度(±1%)LDO及各节锂电池电压检测电路,精准度为± 0.5%,大幅减少元器件数量并缩减PCB板空间,适合应用于3~8串锂电池产品,如电动工具、无线吹风机、无线吸尘器等。 HT45F8550具有8K×16 Flash ROM、512×8 RAM、128×8 EEPROM,在I/O方面具有16个多功能引脚。HT45F8560具有16K×16 Flash ROM、2K×8 RAM、1024×8 E
[汽车电子]
HOLTEK 新推出 HT45F8550/60 锂电池保护 <font color='red'>MCU</font>
51单片机--设置数码管的闪烁位置,便于输入数字
/* 有四个独立按键为 K1~K4,有四个数码管,可显示 0000~9999。 初始时都显示 0。 四个数码管中,有一个处于闪烁状态。闪烁的频率为 1Hz。 利用 K3、K4 可以使得闪烁的位置左右移动。 只有不停闪烁的位,才可以用 K1、K2 使其数值递增或递减。 数值的范围是 0~9。 题目连接: http://zhidao.baidu.com/question/455550887523150405.html 做而论道编写程序如下: */ #include reg52.h #include intrins.h sbit k_a = P3^1; sbit k_s = P3^3; sbit
[单片机]
51<font color='red'>单片机</font>--<font color='red'>设置</font>数码管的闪烁位置,便于输入数字
51单片机的模拟串口代码
由于8位单片机一般只有一个串行接口,往往不够用,只能自己写一个模拟串口的程序,下面这个程序是自己早先写的,放上来,对别人也许有点用,注意接收端同时接到P3.2(INT0) #include at89X52.h #define DOUBLE_BAUDRATE #define DATA_CORRUPT 0x80 #define BUFFER_OVERFLOW 0x81 #define F_OSC 11059200 #define BAUDRATE 9600 //115200//57600//19200//9600 #define BAUDRATE_CONST (256 - F_OSC/12/BAUDRATE) #defi
[单片机]
单片机实例---定时器控制点阵显示0~9
显示状态:点阵上每隔1s显示一个数字,显示到9又重头显示不断循环 #include reg52.h #include intrins.h typedef unsigned int u16; typedef unsigned char u8; u8 flag=0; //时间标志位 #define lie_io P0 //定义P0端口 sbit RCLKK = P3^5; sbit SRCLK = P3^6; sbit SER = P3^4; //串行输入 unsigned char code lie = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; un
[单片机]
了解电动汽车电机控制及MCU在其中的关键作用
电动汽车(EVs)的发展已成为当今汽车行业的趋势之一。汽车制造商纷纷投入资源,推动电动汽车的发展,以应对环境问题、资源稀缺性以及消费者需求的不断演变。电动汽车的核心部件之一是电机和电机控制单元( ECU ),它们对车辆性能、效率和可靠性至关重要。 电动汽车电机 控制的重要性 电动汽车的 动力系统 由 电池 组、电机和电机控制单元组成。电机控制单元是电动汽车的大脑,它通过监测和调整电机的操作来实现动力输出和能量管理。因此,电机控制对于电动汽车的性能、效率和可持续性至关重要。 电动汽车电机控制的主要目标包括: 1. 提高效率和续航里程:通过有效地管理电机的功率输出,电机控制单元可以帮助电动汽车最大程度地利用电池储存
[汽车电子]
了解电动汽车电机控制及<font color='red'>MCU</font>在其中的关键作用
基于STM32F0xx单片机的74HC595驱动程序
74HC595.c源文件 #include 74HC595.h void LED595Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOC , ENABLE); //Data Pin // GPIO_InitStructure.GPIO_Pin = LED595_DATA_PIN; // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // GPIO_InitStruc
[单片机]
全球七大主流单片机详解
  单片机现在可谓是铺天盖地,种类繁多,让开发者们应接不暇,发展也是相当的迅速,从上世纪80年代,由当时的4位8位发展到现在的各种高速单片机……   各个厂商们也在速度、内存、功能上此起彼伏,参差不齐~~同时涌现出一大批拥有代表性单片机的厂商:Atmel、TI、ST、MicroChip、ARM…国内的宏晶STC单片机也是可圈可点…   下面为大家带来51、MSP430、TMS、STM32、PIC、AVR、STC单片机之间的优缺点比较及功能体现……   51单片机   应用最广泛的8位单片机当然也是初学者们最容易上手学习的单片机,最早由Intel推出,由于其典型的结构和完善的总线专用寄存器的集中管理,众多的逻辑位操作功能及面
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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