AVRmega单片机熔丝位的设置详解及应用举例

上传人:平*** 文档编号:11121824 上传时间:2017-10-11 格式:DOC 页数:13 大小:825.28KB
返回 下载 相关 举报
AVRmega单片机熔丝位的设置详解及应用举例_第1页
第1页 / 共13页
AVRmega单片机熔丝位的设置详解及应用举例_第2页
第2页 / 共13页
AVRmega单片机熔丝位的设置详解及应用举例_第3页
第3页 / 共13页
AVRmega单片机熔丝位的设置详解及应用举例_第4页
第4页 / 共13页
AVRmega单片机熔丝位的设置详解及应用举例_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《AVRmega单片机熔丝位的设置详解及应用举例》由会员分享,可在线阅读,更多相关《AVRmega单片机熔丝位的设置详解及应用举例(13页珍藏版)》请在金锄头文库上搜索。

1、AVRmega 单片机熔丝位的设置详解及应用举例一、正确配置 AVR 的熔丝位 对 AVR 熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出对 AVR 熔丝位的配置操作时的一些要点和需要注意的相关事项。(1)在 AVR 的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”或成为已编程状态“0”。 (2)在使用通过选择打钩“”方式确定熔丝位

2、状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“”表示设置熔丝位状态为“0”还是为“1”。 (3)使用 CVAVR 中的编程下载程序时应特别注意,由于 CVAVR 编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的“all”选项。此时的“all”选项会以熔丝位的初始状态定义来配置芯片的熔丝位,而实际上其往往并不是用户所需要的配置结果。如果要使用“all”选项,应先使用“read-fuse bits”读取芯片中熔丝位实际状态后,再使用“all” 选项。 (4)新的 AVR 芯片在使用前,应首先查看它熔丝位的配置情况,再根据实际需要,进行熔丝位

3、的配置,并将各个熔丝位的状态记录备案。 (5)AVR 芯片加密以后仅仅是不能读取芯片内部 Flash 和 E2PROM 中的数据,熔丝位的状态仍然可以读取但不能修改配置。芯片擦除命令是将 Flash 和 E2PROM 中的数据清除,并同时将两位锁定位状态配置成“11”,处于无锁定状态。但芯片擦除命令并不改变其它熔丝位的状态。 (6)正确的操作程序是:在芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的锁定位。芯片被锁定后,如果发现熔丝位配置不对,必须使用芯片擦除命令,清除芯片中的数据,并解除锁定。然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的锁定位。

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

5、。 (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”),这样会造成 I

6、SP 的下载编程无法进行,因为在进入 ISP 方式编程时前,需要将 RESET 引脚拉低,使芯片先进入复位状态。 (10)使用内部有 RC 振荡器的 AVR 芯片时,要特别注意熔丝位 CKSEL 的配置。一般情况下,芯片出厂时CKSEL 位的状态默认为使用内部 1MHz 的 RC 振荡器作为系统的时钟源。如果你使用了外部振荡器作为系统的时钟源时,不要忘记首先正确配置 CKSEL 熔丝位,否则你整个系统的定时都会出现问题。而当在你的设计中没有使用外部振荡器(或某钟特定的振荡源)作为系统的时钟源时,千万不要误操作或错误的把CKSEL 熔丝位配置成使用外部振荡器(或其它不同类型的振荡源)。一旦这种情

7、况产生,使用 ISP 编程方式则无法对芯片操作了(因为 ISP 方式需要芯片的系统时钟工作并产生定时控制信号),芯片看上去“坏了”。此时只有使用取下芯片使用并行编程方式,或使用 JTAG 方式(如果 JTAG 为允许时且目标板上留有JTAG 接口)来解救了。另一种解救的方式是:尝试在芯片的晶体引脚上临时人为的叠加上不同类型的振荡时钟信号,一旦 ISP 可以对芯片操作,立即将 CKSEL 配置成使用内部 1MHz 的 RC 振荡器作为系统的时钟源,然后再根据实际情况重新正确配置 CKSEL。 (11)使用支持 IAP 的 AVR 芯片时,如果你不使用 BOOTLOADER 功能,注意不要把熔丝位

8、 BOOTRST 设置为“0”状态,它会使芯片在上电时不是从 Flash 的 0x0000 处开始执行程序。芯片出厂时 BOOTRST 位的状态默认为“1”。关于 BOOTRST 的配置以及 BOOTLOADER 程序的设计与 IAP 的应用请参考本章相关内容。 二、AVRmega16 单片机中重要熔丝位的配置(1)CLKSEL3:0:用于选择系统的时钟源。(2)SPIEN:SPI 下载使能位。默认状态为允许“0”。(3)WDTON:WDT 定时器始终开启设置位。默认为“1”,表示禁止 WDT 始终开启。(4)EESAVE:执行擦除命令时是否保留 EEPROM 中的内容,默认状态为“1”,表示

9、执行片内擦除命令时,EERPOM 中的内容和 Flash 中的内容一同被擦除。(5)BOOTRST:决定芯片上电时,第一条执行指令的所在地址。默认状态为“1”,表示启动时从 0x0000开始执行。如果 BOOTRST 设置为“0”,则启动时从 Bootloader 区的(6)起始地址处开始执行程序。(7)BOOTSZ1 和 BOOTSZ0:确定 Bootloader 区的大小及其起始的首地址。默认状态为“00”,表示Bootloader 区为 1024 个字的大小,起始首地址为 0x1C00。三、JTAG 口的使用与配置AVRmega16 上,JTAG 的 4 个端口与 PC 口中的 4 位使

