旭日东升4k165w / 文件夹1 / 什么是 熔丝位?怎么配置熔丝位

分享

   

什么是 熔丝位?怎么配置熔丝位

2019-08-27  旭日东升4...

熔丝是一个保护知识产权的设计。简单的说,你在特定的引脚上加电压,足够的电流,就可以烧断里边的这根 熔丝 ,烧断以后,片里的程序就不可以被读出来也不能改写了,只能用来运行。一般成品出售时都这样做。专用的写片机支持这个功能。自己也可以根据芯片的官方文档来操作。熔丝位是在一个特定的地址上可以读到熔丝状态的一个位。0表示已熔断,1表示未熔断。

英文-中文对照

On-Chip Debug Enabled 片内 调试 使能

JTAG Interface Enabled JTAG 接口 使能

Serial program downloading (SPI) enabled 串行编程下载(SPI) 使能 (ISP下载时该位不能修改)

Preserve EEPROM memory through the Chip Erase cycle; 芯片擦除时EEPROM的内容保留

Boot Flash section size=xxxx words 引导(Boot)区大小为xxx个词

Boot start address=$yyyy; 引导(Boot)区开始地址为 $yyyy

Boot Reset vector Enabled 引导(Boot)、复位 向量 使能

Brown-out detection level at VCC=xxxx V; 掉电检测的电平为 VCC=xxxx 伏

Brown-out detection enabled; 掉电检测使能

Start-up time: xxx CK + yy ms 启动时间 xxx 个时钟周期 + yy 毫秒

Ext. Clock; 外部时钟

Int. RC Osc. 内部 RC(阻容) 振荡器

Ext. RC Osc. 外部 RC(阻容) 振荡器

Ext. Low-Freq. Crystal; 外部 低频 晶体

Ext. Crystal/Resonator Low Freq 外部晶体/陶瓷振荡器 低频

Ext. Crystal/Resonator Medium Freq 外部晶体/陶瓷振荡器 中频

Ext. Crystal/Resonator High Freq 外部晶体/陶瓷振荡器 高频

好多人都存在烧新硬件的问题,本文以arduino UNO的atmega328P为例,

什么是 熔丝位?怎么配置熔丝位

如果您有ISP程序员或正在使用另一个Arduino作为ISP程序员,则使用avrdude命令。 将编程器连接到ATmega16U2的ICSP接头并上传固件。 该命令冗长乏味,我需要在某处记录命令,并将其复制并粘贴到命令行。 它太长了,我通常把它分成不同的行。 它是这样的:

通过短接ATmega16U2的ICSP接头上的引脚5和6来复位芯片,激活ATmega16U2芯片上的DFU引导加载程序后,Mac或Linux上的dfu-programmer命令用于使用USB电缆上传固件。

什么是 熔丝位?怎么配置熔丝位

由于所有AVR指令都是16或32位宽,因此Flash的结构为16K x 16.对于软件安全性,

闪存程序存储空间分为两部分,引导程序部分和应用程序

部分。

引导程序部分的操作和

用于软件保护的相关引导锁定位在“存储器编程”中有详细描述

第353页的“存储器编程”包含有关Flash数据串行的详细说明

使用SPI引脚或JTAG接口下载。

什么是 熔丝位?怎么配置熔丝位

什么是 熔丝位?怎么配置熔丝位

什么是 熔丝位?怎么配置熔丝位

其中bootsz两项为熔丝位大小配置,根据你的bootloader大小配置。

11 128B

10 256B

01 512B

00 1K

据说UNO的bootloader只有512字节不到,那把BOOTSZ置01即可。

如果出现无法编程的情况,也许是两种可能:芯片已经被锁(新的不会);硬件焊接有问题(DIY经常出现的问题)。

PS:没打算学avr单片机的人,就别去深究每个熔丝位的作用了,arduino本来就是为了省去这些麻烦的过程,跑去深究就本末倒置了。

想弄得更清楚的孩子,那注意了,在此我重点说几个熔丝位:

CKSEL这几个熔丝位为晶振配置,很多人遇到芯片被锁的情况都是因为这个熔丝位配置出错;一般arduino都使用16M晶振,所以全部置1即可。(如何解锁?下次有时间我再写~~~)

CKOPT置0为开启全幅震荡,当你晶振大于8M时,就要开启。

SPIEN,spi使能,这是唯一一个千万不能置1的熔丝位,如果关了,那USBASP就无法使用了,这时只能通过并行编程或者JTAG来修改熔丝位了(mega8没JTAG...)

BOOTSZ,是对BOOT区大小进行配置的熔丝,根据相应bootloader大小配置。

BOOTRST,是对复位向量的配置,置0时复位向量指向BOOT起始位置,置1时指向APP区起始位置。很多人烧了bootloader后,不能下载或者只能下载一次,大多是因为BOOTRST没有置0。(想搞懂什么是BOOT区?APP区?这些个XX区怎么分配?那去图书管找本AVR的书认真学习吧,数据手册上面也有,但非专业人士还是很难看懂)

RSTDISBL,为硬复位功能使能端,如果置0,可以将reset端做数字IO使用,但在arduino上可能经常用到复位按键,所以这里置1。

WTDON为看门狗设置,置0后将打开看门狗,如不进行喂狗操作,将无限复位。一般我们的非工业制作都不使用看门狗功能,所以这里置1即可。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多

    ×
    ×

    ¥.00

    微信或支付宝扫码支付:

    开通即同意《个图VIP服务协议》

    全部>>