马潮老师关于正确配置AVR熔丝位的建议

发布者:PeacefulOasis最新更新时间:2020-06-06 来源: eefocus关键字:配置  AVR  熔丝位 手机看文章 扫描二维码
随时随地手机看文章

对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。有关ATmega128熔丝位的具体定义和功能请查看本书相关章节,在附录中将给出一个完整的汇总表。


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

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

(3)使用CVAVR中的编程下载程序时应特别注意,由于CVAVR编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的“all”选项。此时的“all”选项会以熔丝位的初始状态定义来配置芯片的熔丝位,而实际上其往往并不是用户所需要的配置结果。如果要使用“all”选项,应先使用“read->fuse bits”读取芯片中熔丝位实际状态后,再使用“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”。关于BOOTRST的配置以及BOOTLOADER程序的设计与IAP的应用请参考本章相关内容。


二、mega8熔丝位:1:未编程(不选中)0:编程(选中)
***************************************
熔丝位        说明            缺省设置
***************************************
RSTDISBL:    复位或I/O功能选择    1        1:复位功能;0:I/O功能(PC6)
WDTON:       看门狗开关           1        1:看门狗打开(通过WDTCR允许);0:看门狗禁止
SPIEN:       SPI下载允许          0        1:SPI下载禁止;0:SPI下载允许(注:当使用SPI编程时,该项不可用)
EEAVE:      烧录时EEPROM数据保留  1        1:不保留;0:保留
BODEN:       BOD功能控制          1        1:BOD功能禁止;0:BOD功能允许
BODLEVEL:    BOD电平选择          1        1:2.7V电平;0:4.0V电平
BOOTRST:    复位入口选择          1        1:程序从0x0000地址开始执行;0:程序从引导区确定的入口地址开始执行
***************************************
BOOTSZ1/0:  引导程序大小及入口    00       
00:1024Word/0xc00;
01:512Word/0xe00;
10:256Word/0xf00;
11:128Word/0xf80
***************************************
BLB02/01:   程序区指令位选择      11
11:SPM和LPM指令都允许执行
10:SPM指令禁止写程序区
01:引导区LPM指令禁止读取程序区内容;如果中断向量定义在引导区,则禁止该中断在程序区执行。
00:SPM指令禁止写程序区;引导区LPM指令禁止读取程序区内容;如果中断向量定义在引导区,则禁止该中断在程序区执行。
***************************************
BLB12/11:   引导区指令位选择      11
11:SPM和LPM指令都允许执行
10:SPM指令禁止写引导区
01:程序区LPM指令禁止读取引导区内容;如果中断向量定义在程序区,则禁止该中断在引导区执行。
00:SPM指令禁止写引导区;程序区LPM指令禁止读取引导区内容;如果中断向量定义在程序区,则禁止该中断在引导区执行。
***************************************
LB2/1:      程序区加密位选择      11       
11:未加密
10:程序和EEPROM编程功能禁止,熔丝位锁定
00:程序和EEPROM编程及校验功能禁止,熔丝位锁定
(注:先编程其他熔丝位,再编程加密位)
***************************************
CKSEL3/0:    时钟源选择           0001
CKOPT:       晶振选择             1
SUT1/0:      复位启动时间选择     10
***************************************
CKSEL3/0=0000:外部时钟,CKOPT=0:允许芯片内部XTAL1管脚对GND接一个36PF电容;CKOPT=1:禁止该电容
----------------
CKSEL3/0=0001-0100:已经校准的内部RC振荡,CKOPT总为1
0001:1.0M
0010:2.0M
0011:4.0M
0100:8.0M
----------------
CKSEL3/0=0101-1000:外部RC振荡,CKOPT=0:允许芯片内部XTAL1管脚对GND接一个36PF电容;CKOPT=1:禁止该电容
0101:<0.9M
0110:0.9-3.0M
0111:3.0-8.0M
1000:8.0-12.0M
----------------
CKSEL3/0=1001:外部低频晶振,CKOPT=0:允许芯片内部XTAL1/XTAL2管脚对GND各接一个36PF电容;CKOPT=1:禁止该电容
----------------
CKSEL3/0=1010-1111:外部晶振,陶瓷振荡子,CKOPT=0:高幅度振荡输出;CKOPT=1:低幅度振荡输出
101X:0.4-0.9M
110X:0.9-3.0M
111X:3.0-8.0M
***************************************
SUT1/0:        复位启动时间选择
当选择不同晶振时,SUT有所不同。


