查看: 2082|回复: 0

ATmega328P Xplained Mini 之 mEDBG 完全修复

[复制链接]
  • TA的每日心情
    奋斗
    2019-12-1 10:07
  • 签到天数: 1617 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2015-1-18 23:01:16 | 显示全部楼层 |阅读模式
    分享到:
    前面写过一篇《ATmega328P Xplained Mini的mEDBG故障分析和修复 》,但是还有一个小问题一直无法修复,就是设备名称也被修改(变为ATmeÿa328P),这样AS6就无法正常识别出开发板,不能进行仿真,只能使用下载功能了。
    在网上搜索,以及在avrfreaks论坛上求助,最后知道问题是出在EEPROM的数据被破坏,网友还提供了正确的EEPROM文件。可是ATmega328P Xplained Mini开发板的固件更新不包括EEPROM,而Flip软件也不能更新开发板上ATmega32U4芯片的EEPROM,提示被保护了。


    用户手册中,也说到可以用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编程的。

    那么我们就可以通过ISP对ATmega32U4编程。首先我们需要将ATmega328P的程序擦除,防止对SPI总线产生干扰。这一步可以用板载的mEDBG完成,也可以用外部编程器实现。
    然后将ATmega328P Xplained mini的ISP和STK500连上,这里用的是自制的USB STK500编程器。注意RESET不要接,因为我们需要修改的是ATmega32U4,所以要连接到ATmega32U4的RESET上。因此这里就需要用杜邦线连接,而不能用排线了。如下图:





    这里有个坑是不要将VCC连接到开发板最下面一排标着VCC的引脚上了,那其实是空脚。
    最后将STK500的第5脚RESET,小心的用一个排针点到ATmega32U4的JTAG插座的第6脚。


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

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


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


    成功完成上面操作后,再将开发板插上USB,AS6又可以正常识别出开发板了,所有功能都正常了。
    最后看看EEPROM数据的内容,可以清楚看到前面的序列号,以及中间的“ATmega328P”这个字符串。忘记先将错误的EEPROM数据读出来比较一下了。


    这个EEPROM的数据文件是国外网友Sailor提供的。
    EEPROM_32U4_00_mega328P_rev4.zip (573 Bytes)
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 02:34 , Processed in 0.121752 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.