打印
[技术问答]

AC78xx的时钟问题

[复制链接]
1352|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
JasonLee27|  楼主 | 2020-3-9 14:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用官网IAP例程的时候,发现偶发会出现boot跳转app失败的情况(现象体现在跳转后无任何app打印,app代码未正常运行),多次测试发现可能是因为时钟切换的问题:

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

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


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

使用特权

评论回复

相关帖子

沙发
gaoyang9992006| | 2020-3-16 17:05 | 只看该作者
外部时钟更准。内部的PLL后误差较大。

使用特权

评论回复
板凳
JasonLee27|  楼主 | 2020-3-17 13:40 | 只看该作者
gaoyang9992006 发表于 2020-3-16 17:05
外部时钟更准。内部的PLL后误差较大。

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

使用特权

评论回复
地板
598330983| | 2020-3-19 18:15 | 只看该作者
说明有些时钟不能贸然切换,可以先关闭,或者在APP中考虑到这种情况,进行关闭操作,后再执行其他的初始化。

使用特权

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

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

使用特权

评论回复
6
734774645| | 2020-3-24 13:16 | 只看该作者
看来时钟对切换很有影响

使用特权

评论回复
7
JasonLee27|  楼主 | 2020-3-24 15:20 | 只看该作者
734774645 发表于 2020-3-24 13:16
看来时钟对切换很有影响

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

使用特权

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

本版积分规则

66

主题

415

帖子

11

粉丝