三、时钟选择一览表
时钟源                     启动延时            熔丝
外部时钟                   6 CK + 0 ms         CKSEL=0000 SUT=00
外部时钟                   6 CK + 4.1 ms       CKSEL=0000 SUT=01
外部时钟                   6 CK + 65 ms        CKSEL=0000 SUT=10
内部RC振荡1MHZ             6 CK + 0 ms         CKSEL=0001 SUT=00
内部RC振荡1MHZ             6 CK + 4.1 ms       CKSEL=0001 SUT=01
内部RC振荡1MHZ             6 CK + 65 ms        CKSEL=0001 SUT=10
内部RC振荡2MHZ             6 CK + 0 ms         CKSEL=0010 SUT=00
内部RC振荡2MHZ             6 CK + 4.1 ms       CKSEL=0010 SUT=01
内部RC振荡2MHZ             6 CK + 65 ms        CKSEL=0010 SUT=10
内部RC振荡4MHZ             6 CK + 0 ms         CKSEL=0011 SUT=00
内部RC振荡4MHZ             6 CK + 4.1 ms       CKSEL=0011 SUT=01
内部RC振荡4MHZ             6 CK + 65 ms        CKSEL=0011 SUT=10
内部RC振荡8MHZ             6 CK + 0 ms         CKSEL=0100 SUT=00
内部RC振荡8MHZ             6 CK + 4.1 ms       CKSEL=0100 SUT=01
内部RC振荡8MHZ             6 CK + 65 ms        CKSEL=0100 SUT=10
外部RC振荡≤0.9MHZ        18 CK + 0 ms         CKSEL=0101 SUT=00
外部RC振荡≤0.9MHZ        18 CK + 4.1 ms       CKSEL=0101 SUT=01
外部RC振荡≤0.9MHZ        18 CK + 65 ms        CKSEL=0101 SUT=10
外部RC振荡≤0.9MHZ         6 CK + 4.1 ms       CKSEL=0101 SUT=11
外部RC振荡0.9-3.0MHZ      18 CK + 0 ms         CKSEL=0110 SUT=00
外部RC振荡0.9-3.0MHZ      18 CK + 4.1 ms       CKSEL=0110 SUT=01
外部RC振荡0.9-3.0MHZ      18 CK + 65 ms        CKSEL=0110 SUT=10
外部RC振荡0.9-3.0MHZ       6 CK + 4.1 ms       CKSEL=0110 SUT=11
外部RC振荡3.0-8.0MHZ      18 CK + 0 ms         CKSEL=0111 SUT=00
外部RC振荡3.0-8.0MHZ      18 CK + 4.1 ms       CKSEL=0111 SUT=01
外部RC振荡3.0-8.0MHZ      18 CK + 65 ms        CKSEL=0111 SUT=10
外部RC振荡3.0-8.0MHZ       6 CK + 4.1 ms       CKSEL=0111 SUT=11
外部RC振荡8.0-12.0MHZ     18 CK + 0 ms         CKSEL=1000 SUT=00
外部RC振荡8.0-12.0MHZ     18 CK + 4.1 ms       CKSEL=1000 SUT=01
外部RC振荡8.0-12.0MHZ     18 CK + 65 ms        CKSEL=1000 SUT=10
外部RC振荡8.0-12.0MHZ      6 CK + 4.1 ms       CKSEL=1000 SUT=11
低频晶振(32.768KHZ)       1K CK + 4.1 ms       CKSEL=1001 SUT=00
低频晶振(32.768KHZ)       1K CK + 65 ms        CKSEL=1001 SUT=01
低频晶振(32.768KHZ)      32K CK + 65 ms        CKSEL=1001 SUT=10
低频石英/陶瓷振荡器(0.4-0.9M) 258 CK + 4.1 ms    CKSEL=1010 SUT=00
低石英/陶瓷振荡器(0.4-0.9M)   258 CK + 65 ms     CKSEL=1010 SUT=01
低石英/陶瓷振荡器(0.4-0.9M)    1K CK + 0 ms      CKSEL=1010 SUT=10
低石英/陶瓷振荡器(0.4-0.9M)    1K CK + 4.1 ms    CKSEL=1010 SUT=11
低石英/陶瓷振荡器(0.4-0.9M)    1K CK + 65 ms     CKSEL=1011 SUT=00
低石英/陶瓷振荡器(0.4-0.9M)   16K CK + 0 ms      CKSEL=1011 SUT=01
低石英/陶瓷振荡器(0.4-0.9M)   16K CK + 4.1ms     CKSEL=1011 SUT=10
低石英/陶瓷振荡器(0.4-0.9M)   16K CK + 65ms      CKSEL=1011 SUT=11
中石英/陶瓷振荡器(0.9-3.0M)   258 CK + 4.1 ms    CKSEL=1100 SUT=00
中石英/陶瓷振荡器(0.9-3.0M)   258 CK + 65 ms     CKSEL=1100 SUT=01
中石英/陶瓷振荡器(0.9-3.0M)   1K CK + 0 ms       CKSEL=1100 SUT=10
中石英/陶瓷振荡器(0.9-3.0M)   1K CK + 4.1 ms     CKSEL=1100 SUT=11
中石英/陶瓷振荡器(0.9-3.0M)   1K CK + 65 ms      CKSEL=1101 SUT=00
中石英/陶瓷振荡器(0.9-3.0M)  16K CK + 0 ms       CKSEL=1101 SUT=01
中石英/陶瓷振荡器(0.9-3.0M)  16K CK + 4.1ms      CKSEL=1101 SUT=10
中石英/陶瓷振荡器(0.9-3.0M)  16K CK + 65ms       CKSEL=1101 SUT=11
高石英/陶瓷振荡器(3.0-8.0M)    258 CK + 4.1 ms   CKSEL=1110 SUT=00
高石英/陶瓷振荡器(3.0-8.0M)    258 CK + 65 ms    CKSEL=1110 SUT=01
高石英/陶瓷振荡器(3.0-8.0M)    1K CK + 0 ms      CKSEL=1110 SUT=10
高石英/陶瓷振荡器(3.0-8.0M)    1K CK + 4.1 ms    CKSEL=1110 SUT=11
高石英/陶瓷振荡器(3.0-8.0M)    1K CK + 65 ms     CKSEL=1111 SUT=00
高石英/陶瓷振荡器(3.0-8.0M)    16K CK + 0 ms     CKSEL=1111 SUT=01
高石英/陶瓷振荡器(3.0-8.0M)    16K CK + 4.1ms    CKSEL=1111 SUT=10
高石英/陶瓷振荡器(3.0-8.0M)    16K CK + 65ms     CKSEL=1111 SUT=11
注:1、出厂默认设置
注意:CKOPT=1(未编程)时,最大工作频率为8MHZ
内部RC振荡1MHZ    6 CK + 4.1 ms    CKSEL=0001 SUT=01

