0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文详解ATMEGA128熔丝位配置

电子工程师 作者:工程师陈翠 2018-06-17 09:12 次阅读

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 熔丝位扩展字节

一文详解ATMEGA128熔丝位配置

表2 熔丝位高字节

一文详解ATMEGA128熔丝位配置

表3 熔丝位低字节

一文详解ATMEGA128熔丝位配置

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熔丝位配置。在默认配置下,应用区区间为0000H~EFFFH;Boot Loader区区间为F000H~FFFFH。

(3) USART不能或不能正确收发数据

这是一个较难解决的问题,可分两步来排除错误。首先检查USART的工作模式、数据帧和波特率等设置是否正确;然后根据表4中波特率的计算公式计算 BAUD值和UBRR值。如果计算出的BAUD值与设置的波特率值相差很远,则说明晶振没有正常工作或晶振频率选择得不对,这时应对晶振的熔丝位进行正确配置。在默认状态下,ATmega128工作于内部提供的晶振1 MHz下。若要使ATmega128工作于外部晶振下,应对相应的熔丝位进行配置。

表4 波特率计算公式

一文详解ATMEGA128熔丝位配置

(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使能端配置不当而造成单片机死锁的安全隐患。

一文详解ATMEGA128熔丝位配置

图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使能端,从而达到单片机死锁后解救的目的。

ATmega128死锁后解救措施: 首先制作一条AVRISP并行下载线,威廉希尔官方网站 如图2所示。对于ATmega128和ATmega64,图中MOSI和MISO分别用引脚 PE0(PDI/RXD)和PE1(PDO/TXD)替代。把并行口连接到计算机,10针接口与目标板上单片机预留的AVRISP接口相连;通过双龙公司的SLAVRISP软件进行相应的熔丝位配置,就能重新使能JTAGEN使能端,从而达到单片机死锁后解救的目的。

一文详解ATMEGA128熔丝位配置

4 结论

熔丝位的正确配置是学习和使用AVR单片机的第一步。熔丝位配置不当,可能出现单片机不能正常工作和死锁等一系列问题。本文列举了熔丝位在配置过程中常出现的一些典型问题,并给出了相应的解决办法,尤其详细介绍了一种ATmega128死锁的预防和解救办法。这些典型问题和解决办法有助于正确地理解与配置AVR单片机的熔丝位,对初学者起到参考作用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ATmega128
    +关注

    关注

    3

    文章

    76

    浏览量

    26618
  • 熔丝
    +关注

    关注

    0

    文章

    30

    浏览量

    11315
收藏 人收藏

    评论

    相关推荐

    ATMEGA128ATMEGA128A 区别??

    什么的....升级主要表现在哪些地方???我开始用的是ATMEGA128开发板,后来自己画了块板子,用的是ATMEGA128A,在使用的时候应该注意点什么???请各位各抒己见,谢谢!
    发表于 12-25 22:04

    Atmega128串口详解

    Atmega128串口详解
    发表于 08-19 10:07

    ATMEGA640设定

    ATMEGA640设定CKSEL设定为0011时(内部rc 128KHZ)时,芯片被锁,无法使用,这现象很奇怪,希望高手能解答
    发表于 07-10 09:34

    如何对AVR进行配置

    对AVR配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出对AVR
    发表于 07-13 07:24

    对AVR配置操作时有哪些注意要点和事项?

    对AVR配置操作时有哪些注意要点和事项?ATmega128
    发表于 09-26 06:54

    怎样去设置AVR单片机

    AVR单片机设置可以控制avr单片机的
    发表于 11-23 09:01

    atmega128资料pdf

    ATmega128为基于AVR RISC结构的8低功耗CMOS微处理器。由于其先进的指令集以及单周期指令执行时间, ATmega128 的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度
    发表于 04-07 15:04 2021次下载

    atmega128 pdf

    ATmega128为基于AVR RISC结构的8低功耗CMOS微处理器。由于其先进的指令集以及单周期指令执行时间, ATmega128 的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之
    发表于 04-08 10:47 9次下载

    ATMEGA8的说明

    ATMEGA8的说明,感兴趣的小伙伴可以瞧瞧。
    发表于 11-03 15:15 0次下载

    ATmega128手册

    ATmega128手册是官方网站发布的,很详细
    发表于 12-12 21:36 84次下载

    ATmega128单片机的资料汇总

    在 AVR的器件手册中,使用已编程( Programmed )和未编程( Unprogrammed )定义的状态。 “Unprogrammed”表示丝状态为“ 1”(禁止);“
    发表于 06-30 08:00 9次下载
    <b class='flag-5'>ATmega128</b>单片机<b class='flag-5'>熔</b><b class='flag-5'>丝</b><b class='flag-5'>位</b>的资料汇总

    AVR单片机设置

    AVR单片机设置 可以控制avr单片机的
    发表于 11-14 20:21 12次下载
    AVR单片机<b class='flag-5'>熔</b><b class='flag-5'>丝</b><b class='flag-5'>位</b>设置

    ATmega128单片机](修改后无法烧录程序情况)

    @ATmega128单片机,AVR,ATmega128单片机](修改后无法烧录程序情况)本人是AVR单片机小白,前段时间开始学习AVR单片机,由于脑残更改了AVR单片机的
    发表于 11-15 09:36 26次下载
    <b class='flag-5'>ATmega128</b>单片机](<b class='flag-5'>熔</b><b class='flag-5'>丝</b>修改后无法烧录程序情况)

    Atmega128 AVR Studio(Fuse)设置

    Atmega128 AVR Studio(Fuse)设置
    发表于 11-15 16:21 38次下载
    <b class='flag-5'>Atmega128</b>  AVR Studio<b class='flag-5'>熔</b><b class='flag-5'>丝</b><b class='flag-5'>位</b>(Fuse)设置

    8微处理器atmega128数据手册

    8微处理器atmega128数据手册免费下载。
    发表于 04-28 17:36 13次下载