ATmega328P Xplained Mini 之 mEDBG 完全修复

作者: shaoziyang
上传时间为: 2015-01-18 11:01 PM
2015-01-18
阅读:

前面写过一篇《ATmega328P Xplained Mini的mEDBG故障分析和修复 》,但是还有一个小问题一直无法修复,就是设备名称也被修改(变为ATmeÿa328P),这样AS6就无法正常识别出开发板,不能进行仿真,只能使用下载功能了。

在网上搜索,以及在avrfreaks论坛上求助,最后知道问题是出在EEPROM的数据被破坏,网友还提供了正确的EEPROM文件。可是ATmega328P Xplained Mini开发板的固件更新不包括EEPROM,而Flip软件也不能更新开发板上ATmega32U4芯片的EEPROM,提示被保护了。

0.jpg


用户手册中,也说到可以用JTAGICE mkII、JTAGICE3等编程器通过JTAG口更新。不过用了这么多年AVR,一直使用ISP编程器(包括自制的USB STK500编程器),还从来没有用过AVR的JTAG编程器,因为ATMEL的开发工具一直比较贵。唯一支持AVR JTAG的avr dragon也坏了N年。

看了一下ATmega32U4的资料,发现它是支持ISP的。仔细研究了一下开发板的原理图,发现虽然没有专门给ATmega32U4留出ISP接口,但是它是通过330欧电阻连接到ATmega328P的ISP上的,因为它是通过ISP给ATmega328P编程的。

a0.jpg

那么我们就可以通过ISP对ATmega32U4编程。首先我们需要将ATmega328P的程序擦除,防止对SPI总线产生干扰。这一步可以用板载的mEDBG完成,也可以用外部编程器实现。

然后将ATmega328P Xplained mini的ISP和STK500连上,这里用的是自制的USB STK500编程器。注意RESET不要接,因为我们需要修改的是ATmega32U4,所以要连接到ATmega32U4的RESET上。因此这里就需要用杜邦线连接,而不能用排线了。如下图:


a1.jpg

a2.jpg

a3.jpg

a4.jpg

这里有个坑是不要将VCC连接到开发板最下面一排标着VCC的引脚上了,那其实是空脚。

最后将STK500的第5脚RESET,小心的用一个排针点到ATmega32U4的JTAG插座的第6脚。

a5.jpg


然后选择STK500编程器,进入编程模式。下面用的是AS4软件,用AS6也是可以的,步骤一样。

进入后先选择芯片和编程模式。

1.jpg

然后修改熔丝位,将BOD设置为2.4V(默认是禁止BOD),防止电压不稳时EEPROM被破坏,其他的不要改。

2.jpg


再将EEPROM数据文件写入芯片。

3.jpg


成功完成上面操作后,再将开发板插上USB,AS6又可以正常识别出开发板了,所有功能都正常了。

最后看看EEPROM数据的内容,可以清楚看到前面的序列号,以及中间的“ATmega328P”这个字符串。忘记先将错误的EEPROM数据读出来比较一下了。

4.jpg


这个EEPROM的数据文件是国外网友Sailor提供的。

EEPROM_32U4_00_mega328P_rev4.zip (573 Bytes) 

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示