打印
[PIC®/AVR®/dsPIC®产品]

熔丝位的恢复

[复制链接]
738|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 wgtwgtwgt 于 2022-12-3 21:56 编辑

因为疫情,学校安排学生们回家上网课了。平时都是家校两点跑,再加上一些杂事,不得闲。通知到校参加什么什么会议、整理提交什么什么材料,少则半天,多则一整天,什么也干不成,精力、时间严重碎片化。总是,各种措施就是让教师、学生不能闲下来。因为疫情反而从各种杂事、各种会议中解脱出来,不折腾,也得以喘口气。窝在家,上完网课,某宝购买的高压编程器也到了,彻底解决熔丝位问题。待恢复熔丝的芯片是2片ATMEGA328P-PU和1片ATmega328PB-Xplained-Mini上的ATMEGA328PB-MUB,它仨自从锁死后,已经歇半年了。
先是ATMEGA328P-PU:

从arduino ide的路径C:\Users\xxx\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6下找到boards.txt文件,从中找出UNO的熔丝设置:


然后打开microchip studio,从下图添加高压编程器(事先得安装高压编程器上的USB转串口芯片驱动PL2303):


添加好高压编程器后,按下图配置熔丝:


点击Program按钮,将熔丝配置烧录到芯片内部。
接着还是用高压编程器烧录bootloader:



点击Program按钮,将bootloader烧录到芯片内部。
将它俩分别装到UNO板子上,经测试这俩芯片终于又活了。
接着恢复ATmega328PB-Xplained-Mini上的ATMEGA328PB-MUB:





使用特权

评论回复
沙发
wgtwgtwgt|  楼主 | 2022-12-2 18:17 | 只看该作者
本帖最后由 wgtwgtwgt 于 2022-12-3 22:43 编辑

接着恢复ATmega328PB-Xplained-Mini上的ATMEGA328PB-MUB熔丝,已经确认板载mEDBG是正常的,能被microchip studio正确识别,但无论对atmega328pb调试程序还是下载程序,均出现相同的错误,无法用mEDBG解决,也就是无法用mEDBG进入atmega328pb的ISP模式,这说明atmega328pb被锁死了:

接着用STK500恢复atmega328pb的熔丝。先从microchip官网下载“ATmega328PB-Xplained-Mini-UG-DS50002660B.pdf”文档,从中查出它的默认熔丝配置:
接着本以为后续过程会像前面恢复ATMEGA328P-PU那样丝滑,但实际上遇见了困难,至今未解决。根据atmega328pb的芯片手册,以及STK500高压编程器,下图右侧是STK500与atmega328pb芯片的接线表:

共需20根跳线:

但是用STK500的高压编程模式读atmega328pb芯片id时,总是弹出如下错误(Apply正常,Read就出错):


已经多次确认接线无误,但就是读不到目标芯片的ID。目标芯片应该没坏,半年前做简单的熔丝位测试时(板子没有连接任何外部电路)因修改熔丝位后板子就不能使用了。也不知道还有没有其它好法。。。

使用特权

评论回复
评论
王栋春 2022-12-3 22:35 回复TA
@wgtwgtwgt :对这方面的知识不了解呀,等着楼主攻坚克难。 
wgtwgtwgt 2022-12-3 22:28 回复TA
@王栋春 :您好,帖子内容之前有点乱,今天排了下版,更新了些内容。目前用STK500恢复atmega328pb熔丝时遇见了困难。。。 
王栋春 2022-12-2 22:22 回复TA
期待楼主的后续跟进。 
板凳
lcczg| | 2022-12-5 13:57 | 只看该作者
板上的编程器是否已经断开?
如果没有,请先焊掉R109, R110. 原理图 https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega328PB_Xplained_Mini_Schematics.pdf

使用特权

评论回复
地板
wgtwgtwgt|  楼主 | 2022-12-12 22:31 | 只看该作者
lcczg 发表于 2022-12-5 13:57
板上的编程器是否已经断开?
如果没有,请先焊掉R109, R110. 原理图 https://ww1.microchip.com/downloads ...

