打印
[牛人杂谈]

HIRC Trim 功能

[复制链接]
2189|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gejigeji521|  楼主 | 2017-4-16 09:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新唐有些芯片可以用外部32Ktrim内部HIRC。一般HIRC全温度范围误差2%左右,在有些场合这个精度不够,这时候就可以用外部32K来trim内部HIRC,trim之后HIRC精度可以达到0.25%左右。
Trim功能一旦使能就一直在工作,不会停止。如果外部32K晶振频率飘出范围(内部设定的范围比较大一般是20K ~ 47K左右),trim就会停止,并发生中断。所以需要在中断里面重新启动trim功能。
/*LXT 时钟出错或者尝试次数达到限制将发生中断*/ 
void HIRC_IRQHandler(void)
{          uint32_t u32IRCStatus;

        /*清除中断标志*/
        u32IRCStatus = SYS->IRCTRIMINT;          SYS->IRCTRIMINT = u32IRCStatus;  
        /*重新启动trim功能*/
SYS->IRCTRIMCTL = SYS_IRCTRIMCTL_LOOP_32CLK| SYS_IRCTRIMCTL_TRIM_12M; }
/*使能trim功能*/
void SYS_EnableAutoTrim()
{  
        /*取32个32K时钟周期的平均值来trim HIRC*/
        SYS->IRCTRIMCTL = SYS_IRCTRIMCTL_LOOP_32CLK| SYS_IRCTRIMCTL_TRIM_12M;
    /*一旦出错将发生中断*/
        SYS->IRCTRIMIEN = SYS_IRCTRIMIEN_32KERR_EN | SYS_IRCTRIMIEN_FAIL_EN;  
        NVIC_EnableIRQ(HIRC_IRQn);  
}


沙发
gejigeji521|  楼主 | 2017-4-16 09:32 | 只看该作者
只要调用SYS_EnableAutoTrim就可以使能Auto trim功能来trim HIRC了。如果32K晶振飘出范围,在中断处理函数HIRC_IRQHandler里面再次启动trim即可。

使用特权

评论回复
板凳
捉虫天师| | 2017-4-16 09:34 | 只看该作者
这都是赤裸裸的纯技能。

使用特权

评论回复
地板
yiy| | 2017-4-16 11:00 | 只看该作者
好多人不知道需要重新设置。

使用特权

评论回复
5
xixi2017| | 2017-4-16 21:23 | 只看该作者
系统自己可以进行32个平均。。

使用特权

评论回复
6
稳稳の幸福| | 2017-4-16 21:56 | 只看该作者
这一段有点小复杂,能图形化配置吗

使用特权

评论回复
7
huangcunxiake| | 2017-4-17 16:52 | 只看该作者
定时器看似简单,实际上用好很难。

使用特权

评论回复
8
huangcunxiake| | 2017-4-19 15:45 | 只看该作者
这个是内部的RC振荡器?

使用特权

评论回复
9
wahahaheihei| | 2017-4-19 23:39 | 只看该作者
时钟源的配置,外部晶振不可用辣**品。

使用特权

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

本版积分规则

163

主题

2132

帖子

8

粉丝