




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ATMEGA128熔丝位配置详解熔丝位配置2009-07-29 11:51在配置熔丝位时应特别注意,部分熔丝位(如OCDEN、JTAGEN和SPIEN等)的配置是不可逆的2009年04月17日 星期五 11:28引言AVR系列单片机在仿真调试之前,首先必须对AVR的熔丝位和锁定位进行配置。如果配置不当,则可能造成单片机不能正常工作,严重时可能导致单片机死锁。因此,对单片机熔丝位和锁定位的正确配置显得尤为重要。熔丝位是对单片机具体功能和工作模式的限定,其正确配置与否直接影响到单片机能否正常工作;锁定位是对单片机的程序和数据进行加密,以防止单片机中的程序和数据被读出或写入。在进行配置时,一般先配置熔丝位,再配置锁定位。锁定位又分为引导程序区锁定位和程序及数据存储器锁定位两类。对引导程序区锁定位进行编程可以实现两套保护模式,即应用区保护模式和Boot Loader区保护模式;不同的编程配置可以实现不同的加密级别。对程序及数据存储器锁定位进行编程可以禁止对并行和SPI/JTAG串行编程模式中Flash和EEPROM进一步编程,从而对程序和存储器中的数据进行保护。由于引导程序锁定位和程序及数据存储器锁定位的配置具有可逆性,因此可根据不同的需要多次编程,灵活改变。但是,在配置熔丝位时应特别注意,部分熔丝位(如OCDEN、JTAGEN和SPIEN等)的配置是不可逆的。在采用单一编程下载情况下(例如只采用JTAG下载或者只采用AVRISP并行下载),一旦配置后将不可改变。鉴于熔丝位配置的重要性,本文以AVR系列的ATmega128单片机为例,详细介绍熔丝位的配置以及在配置过程中常出现的一些问题,并给出相应的解决办法,成功地解决了因熔丝位配置不当而引起的单片机不能正常工作和死锁等一系列问题。1 熔丝位的配置ATmega128的熔丝位共有3个字节: 熔丝位扩展字节、熔丝位高字节和熔丝位低字节。表1、表2和表3分别描述了所有熔丝位的功能、默认值以及它们是如何映射到熔丝位字节的。如果熔丝位被编程,则返回值为0。表中0代表编程,1代表未编程。表1 熔丝位扩展字节表2 熔丝位高字节表3 熔丝位低字节2 熔丝位配置常见问题(1) ATmega128部分引脚功能不可用这是一个典型的ATmega103兼容模式熔丝位没有正确配置的问题。ATmega128与ATmega103的引脚百分百兼容,而且通过编程熔丝位M103C,使ATmega128和ATmega103从RAM、I/O引脚和中断向量角度完全兼容,在使用上完全取代ATmega103。但在兼容模式下ATmega128的一些新特点无法使用: 只剩下一个USART,而且只支持异步模式,波特率只有低8位可用; 只有1个16位定时器和2个比较器,而不是2个16位定时器和3个比较器; 不支持两线接口; 端口C只能输出; 端口G可能用作第二功能,而不能作为通用I/O端口; 端口F只能作为输入,而不能作为ADC的模拟输入引脚; 不支持引导程序功能; 不能调节片内RC振荡器的频率。这些新特点无法使用,直接导致ATmega128部分引脚功能不可用。(2) ATmega128启动后停止在Boot Loader区这是一个复位向量熔丝位和Boot区大小选择熔丝位没有正确配置的问题。ATmega128具有128 KB的系统内可编程Flash。它由两个区构成,即应用区和Boot Loader区;两个区的大小可通过BOOTSZ熔丝位配置。在默认配置下,应用区区间为0000HEFFFH;Boot Loader区区间为F000HFFFFH。(3) USART不能或不能正确收发数据这是一个较难解决的问题,可分两步来排除错误。首先检查USART的工作模式、数据帧和波特率等设置是否正确;然后根据表4中波特率的计算公式计算BAUD值和UBRR值。如果计算出的BAUD值与设置的波特率值相差很远,则说明晶振没有正常工作或晶振频率选择得不对,这时应对晶振的熔丝位进行正确配置。在默认状态下,ATmega128工作于内部提供的晶振1 MHz下。若要使ATmega128工作于外部晶振下,应对相应的熔丝位进行配置。表4 波特率计算公式(4) ATmega128的PF口不能正常工作ATmega128的PF口是普通I/O口、数模转换口和JTAG接口的分时复用口。PF口用作JTAG接口后,不能再用作普通I/O口;若想作普通I/O使用,则须对熔丝位进行编程禁止JTAGEN使能端。(5) JTAG仿真器不能连接到目标板出现这一问题主要是由于JTAGEN使能端熔丝位被编程为禁止。如果使用JTAG仿真器进行程序编程下载,则此时JTAGEN使能端的熔丝位不可恢复。3 ATmega128死锁的预防和解救措施ATmega128的JTAG接口支持片内调试和程序下载,还能实现对Flash、EEPROM、熔丝位和锁定位的编程,其接口电路如图1所示。虽然JTAG接口使用非常方便,但是存在因熔丝位JTAGEN使能端配置不当而造成单片机死锁的安全隐患。图1 ATmega128的JTAG接口电路ATmega128死锁的预防原理: ATmega128程序的下载方式有JTAG下载和AVRISP下载两种,通过这两种方式都可以进行熔丝位的配置。如果只使用JTAG接口,则当熔丝位JTAGEN使能端配置为禁止时,不能再通过JTAG接口恢复。理论上,如果只使用AVRISP接口,则当熔丝位SPIEN使能端禁止后也不能再通过AVRISP接口恢复。但这种情况一般不会出现,因为芯片在出厂时已默认为SPI编程使能,且不可再对其进行配置。因此当使用JTAG接口时应预设AVRISP接口,以便当JTAGEN使能端被禁止时仍可通过AVRISP接口恢复,从而达到预防单片机死锁的目的。ATmega128死锁后解救措施: 首先制作一条AVRISP并行下载线,电路如图2所示。对于ATmega128和ATmega64,图中MOSI和MISO分别用引脚PE0(PDI/RXD)和PE1(PDO/TXD)替代。把并行口连接到计算机,10针接口与目标板上单片机预留的AVRISP接口相连;通过双龙公司的SLAVRISP软件进行相应的熔丝位配置,就能重新使能JTAGEN使能端,从而达到单片机死锁后解救的目的。图2 AVRISP并行下载线电路4 结论熔丝位的正确配置是学习和使用AVR单片机的第一步。熔丝位配置不当,可能出现单片机不能正常工作和死锁等一系列问题。本文列举了熔丝位在配置过程中常出现的一些典型问题,并给出了相应的解决办法,尤其详细介绍了一种ATmega128死锁的预防和解救办法。这些典型问题和解决办法有助于正确地理解与配置AVR单片机的熔丝位,对初学者起到参考作用。来自天详电子:初学者对熔丝经常不解,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功能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年北京市水果供应商采购合同
- 临床妇产科招聘考试题及答案2025年版
- 康复科临床技能操作试题及答案2025年版
- 2025年文化创意产业博览会文化创意产业与文化创意产业园区市场拓展可行性报告
- 2025设备租赁协议终止合同
- 门卫岗前安全培训课件
- 潮玩行业2025年市场洞察报告:IP运营模式创新与行业前景
- 2025年自律力博学题库及答案
- 泛安防及智能产品光学镜头建设项目环评报告表
- 年产改性塑料粒1450吨、3D打印线材1000吨异地新建项目环评报告表
- 2024年人教版九年级英语单词默写单(微调版)
- 2024年东南亚解热镇痛类原料药市场深度研究及预测报告
- 2020年新人教版必修三《Unit 2 Morals and Virtues》单元教案(附导学案)
- 《民航客舱设备操作与管理》课件-项目四 飞机舱门及撤离滑梯
- DL-T 1476-2023 电力安全工器具预防性试验规程
- 2023年10月自考02207电气传动与可编程控制器PLC试题及答案含解析
- 网络自动化运维教程-课程标准
- 项目及其策划方案
- 《食品质量检验分析技术》
- 百家争鸣详解课件
- 肠内营养并发症预防与处理指南
评论
0/150
提交评论