忙活了一周,终于又有时间了。。。确实如您所说,之前没有焊掉R109、R110。将这两个电阻焊掉后,再连接STK500,能顺利读取atmega328pb的id:


接着按照“ATmega328PB-Xplained-Mini-UG-DS50002660B.pdf”文档内容,将熔丝恢复成建议值:



接着撤掉stk500,焊上R109、R110(仔细检查R109、R110的焊接情况,非常牢靠。)。用一根USB线(USB线已测试无断点)将板子插入电脑。
用microchip studio新建一个atmega328pb工程,点击“start without debugging”,弹出对话框:

点击上图对话框的Yes,却出现错误:


点击microchip studio的Tools→Device Programming,操作过程如下图所示:


唉~为了复活这个板子,真是一波三折啊。。。已经按照“ATmega328PB-Xplained-Mini-UG-DS50002660B.pdf”文档内容将熔丝恢复成默认值了,为何还出现上图错误呢?


使用特权

评论回复
5
lcczg| | 2022-12-13 09:45 | 只看该作者
本帖最后由 lcczg 于 2022-12-13 10:25 编辑

你的熔丝位是SPIEN使能的。我怀疑SPI仍有问题。你在高压编程恢复后,用ISP读取下Device singnature.一步一步往前走。另外熔丝位里用的是EXTCLK,外部时钟是否存在?可以尝试内部时钟看看。
最大的担心是你在高压编程的过程中没有断开板上调试器,导致高压12V直接串到板上调试器,导致其损坏。。。(R110你先前没有取下,应该串过去过,示波器看看信号吧)
高压编程的过程中高压线上一定要断开其他外部电路!


使用特权

评论回复
6
wgtwgtwgt|  楼主 | 2022-12-13 23:37 | 只看该作者
lcczg 发表于 2022-12-13 09:45
你的熔丝位是SPIEN使能的。我怀疑SPI仍有问题。你在高压编程恢复后,用ISP读取下Device singnature.一步一 ...

感谢指点。
您说的很对,之前没有断开电阻,高压12V导致调试器损坏。
这个失误成本有点高。。。

使用特权

评论回复
7
lcczg| | 2022-12-14 10:53 | 只看该作者
wgtwgtwgt 发表于 2022-12-13 23:37
感谢指点。
您说的很对,之前没有断开电阻,高压12V导致调试器损坏。
这个失误成本有点高。。。 ...

芯片还能用。
可以使用外部编程器工具,手册2.3.3章节
https://ww1.microchip.com/downlo ... -UG-DS50002660B.pdf

2.3.3 Programming the Target Using an External Programmer
How to program the target ATmega328PB using the AVR® JTAGICE mkII, JTAGICE3, Atmel-ICE, or other
programmers.
1. Connect the External Programmer USB to the PC.
2. Connect the External Programmer to the ATmega328PB Xplained Mini board ISP connector.
3. Go to Atmel Studio: Click the Tools tab, select Device Programming, and select the External Programmer
connected as Tool with Device as ATmega328PB and Interface to ISP, click Apply.
4. Select “Memories”, locate the source .hex or .elf file, and click Program

使用特权

