搜索

[技术问答] AC78xx的时钟问题

[复制链接]
265|6
 楼主 | 2020-3-9 14:08 | 显示全部楼层 | 奖励家园币|阅读模式
在使用官网IAP例程的时候,发现偶发会出现boot跳转app失败的情况(现象体现在跳转后无任何app打印,app代码未正常运行),多次测试发现可能是因为时钟切换的问题:

boot中使用的是内部HSI 8M作为时钟源经PLL产生96M系统时钟(下方注释掉的代码)。
  1. /**
  2. * SetSysClock
  3. *
  4. * @param[in]  none
  5. * [url=home.php?mod=space&uid=266161]@return[/url] none
  6. *
  7. * [url=home.php?mod=space&uid=247401]@brief[/url]  Use HSI mode, set the clock
  8. */
  9. static void SetSysClock(void)
  10. {
  11.     //SetHSIClock();
  12.     SetHSEClock();
  13. }
复制代码
而在app中,会再次初始化时钟,且此时使用的是外部HSE 8M晶振作为时钟源产生96M系统时钟。
结合以前在其他芯片上同样遇到过的问题,怀疑是因为在使用PLL电路的情况下切换了PLL的时钟源,会导致时钟初始化有概率性失败。
在把boot中的时钟初始化改为采用外部HSE时钟后,问题不再复现。

同时,也可以在app中,系统时钟初始化之前,先将系统时钟切换为使用内部8M时钟作为系统时钟源,再去初始化PLL,完毕后再切换为PLL输出作为系统时钟,也可以解决该问题。


这样的问题我以前在sta1078的一款芯片上同样遇到过,当时是boot和app中配置的时钟频率不一样,结果同样是时钟初始化失败,不知道各位有没有遇到过。

使用特权

评论回复
| 2020-3-16 17:05 | 显示全部楼层 | 奖励家园币
外部时钟更准。内部的PLL后误差较大。

使用特权

评论回复
 楼主 | 2020-3-17 13:40 | 显示全部楼层 | 奖励家园币
gaoyang9992006 发表于 2020-3-16 17:05
外部时钟更准。内部的PLL后误差较大。

内部8M时钟的误差应该在1.1%左右,有精度要求的情况下自然用外部,这个主要应该还是针对那些精度要求不高的场景。

使用特权

评论回复
| 2020-3-19 18:15 | 显示全部楼层 | 奖励家园币
说明有些时钟不能贸然切换,可以先关闭,或者在APP中考虑到这种情况,进行关闭操作,后再执行其他的初始化。

使用特权

评论回复
 楼主 | 2020-3-20 09:03 | 显示全部楼层 | 奖励家园币
598330983 发表于 2020-3-19 18:15
说明有些时钟不能贸然切换,可以先关闭,或者在APP中考虑到这种情况,进行关闭操作,后再执行其他的初始化 ...

对,所以程序最好还是统一时钟来的好

使用特权

评论回复
| 2020-3-24 13:16 | 显示全部楼层 | 奖励家园币
看来时钟对切换很有影响

使用特权

评论回复
 楼主 | 2020-3-24 15:20 | 显示全部楼层 | 奖励家园币
734774645 发表于 2020-3-24 13:16
看来时钟对切换很有影响

也算是一个经验吧,目前我遇到的大多数芯片都需要注意时钟在高速运行下的切换问题

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表