打印
[应用相关]

单片机AT32代码移植后芯片烧录一次后,无法再次烧录

[复制链接]
313|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wiba|  楼主 | 2023-8-15 15:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近工作中在移植AT32代码的时候遇到一个现象:

现象描述:
        使用官方开发板调试好代码后准备移植到项目用的同款芯片板子,第一次连接后keil能够识别到芯片,但是第二次准备烧录时,芯片怎么都识别不出来。以为是芯片问题,再次换过芯片后还是烧录一次后就识别不到芯片了。看过官网上的相关文档FAQ,仍然无法解决。

分析原因:
        因为是代码烧录一次后芯片就不能烧录了,所以大概率是芯片代码可能有问题。下面是几个常见的排查方向

        原因1:Jlink管脚重定义问题
        这个是代码移植时的常见问题,因为开发板与项目用到的板子芯片型号上有一些区别,但是经过检查后也没问题,一般硬件做板子时也会注意这个问题,都会绕开jlink管脚。所以首先排除这个问题。

        原因2:时钟配置问题
        开始怀疑时内部时钟没有配置对,导致内部时钟没有开启或者时钟不对,烧录器检测不到芯片。我是用雅特力官方的时钟配置工具配置的时钟初始化代码,但是通过BC代码对比工具对比之前的代码,感觉并没有什么问题,但总觉得是时钟的问题。

        原因3:外部时钟源速率选择问题
        在暂时排除掉上面几个原因后,经过同事的指点发现这个板子用的是24MHZ的晶振,而常见的外部晶振是8Hhz的,如果代码中配置的是8Mhz 的外部输入晶振,很容易就会导致内部超频,芯片不启动。因此最后的问题就是外部晶振速率选择错误。

解决方法:
        此时找到了原因,但是芯片因为时钟源选择错误还是不能识别到,因此需要更改boot引脚。更改boot引脚后,烧录符合外部时钟源的代码然后改回来,就能正常运行代码了
————————————————
版权声明:本文为CSDN博主「GivemeAK」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/GivemeAK/article/details/131936871

使用特权

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

本版积分规则

77

主题

3305

帖子

3

粉丝