评论回复
8
wgtwgtwgt|  楼主 | 2022-12-15 09:46 | 只看该作者
本帖最后由 wgtwgtwgt 于 2022-12-15 09:54 编辑
lcczg 发表于 2022-12-14 10:53
芯片还能用。
可以使用外部编程器工具,手册2.3.3章节
(https://ww1.microchip.com/downloads/en/Device ...

感谢,按照您贴出的方法,用手头stk500的ISP模式,还能对atmega328pb烧录程序,测试正常。目前手头还有一块2019年8月参加活动的“ATmega4809 Curiosity Nano”小红板(https://bbs.21ic.com/icview-2874224-1-1.html),真怕测试时弄错熔丝又锁死了,特意到官网下载atmega4809的手册(https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/ATmega4808-09-DataSheet-DS40002173C.pdf),翻看该芯片关于高压并行编程方面的资料,但是它与atmega328pb不同,似乎并没有高压并行编程方面的介绍,由于atmega4809是新出的片子,对该芯片,恢复熔丝已经不需要高压编程了吗?为了寻找答案,在atmega4809文档中检索“fuse”关键词,没有发现高压并行编程(Parallel Programming)方面的信息,但是发现有下面三段描述:



从中提炼出信息:对于atmega4809,若失误错误设置熔丝位,但是只要LOCKBIT[7:0]里面装的是0xC5,那么总可以用UPDI来恢复熔丝;若失误操作LOCKBIT[7:0],将其装入非0xC5的其它值,会造成芯片锁死,解锁的唯一方法是用UPDI操作CHIPERASE,但代价是芯片存储的数据和程序被擦除。总之,用UPDI可以操作、恢复芯片,请问这样理解对吗?

使用特权

评论回复
9
lcczg| | 2022-12-27 10:03 | 只看该作者
wgtwgtwgt 发表于 2022-12-15 09:46
感谢,按照您贴出的方法,用手头stk500的ISP模式,还能对atmega328pb烧录程序,测试正常。目前手头还有一 ...

回复较晚,不好意思,上周阳了在休养。
ATMEGA4809的UPDI是单独的脚,所以永远不会被锁死。

你提到的LOCK功能是锁定芯片的一个功能。锁定后外部编程器就无法访问,实现保护内部代码的作用。

使用特权

评论回复
10
实际测量不符| | 2022-12-28 23:58 | 只看该作者
大佬之间的探讨,LOCK功能是锁定芯片的一个功能,这个锁是如何解除呢?

使用特权

评论回复
11
实际测量不符| | 2022-12-28 23:59 | 只看该作者
锁定后外部编程器就无法访问,实现保护内部代码的作用,保护是保护了,就是这个解锁真的有点太难了,感觉直接变板砖了。

使用特权

评论回复
12
tpgf| | 2023-1-1 12:41 | 只看该作者
熔丝位是单片机的重要一部分,用户可以通过设定和配置熔丝位,使单片机具备不同的特性,

使用特权

评论回复
13
aoyi| | 2023-1-1 12:54 | 只看该作者
在AVR内部有一系列用于器件配置和设置运行环境的熔丝位。

使用特权

评论回复
14
nawu| | 2023-1-1 13:03 | 只看该作者
如果不使用JTAG接口,应将JTAGEN的状态设置为“1”,即禁止J TAG;JTAG引脚用于I/O口

使用特权

评论回复
15
zljiu| | 2023-1-1 13:14 | 只看该作者
熔丝位是ATMEL公司AVR单片机比较独到的特征。

使用特权

评论回复
16
gwsan| | 2023-1-1 13:23 | 只看该作者
在每一种型号的AVR单片机内部都有一些特定含义的熔丝位,其特性表现为多次擦写的E²PROM。

使用特权

评论回复
17
tfqi| | 2023-1-1 13:30 | 只看该作者
用户通过配置(编程)这些熔丝位,可以固定地设置AVR的一些特性,参数以及I/O配置等

使用特权

评论回复
18
wgtwgtwgt|  楼主 | 2023-1-3 15:15 | 只看该作者
lcczg 发表于 2022-12-27 10:03
回复较晚,不好意思,上周阳了在休养。
ATMEGA4809的UPDI是单独的脚,所以永远不会被锁死。

感谢指导。

使用特权

评论回复
19
lcczg| | 2023-1-3 16:02 | 只看该作者
实际测量不符 发表于 2022-12-28 23:58
大佬之间的探讨,LOCK功能是锁定芯片的一个功能,这个锁是如何解除呢?

解锁通过擦除芯片的操作。这样代码就被擦除了,然后就可以再编程了。

使用特权

评论回复
20
caigang13| | 2023-1-3 21:15 | 只看该作者
锁熔丝后还能恢复?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

45

主题

191

帖子

3

粉丝