10、用相同的引脚(TDI/PC5、TDO/PC4、TMS/PC3 和TCK/PC2),如果使用 JTAG 口的功能,一旦设置 JTAG 接口处于使能状态,那么 PC5:2就不能作为通常的 I/O 口使用了,这就意味着减少了可用的 I/O 口线。在 AVRmega16 中,使用两个熔丝位(JTAGEN 和 OCDEN)和 MCUCSR 寄存器中的 JTD 位对 JTAG 进行控制。其中 JTD 位可以由程序指令进行改变。下表给出 3 个控制位对 JTAG 的控制JTAGEN OCDEN JTD LB2/LB1 PC5:2功能1 X X X/X I/O0 1 0 X/X JTAG(仅允许下载编程)0

11、1 1 X/X I/O0 0 0 1/1 JTAG(允许下载和在片调试)0 0 1 X/X I/O注:JTD 控制位上电复位的初值是“0”,同时为了防止意外开启或关闭 JTAG口,需要使用特定的指令操作时序对 JTD 进行设置:必须在 4 个时钟周期内对JTD 位重复 2 次写入,才能将 JTD 标志设置成所希望的值。四、提高系统可靠性的熔丝位配置(1)BOD 功能:对系统电压进行检测的功能,一旦系统电压低于设定的门限电压后,AVR 将自动停止正常运行,进入复位状态。对于 5V 系统,设置 BOD 电平为 4.0V,然后允许 BOD 检测。对于 3V 系统,设置 BOD 电平为 2.7V,然后

12、允许 BOD 检测。(2)延时启动时间:通过 AVR 熔丝位配置,最长延时启动时间达到 65ms。(3)CKOPT 熔丝位的使用:在引脚 XTAL1 和 XTAL2 上外接由石英晶体并配合片内的 OSC 振荡电路构成的振荡源时,CKOPT 的作用是控制片内 OSC 振荡电路的振荡幅度;CKOPT=1时,振荡电路为半幅振荡;CKOPT=0时,振荡电路为全幅振荡;当系统时钟频率较高(8MHz)或要求抗干扰能力强时,应该设置 CKOPT 为“0”。当系统时钟频率较低(2MHz)时,可以考虑将 CKOPT 设置为“1”(出厂默认值),这样可以减少电流的消耗。五、AVR Studio 熔丝位配置应用举例

13、通过下图的方法打开连接:使用操作界面如下:((注意:下图中,打勾的表示选中,代表 0。没有打勾的表示1)上图的资料有很多相关项,你需要认识以下的代码,以理解意思。英文翻译说明如下英文 中文On-Chip Debug Enabled 片内 调试 使能 JTAG Interface Enabled JTAG 接口 使能 Serial program downloading (SPI) enabled 串行编程下载(SPI) 使能 (ISP 下载时该位不能修改)Preserve EEPROM memory through the Chip Erase cycle; 芯片擦除时 EEPROM 的内容保

14、留Boot Flash section size=xxxx words 引导(Boot)区大小为 xxx 个词Boot start address=$yyyy; 引导(Boot)区开始地址为 $yyyy Boot Reset vector Enabled 引导(Boot)、复位 向量 使能 Brown-out detection level at VCC=xxxx V; 掉电检测的电平为 VCC=xxxx 伏 Brown-out detection enabled; 掉电检测使能Start-up time: xxx CK + yy ms 启动时间 xxx 个时钟周期 + yy 毫秒Ext. C

15、lock; 外部时钟Int. RC Osc. 内部 RC(阻容) 振荡器Ext. RC Osc. 外部 RC(阻容) 振荡器 Ext. Low-Freq. Crystal; 外部 低频 晶体Ext. Crystal/Resonator Low Freq 外部晶体/陶瓷振荡器 低频 注:以上中文是对照 ATmega16 的中、英文版本数据手册而翻译。尽量按照了官方的中文术语。应用举例:比如我们想使用片内的 RC 振荡(即不需要接晶振),可以选择下面三者之一: CKSEL=0100 SUT=10 Int. RC Osc. 1 MHz; Start-up time: 6 CK + 0 ms; CKS

16、EL=0100 SUT=00 Int. RC Osc. 1 MHz; Start-up time: 6 CK + 4 ms; CKSEL=0100 SUT=01 Int. RC Osc. 1 MHz; Start-up time: 6 CK + 64 ms; 如图:内部 1M 晶振,默认情况典型设置。(两个图分别为上下两部分,没有显示的部分均为不选中状态。)Ext. Crystal/Resonator Medium Freq 外部晶体/陶瓷振荡器 中频Ext. Crystal/Resonator High Freq 外部晶体/陶瓷振荡器 高频下图显示的是选择内部晶振,1 Mhz RC比如我们想使用外部 7.3728M 晶振,可以选择下面三者之一: CKSEL=1111 SUT=01Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 0 ms; CKSEL=1111 SUT=10Ext. Crys

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号