AVR熔丝位设置.doc_第1页
AVR熔丝位设置.doc_第2页
AVR熔丝位设置.doc_第3页
AVR熔丝位设置.doc_第4页
AVR熔丝位设置.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

初学者对熔丝经常不解,AVR芯片使用熔丝来设定时钟、启动时间、一些功能的使能、BOOT区设定、当然还有最让初学者头疼的保密位,设不好锁了芯片很麻烦。要想使MCU功耗最小也要了解一些位的设定。1:未编程 0:编程 1.BOD(Brown-out Detection) 掉电检测电路 BODLEVEL(BOD电平选择): 1: 2.7V电平; 0:4.0V电平 BODEN(BOD功能控制): 1:BOD功能禁止;0:BOD功能允许 使用方法:如果BODEN使能(复选框选中)启动掉电检测,则检测电平由BODLEVEL决定。一旦VCC下降到触发电平(2.7v或4.0v)以下,MCU复位;当VCC电平大于触发电平后,经过tTOUT 延时周后重新开始工作。 因为M16L可以工作在2.7v5.5v,所以触发电平可选2.7v(BODLEVEL=1)或4.0v(BODLEVEL=0);而M16工作在4.55.5V,所以只能选BODLEVEL=0,BODLEVEL=1不适用于ATmega16。 2.复位启动时间选择 SUT 1/0: 当选择不同晶振时,SUT有所不同。 如果没有特殊要求推荐SUT 1/0设置复位启动时间稍长,使电源缓慢上升。 3.CKSEL3/0: 时钟源选择(时钟总表) 时钟总表 时钟源 启动延时 熔丝 外部时钟 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振荡1MHZ1 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.9MHZ) 258 CK + 4.1 ms CKSEL=1010 SUT=00 低频石英/陶瓷振荡器(0.4-0.9MHZ) 258 CK + 65 ms CKSEL=1010 SUT=01 低频石英/陶瓷振荡器(0.4-0.9MHZ) 1K CK + 0 ms CKSEL=1010 SUT=10 低频石英/陶瓷振荡器(0.4-0.9MHZ) 1K CK + 4.1 ms CKSEL=1010 SUT=11 低频石英/陶瓷振荡器(0.4-0.9MHZ) 1K CK + 65 ms CKSEL=1011 SUT=00 低频石英/陶瓷振荡器(0.4-0.9MHZ) 16K CK + 0 ms CKSEL=1011 SUT=01 低频石英/陶瓷振荡器(0.4-0.9MHZ) 16K CK + 4.1ms CKSEL=1011 SUT=10 低频石英/陶瓷振荡器(0.4-0.9MHZ) 16K CK + 65ms CKSEL=1011 SUT=11 中频石英/陶瓷振荡器(0.9-3.0MHZ) 258 CK + 4.1 ms CKSEL=1100 SUT=00 中频石英/陶瓷振荡器(0.9-3.0MHZ) 258 CK + 65 ms CKSEL=1100 SUT=01 中频石英/陶瓷振荡器(0.9-3.0MHZ) 1K CK + 0 ms CKSEL=1100 SUT=10 中频石英/陶瓷振荡器(0.9-3.0MHZ) 1K CK + 4.1 ms CKSEL=1100 SUT=11 中频石英/陶瓷振荡器(0.9-3.0MHZ) 1K CK + 65 ms CKSEL=1101 SUT=00 中频石英/陶瓷振荡器(0.9-3.0MHZ) 16K CK + 0 ms CKSEL=1101 SUT=01 中频石英/陶瓷振荡器(0.9-3.0MHZ) 16K CK + 4.1ms CKSEL=1101 SUT=10 中频石英/陶瓷振荡器(0.9-3.0MHZ) 16K CK + 65ms CKSEL=1101 SUT=11 高频石英/陶瓷振荡器(3.0-8.0MHZ) 258 CK + 4.1 ms CKSEL=1110 SUT=00 高频石英/陶瓷振荡器(3.0-8.0MHZ) 258 CK + 65 ms CKSEL=1110 SUT=01 高频石英/陶瓷振荡器(3.0-8.0MHZ) 1K CK + 0 ms CKSEL=1110 SUT=10 高频石英/陶瓷振荡器(3.0-8.0MHZ) 1K CK + 4.1 ms CKSEL=1110 SUT=11 高频石英/陶瓷振荡器(3.0-8.0MHZ) 1K CK + 65 ms CKSEL=1111 SUT=00 高频石英/陶瓷振荡器(3.0-8.0MHZ) 16K CK + 0 ms CKSEL=1111 SUT=01 高频石英/陶瓷振荡器(3.0-8.0MHZ) 16K CK + 4.1ms CKSEL=1111 SUT=10 高频石英/陶瓷振荡器(3.0-8.0MHZ) 16K CK + 65ms CKSEL=1111 SUT=11 高位(BOOT区设置): 1. JTAGEN(JTAG允许): 1:JTAG禁止; 0:JTAG允许 OCDEN(OCD功能允许): 1:OCD功能禁止;0:OCD功能允许 注:OCDEN(On-chip Debug):片上调试使能位 JTAGEN(JTAG使能): JTAG测试访问端口 使用方法:在JTAG调试时,使能OCDEN JTAGEN两位(复选框打勾),并保持所有的锁定位处于非锁定状态;在实际使用时为降低功耗,不使能OCDEN JTAGEN,大约减少23mA的电流。 2. SPIEN(SPI下载允许): 1:SPI下载禁止;0:SPI下载使能 注:在ISP的软件里,SPIEN是不能编辑的,默认为0。 3. CKOPT(选择放大器模式): CKOPT0:高幅度振荡输出;CKOPT1:低幅度振荡输出 当CKOPT 被编程时振荡器在输出引脚产生满幅度的振荡。这种模式适合于噪声环境,以及需要通过XTAL2 驱动第二个时钟缓冲器的情况,而且这种模式的频率范围比较宽。当保持CKOPT 为未编程状态时,振荡器的输出信号幅度比较小。其优点是大大降低了功耗,但是频率范围比较窄,而且不能驱动其他时钟缓冲器。对于谐振器,当CKOPT未编程时的最大频率为8 MHz,CKOPT编程时为16 MHz。内部RC振荡器工作时不对CKOPT编程。 4.EEAVE(烧录时EEPROM数据保留): 1:不保留;0:保留 5.BOOTRST(复位入口选择): 1:程序从0x0000地址开始 0:复位后从BOOT区执行(参考BOOTSZ0/1) 6.BOOTSZ 1/0(引导区程序大小及入口): 00: 1024Word/0xc00; 01: 512Word/0xe00; 10: 256Word/0xf00; 11: 128Word/0xf80mega8熔丝位: 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/00000:外部时钟,CKOPT0:允许芯片内部XTAL1管脚对GND接一个36PF电容;CKOPT1:禁止该电容 - CKSEL3/000010100:已经校准的内部RC振荡,CKOPT总为1 0001:1.0M 0010:2.0M 0011:4.0M 0100:8.0M - CKSEL3/001011000:外部RC振荡,CKOPT0:允许芯片内部XTAL1管脚对GND接一个36PF电容;CKOPT1:禁止该电容 0101: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的应用请参考本章相关内容。5.1.2 ATmega128中重要熔丝位的配置上一小节介绍了配置AVR熔丝位的要点和注意事项,本小节把在一般情况下使用ATmega128时,几个重要的熔丝位配置情况进行说明。(1)熔丝位M103C。M103C的配置将设定ATmega128是以ATmega103兼容方式工作运行还是以ATmega128本身的方式工作运行。ATmega128在出厂时M103C默认状态为“0”,即默认以ATmega103兼容方式工作。当用户系统设计使芯片以ATmega128方式工作时,应首先将M103C的状态配置为“1”。(2)CLKSEL0.3。CLKSEL0、CLKSEL1、CLKSEL2、CLKSEL3用于选择系统的时钟源。有五种不同类型的时钟源可供选择(每种类型还有细的划分)。芯片出厂时的默认情况为CLKSEL3.0和SUT1.0分别是“0001”和“10”。即使用内部1MHz RC振荡器,使用最长的启动延时。这保证了无论外部振荡电路是否工作,都可以进行最初的ISP下载。对于CLKSEL3.0熔丝位的改写需要十分慎重,因为一旦改写错误,会造成芯片无法启动,见上一小节第10点说明。(3)JTAGEN。如果不使用JTAG接口,应将JTAGEN的状态设置为“1”,即禁止

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论