[1] [1]
关键字:配置  AVR  熔丝位 引用地址:马潮老师关于正确配置AVR熔丝位的建议

上一篇:基于atmega48的扫描按键例子
下一篇:AVR下载烧写的复杂熔丝设置尿性

推荐阅读最新更新时间:2024-11-05 16:42

Intel10代酷睿桌面处理器i3-10100曝光 配置为4核8线程
从8代酷睿开始, Intel Core i3开始普及四核心,但遗憾就是没有多线程。 按照循序渐进的规律,i3导入4核8线程几乎只是时间问题,现在,In te l要在Comet Lake这一代实现了。 来自基准 测试 软件SiSoft Sandra的数据显示,10代酷睿桌面处理器i3-10100配置为4核8线程,这将是第一颗4核多线程的Core i3处理器。 其它识别出来的参数包括,频率3.6GHz(工程片阶段,仅供参考),1MB L2、6MB L3。 正式为4核Core i3带来多线程也许是Intel计划内的事情,也许是计划外的提前选择。毕竟, AMD 锐龙家族9成以上的处理器都支持多线程,且不 锁 频。 另外,10代
[手机便携]
Intel10代酷睿桌面处理器i3-10100曝光 <font color='red'>配置</font>为4核8线程
DSP系统的建模和配置
嵌入式软件开发需要对目标架构及其使用有广泛透彻的认识和了解。把嵌入式系统从概念转化为能够有效地在硬件环境中部署的高效解决方案,需要一系列步骤。整个过程包括:分析、架构搭建、评估、硬件支持、设计、编码、调试、集成、验证和确认。在这个过程中,如果硬件资源没有得到有效利用,或是软件没有针对硬件资源进行优化,都可能对性能造成严重影响。 CEVA-X系列DSP内核中采用的创新架构需要完全新颖的方案,以充分利用可能的设计变量来控制总体性能。CEVA-X1620是CEVA-X内核系列的第一款产品,采用非常先进的并行架构,在一个机器周期中可执行多达 8条指令。对于这类先进架构,高效能及高效率地使用硬件资源非常重要。 此外,CEVA-X整合了完
[嵌入式]
vscode下W801/806单片机配置
一. 准备工作 阅读下面这篇,完成以下工作 1.安装mysys,以及make 2.安装vscode 3.下载好工具链,解压记好路径 一位大佬的w801在win10下的环境配置 https://www.cnblogs.com/milton/p/15572019.html 二. 将mysys终端嵌入到vscode中 vscode更新迅速,网上的方法大多过时,去查了vscode的官方文档,经过尝试,我是这样配置的 https://code.visualstudio.com/docs/editor/integrated-terminal 复制以下代码,粘贴到vscode的settings.json中 terminal.inte
[单片机]
vscode下W801/806单片机<font color='red'>配置</font>
AVR单片机ATMega16的UART通信总结
#include iom16v.h #include macros.h typedef unsigned char uint8_t; #define DF_Config_Uart0_BaudRate 9600 //UART0 初始化 // desired baud rate: 9600 // actual: baud rate:9600 (0.0%) void uart0_init(void) { UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00; UCSRC = BIT(URSEL) | 0x06; // 配置波特率 #if DF_Confi
[单片机]
红旗H5报价、配置参数
    红旗轿车,一直秉承着“两高一全”的开发理念,拥有高端的质量,高度的安全,全面舒适,定位于高端豪华轿车,一直打造国产车第一品牌形象,然而红旗在一汽集团的领导下,销量一直不景气,甚至都快被埋没了,当然超高的售价让不少车迷难以望其项背,去年11月红旗正式脱离一汽集团独立,然而在脱离一汽的第一个月,红旗H7在12月份的销量竟破千了,达1001台,而去年1-11月份总销量才3000多台,这数据确实令人意外。   红旗H7自2013年上市以来,销量十分惨淡,一直处于低迷状态,虽说耗资500亿重中之重打造国产车第一品牌,但也难以拯救红旗轿车的残局,红旗轿车的售价实在太高,红旗L5售价竟达500万,堪比迈巴赫了,然而在脱离一汽之后,红
