tb 买的这些AVR 芯片很多大概是拆机的,到手后没反应,不能直接用USBASP 之类的SPI 编程器烧录程序。这种情况大概有四种可能的原因:

  1. 芯片没焊好或者电路错误;
  2. 熔丝位设置了由外部晶振提供时钟,而并没有连接合适的晶振;
  3. 熔丝位被锁了,不能使用SPI 接口烧录程序;
  4. 芯片就是坏的;

熔丝位设置引起的问题都可以用高压编程器重置熔丝来解决,把芯片恢复到出厂默认设置,就可以用普通编程器烧程序了;也可以用高压编程器确定芯片是不是彻底挂了。不过tb 上能买到的高压编程器至少得几十块钱一个,有点不值,毕竟只是用它重置个熔丝位而已;而且硬件设计上不太好用,我要检测的芯片都是贴片封装的,比如QFP-64 的ATmega128 和QFP-32 的ATmega328,能买到的高压编程器都只有DIP 封装的锁紧座。

好在找到了一个老外做的上古遗物,正好就是个利用高压编程协议恢复熔丝位的简单工具,不能烧录固件,相应的不需要配合上位机,把有问题的芯片连上去就能自动检测和修复熔丝位。原作者的网站据说是挂掉了,有个人把电路设计和固件之类的资料抢救出来上传到了:GitHub - SukkoPera/avr-fusebit-doctor: Repair dead ATmega and ATtiny microcontrollers

解锁工具

根据这个原理重画了个板子,立创开源:AVR 高压编程解锁工具

在这里插入图片描述

主控核心部分都集中在左边一块,主控芯片可以用ATmega8 / 88 / 168 / 328。我手头有闲置的DIP 封装ATmega8,所以就用这个当主控。用下面的 2x3p ICSP 接口给主控烧录固件,固件文件之类的去板子的链接下面找。

用上面的Type-C 接口给板子提供5V 供电,板载升压电路用来提供高压编程所需的+12V 电源。

板子右侧放了三个用来连接被测芯片的焊盘,支持DIP-28、QFP-64、QFP-32 封装,DIP-28 的位置可以放个锁紧座,贴片封装就只能用热风枪或加热台直接焊上,所以两个贴片焊盘放的和其他东西间隔比较远,应该不会误伤。QFP-64 焊盘主要是给ATmega128 用的,ATmega8 / 88 / 168 / 328 之类芯片一般都是QFP-32 或者DIP-28 封装。

每次只能连接一个被测芯片,上电或按下START 按钮后,工具会自动检测芯片型号,并重置熔丝位。默认把ERASE 开关拨到左侧,工具会在必要时擦除芯片,否则不会擦除。详细的参考板子的链接。

主控芯片下面是RGB 指示灯,蓝色亮起表示被测芯片上电,检测正在进行中;蓝色灯熄灭后,红色常亮表示无法读取芯片信息,十有八九是坏了,或者没焊对;绿色常亮表示芯片已经重置成功。

在这里插入图片描述

串口输出

左上角四个排针用来连接串口,工具运行中可以查看串口输出的信息;这个并不是必要的,也没什么特别需要关注的内容,如果主控芯片换成168 或者328,日志里会输出检测到的芯片型号,否则只会输出芯片签名。

串口波特率:4800,格式:8N1。

在这里插入图片描述

扩展

板子最左侧的20P 排针引出了所有高压编程信号,如果需要检测其他封装的芯片,可以从这里飞线,或者再弄个扩展板插在这里。关于高压编程的接线方法,参考芯片的手册。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