正确配置熔丝位.doc

上传人:sk****8 文档编号:3191394 上传时间:2019-05-25 格式:DOC 页数:4 大小:38.50KB
下载 相关 举报
正确配置熔丝位.doc_第1页
第1页 / 共4页
正确配置熔丝位.doc_第2页
第2页 / 共4页
正确配置熔丝位.doc_第3页
第3页 / 共4页
正确配置熔丝位.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1 楼主:正确配置 AVR 熔丝位文章发表于:2007-10-13 02:13作者:马潮老师 我又修改添加了一些常用熔丝位的设置对 AVR 熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出对 AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。 (1)在 AVR 的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为 “1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”或成为已编程状态“

2、0”。 熔丝位状态显示框,显示芯片的各个熔丝位的详细状况,AVR 的熔丝位打勾表示 0,表示启用该选项;取消表示 1,表示不启用该选项,需要注意。(2)在使用通过选择打钩“” 方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“” 表示设置熔丝位状态为“0” 还是为“1”。 (3)使用 CVAVR 中的编程下载程序时应特别注意,由于 CVAVR 编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的“all”选项。此时的“all” 选项会以熔丝位的初始状态定义来配置芯片的熔丝位,而实际上其往往并不是用户所需要的配置结果。如果要使用“a

3、ll”选项,应先使用“read-fuse bits”读取芯片中熔丝位实际状态后,再使用 “all” 选项。 (4)新的 AVR 芯片在使用前,应首先查看它熔丝位的配置情况,再根据实际需要,进行熔丝位的配置,并将各个熔丝位的状态记录备案。 (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”,开放 I

5、SP。通常情况下,应保持 SPIEN 的状态为“0” ,允许 ISP 编程不会影响其引脚的 I/O 功能,只要在硬件电路设计时,注意 ISP 接口与其并接的器件进行必要的隔离,如使用串接电阻或断路跳线等。 (8)当你的系统中,不使用 JTAG 接口下载编程或实时在线仿真调试,且 JTAG 接口的引脚需要作为 I/O口使用时,必须设置熔丝位 JTAGEN 的状态为 “1”。芯片出厂时 JTAGEN 的状态默认为“0”,表示允许JTAG 接口,JTAG 的外部引脚不能作为 I/O 口使用。当 JTAGEN 的状态设置为“1” 后,JTAG 接口立即被禁止,此时只能通过并行方式或 ISP 编程方式才

6、能将 JTAG 重新设置为 “0”,开放 JTAG。 (9)一般情况下不要设置熔丝位把 RESET 引脚定义成 I/O 使用(如设置 ATmega8 熔丝位 RSTDISBL 的状态为“0”),这样会造成 ISP 的下载编程无法进行,因为在进入 ISP 方式编程时前,需要将 RESET 引脚拉低,使芯片先进入复位状态。 (10)使用内部有 RC 振荡器的 AVR 芯片时,要特别注意熔丝位 CKSEL 的配置。一般情况下,芯片出厂时 CKSEL 位的状态默认为使用内部 1MHz 的 RC 振荡器作为系统的时钟源。 如果你使用了外部振荡器作为系统的时钟源时,不要忘记首先正确配置 CKSEL 熔丝位

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

8、EL 配置成使用内部 1MHz 的 RC 振荡器作为系统的时钟源,然后再根据实际情况重新正确配置 CKSEL。 (11)使用支持 IAP 的 AVR 芯片时,如果你不使用 BOOTLOADER 功能,注意不要把熔丝位 BOOTRST设置为“0”状态,它会使芯片在上电时不是从 Flash 的 0x0000 处开始执行程序。芯片出厂时 BOOTRST 位的状态默认为“1”。关于 BOOTRST 的配置以及 BOOTLOADER 程序的设计与 IAP 的应用请参考本章相关内容。 (12)CKOPTCKOPT 不编程即不打勾时为 0 状态为晶体振荡器;打勾为选中为谐振器;XTAL1 与 XTAL2 分

9、别为用作片内振荡器的反向放大器的输入和输出,如 Figure 12 所示,这个振荡器可以使用石英晶体,也可以使用陶瓷谐振器。熔丝位 CKOPT 用来选择这两种放大器模式的其中之一。当 CKOPT 被编程时振荡器在输出引脚产生满幅度的振荡。这种模式适合于噪声环境,以及需要通过XTAL2 驱动第二个时钟缓冲器的情况。而且这种模式的频率范围比较宽。当保持 CKOPT 为未编程状态时,振荡器的输出信号幅度比较小。其优点是大大降低了功耗,但是频率范围比较窄,而且不能驱动其他时钟缓冲器。对于谐振器, CKOPT 未编程时的最大频率为 8 MHz, CKOPT 编程时为 16 MHz。C1 和 C2 的数值

10、要一样,不管使用的是晶体还是谐振器。最佳的数值与使用的晶体或谐振器有关,还与杂散电容和环境的电磁噪声有关。Table8 给出了针对晶体选择电容的一些指南。对于陶瓷谐振器,应该使用厂商提供的数值。若想得到更多的有关如何选择电容以及振荡器如何工作的信息,请参考多用途振荡器应用手册。ATmega128 中重要熔丝位的配置 (1)熔丝位 M103C。M103C 的配置将设定 ATmega128 是以 ATmega103 兼容方式工作运行还是以ATmega128 本身的方式工作运行。ATmega128 在出厂时 M103C 默认状态为“0” ,即默认以 ATmega103 兼容方式工作。当用户系统设计使

11、芯片以 ATmega128 方式工作时,应首先将 M103C 的状态配置为“1” 。 (2)CLKSEL0.3。CLKSEL0、CLKSEL1、CLKSEL2、CLKSEL3 用于选择系统的时钟源。有五种不同类型的时钟源可供选择(每种类型还有细的划分)。芯片出厂时的默认情况为 CLKSEL3.0 和 SUT1.0 分别是“0001”和“10” 。即使用内部 1MHz RC 振荡器,使用最长的启动延时。这保证了无论外部振荡电路是否工作,都可以进行最初的 ISP 下载。对于 CLKSEL3.0 熔丝位的改写需要十分慎重,因为一旦改写错误,会造成芯片无法启动。(3)JTAGEN。如果不使用 JTAG

12、 接口,应将 JTAGEN 的状态设置为“1”,即禁止 JTAG,JTAG 引脚用于 I/O 口。 (4)SPIEN 。SPI 方式下载数据和程序允许,默认状态为允许“0”。一般保留其状态。 (5)WDTON。看门狗的定时器始终开启。WDTON 默认为“1”,即禁止看门狗的定时器始终开启。如果该位设置为“0”后,看门狗的定时器就会始终打开,不能被内部程序控制了,这是为了防止当程序跑飞时,未知代码通过写寄存器将看门狗定时器关断而设计的(尽管关断看门狗定时器需要特殊的方式,但它保证了更高的可靠行)。 (6)EESAVE。执行擦除命令时是否保留 E2PROM 中的内容,默认状态为“1” ,表示 E2

13、PROM 中的内容同 Flash 中的内容一同擦除。如果该位设置为 “0”,对程序进行下载前的擦除命令只会对 FLASH 代码区有效,而对 E2PROM 区无效。这对于希望在系统更新程序时,需要保留 E2PROM 中数据的情况下是十分有用的。 (7)BOOTRST。决定芯片上电起动时,第一条执行指令的地址。默认状态为“1” ,表示起动时从 0x0000开始执行。如果 BOOTRST 设置为 “0”,则起动时从 BOOTLOADER 区的起始地址处开始执行程序。BOOTLOADER 区的大小由 BOOTSZ1 和 BOOTSZ0 决定,因此其首地址也随之变化。 (8)BOOTSZ1 和 BOOT

14、SZ0:这两位确定了 BOOTLOADER 区的大小以及其起始的首地址。默认的状态为“00”,表示 BOOTLOADER 区为 4096 字,起始首地址为 0xF000。 (9)推荐用户使用 ISP 方式配置熔丝位。配置工具选用 BASCOM-AVR(网上下载试用版,它对 ISP 下载无限制),和 STK200/STK300 兼容的下载电缆(见第四章内容)。 注:不同 AVR 的熔丝也不同,使用前必须仔细查看芯片手册。 要重视手册学习,不仅是掌握如何使用,也是从根本上认识和掌握原理和结构。对于硬件工程师来将,数据手册是真正的“经书” ,其它都是 “修练经验”。不熟读“ 经书”,你无法修炼成“仙”的。这也是M128、M8 的目的之一!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。