[汽车电子]
基于AVR的GSM无线智能变压器综合报警系统
一、项目概述 1.1 引言 本项目设计的基于AVR的GSM 无线智能变压器综合报警系统,其目的在于提供一种无线智能变压器综合报警系统,可以识别系统停电,杜绝误报的发生;可以测量变压器油温并在油温超温时报警;具有“人体非正常接近报警”功能;具备断电工作保护功能,当电源线被破坏或由于其它原因断电时,系统仍能继续工作;可以对电力变压器综合运行参数进行检测,并对故障运行状态(过流、过压、欠压等)进行预警(可选)。该装置可以用在电力系统和大型工业企业领域中,并且本系统稍加改进后,可用于各种无线报警、控制装置中。例如,可以将本装置运用在电力节能方向,如通过该系统的语音、短信功能来控制路灯的开关,实现路灯的防盗与节能。 1.2 项目
[单片机]
STM32F4_USART配置及细节描述
Ⅰ、概述 关于USART串口通信,可以说是MCU的标配。不管是在实际项目应用中,还是在开发过程中,它都起着很重要的作用。 在项目应用中我们常常使用UART串口进行通信,根据通信的距离及稳定性,还选择添加RS232、RS485等对UART数据进行转换。 在开发过程中,我们常常用它来打印调试信息,我们购买的开发板基本上都有一个UART通信接口(DB9的接头),这个接口主要的一个作用就是用来开发时调试使用。 本文主要针对STM32初学者,使用STM32F4标准外设库、Keil集成IDE,对STM32F4的USART进行配置及描述。1.详细描述使用自定义打印数据、自定义中断接收数据;2.重定义打印数据printf; 关于本文的
[单片机]
STM32F4_USART<font color='red'>配置</font>及细节描述
AVR 串口收发 使用循环链表实现的程序源代码
整个工程下载: http://www.rayfile.com/files/062cd042-d7a5-11df-8a51-0015c55db73d/ 关键代码: UART.h: /********** 串口收发循环链表实现 ********** * 版本.........: 1.0 * 作者.........: 陈利栋 * 目标.........: ATmega128 * 文件名.......: UART.h * 编译器.......: IAR for AVR V5.5 * 创建时间.....: 2010.10.14 * 最后修改.....: 2010.10.14 ****************************
[单片机]
<font color='red'>AVR</font> 串口收发 使用循环链表实现的程序源代码
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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