一文详解ATMEGA128熔丝位配置

发布者:Yuexiang最新更新时间:2019-12-24 来源: elecfans关键字:ATMEGA128  熔丝位  配置 手机看文章 扫描二维码
随时随地手机看文章

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部分引脚功能不可用


特点无法使用,直接导致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  熔丝位  配置 引用地址:一文详解ATMEGA128熔丝位配置

上一篇:大神提供的AVR单片机的相关总结
下一篇:由AVR单片机、数据采集模块与控制电路设计的智能控制系统

推荐阅读最新更新时间:2024-11-13 08:25

avr单片机eeprom初始化配置及说明
ATmega16 包含 512 字节的 EEPROM 数据存储器。它是作为一个独立的数据空间而存在的,可以按字节读写。 EEPROM 的寿命至少为 100,000 次擦除周期。 EEPROM 的访问 由地址寄存器、数据寄存器和控制寄存器决定。 /* EEPROM 数据存储器 EEPROM 地址寄存器(EEARH 和 EEARL) bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 Res: 保留 保留位,读操作返回值为零。 EEAR8..0
[单片机]
又一Linux手机发货 这配置只能用寒酸形容
据phonearena和donanimhaber报道,早在去年Pine64公司的基于Linux的智能手机PinePhone向开发者发货,报道称目前这款售价也正式向用户推出,价格为149.99美元(约合人民币1028元)。 据了解,PinePhone智能手机搭载了中国全志公司的Allwinner A64四核处理器,拥有2GB内存,16GB存储空间,采用5.95英寸1440 x 720的LCD显示屏,屏幕比例为18:9。摄像方面,搭载500万像素后置摄像头和200万像素前置摄像头。   这款手机具有许多目前少见的功能,采用可拆卸电池设计和3.5mm耳机插孔;手机中还具有用于禁用Wi-Fi、蓝牙的开关。此外,Pinep
[手机便携]
STM32使用CubeMAX配置的串口中断接收方法
STM32使用cubeMAX可以快速建立工程模板,但是默认使用的是Hal库构成的工程,对于习惯使用了ST标准库的同学来说,灵活调用HAL库可能会比较生疏,我也是这么觉得的,但是还是要逐步去接触学习它,毕竟这个hal库的封装还是相当好的,有好多先进的思想和用法。 在学习过程中,我遇到了一个问题,之前也遇到过,但是没时间去研究,就是串口在CUBUMAX上配置好后,如何实现串口中断接收,接下来就来记录一下我学习到的知识: 1.定位串口中断发生的地方 HAL库的中断处理还是和标准库一样的,在stm32xxxx_it.c中定义我们定位到如下函数: HAL_UART_IRQHandler(&huart1); 再往下定位,我们找
[单片机]
TMC4671驱动步进电机之tmc4671配置代码与TMC4671模拟编码器设置
ADI TMC4671是一款完全集成的伺服控制器,可为BLDC/PMSM和两相步进电机以及直流电机和音圈提供磁场定向控制(FOC)。所有控制功能都在硬件中实现。TMC4671可以为直流无刷电机、永磁同步电机、2相步进电机、直流有刷电机和音圈电机提供磁场定向控制。 此外TMC4671还集成 ADC、位置传感器接口、位置插值器,为广泛的伺服应用提供功能齐全的伺服控制器。 TMC4671硬件集成的电机控制算法及三环控制算法使得开发电机不需要编写一行代码即可完成。 而且TMC4671具有高达100kHz的开关频率和控制器更新速率,并具有滤波和插值功能,如数字霍尔信号插值,以实现更顺畅的操作。该集成电路可以与各类编码器协同工作:
[嵌入式]
TMC4671驱动步进电机之tmc4671<font color='red'>配置</font>代码与TMC4671模拟编码器设置
STM32F103单片机时钟树结构图及时钟配置
2.1 时钟树结构图 STM32属于Cortex-M3内核的单片机,时钟结构比之前的51单片机较复杂的多,根据数据手册,STM32F103的时钟结构如下图所示。 根据上图可以看到,STM32F103系列单片机具有4个时钟源,内部的8MHz时钟发生器,外部的晶体振荡器接口,最高支持16MHz,外部的32.768kHz晶体振荡器接口和内部的40kHz时钟发生器,其中32.768kHz和40kHz主要用于内部RTC时钟脉冲,8MHz的晶振通过PLL时钟倍乘器,将系统总线时钟提高为72MHz。 STM32F103系列内部具有2条外设时钟总线,APB1和APB2,其中APB2的时钟最高可达72MHz,APB1的时钟最高可达36MHz
[单片机]
STM32F103单片机时钟树结构图及时钟<font color='red'>配置</font>
学习笔记∣stm32l0xx时钟系统详解与代码配置
时钟是嵌入式系统的脉搏,对嵌入式系统至关重要。处理器内核在时钟驱动下完成状态变换等动作,外设部件在时钟的驱动下完成各种工作,比如串口数据的发送、A/D转换、定时器计数等等。stm32l0xx系列低功耗新增MSI内部多频率可选时钟源,代码配置方面基于HAL库,与f系列相比存在一定的区别,本文以datasheet中的时钟树图为基础对时钟系统进行学习总结。时钟树如下图1所示: 1、LSI RC,低速内部时钟(RC振荡器),是看门狗(WatchdogLS)的唯一时钟来源,可以作为实时时钟RTC和主时钟输出(MCO)的时钟源。 2、LSE OSC,外部低速时钟(晶振),输入输出引脚接OSC32_IN、OCS32_OUT可以作为实时
[单片机]
学习笔记∣stm32l0xx时钟系统详解与代码<font color='red'>配置</font>
小米官方曝光6X配置 除了拍照还有性能
   4月25日,小米将在武汉大学为我们带来近期曝光度颇高的小米6X,而随着发布会的时间越来越近,这款新机的曝光消息也越来越多了,除了主打人像拍照之外,运行速度或许也是此次的卖点。 小米官方曝光6X配置 除了拍照还有性能(图片引自微博)   从小米官方微博发布的消息称,“变快的运行速度,变大的存储空间,变不了的前后2000万,拍人更美!小米6X 6GB+128GB,4月25日见!”。由此可见,这款机型在手机运行速度上或许有所升级。 小米官方曝光6X配置 除了拍照还有性能(图片引自微博)   据悉,小米6X将采用5.99英寸的2160×1080分辨率显示屏,并搭载高通骁龙660移动平台,电池容量达到了2910mAh。在拍照方面,该机
[手机便携]
STM32串口操作相关事项
放了一段时间,对stm32似乎有点陌生,总结一下! (基于3.0固件库,芯片stm32f103rbt6) 1、配置串口的管脚和时钟 由于串口1、2是在GPIOA上: 所以要是能串口GPIOA、AFIO和1或者2的串口时钟,代码如下: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1 , ENABLE); 2、对串口的具体物理管脚进行相应的配置: /* A9 USART1_Tx */ GPIO_InitStructure.GPIO_Pin = GPIO_Pi
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved