华大110时钟校准

//代码分析
//首先进行了系统时钟的一个初始化
//1初始化内容
    //设置初始TRIM值,本样例采用从小到大的方式来TRIM,故此处设置为'1',后续不断更新该值后进行TRIM,直到符合条件(校准)为止
    M0P_SYSCTRL->RCL_CR_f.TRIM = 1;
    ///< 使能待校准时钟,本样例对RCL 32768Hz进行校准
    Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE);//
    
    ///< 使能被监测时钟,本样例使用XTL
    ///< XTL 配置及使能
    Sysctrl_XTLDriverCfg(SysctrlXtlAmp3, SysctrlXtalDriver3);
    Sysctrl_SetXTLStableTime(SysctrlXtlStableCycle16384);
    Sysctrl_ClkSourceEnable(SysctrlClkXTL, TRUE); 
//初始化要点:1.设置了RCL_CR.TRIM的值为1。
//2打开RCL 32768
//3.TRIM的初始化
    //打开TRIM外设时钟
    Sysctrl_SetPeripheralGate(SysctrlPeripheralTrim, TRUE);//打开外设时钟? ///< 时钟校准
     
    //TRIM校准流程
    stcCfg.enMON     = TrimMonDisable;			//
    stcCfg.enREFCLK  = TrimRefMskXTL;
    stcCfg.enCALCLK  = TrimCalMskRCL;
    stcCfg.u32RefCon = 328u;        //10ms校准时间(增加该时间可提高TRIM精度)//根据参考时钟来的
    stcCfg.u32CalCon = 0xFFFFFFFFu;                 //配置为默认值//这个可以先不用管。
    Trim_Init(&stcCfg);
    
    ///< 打开TRIM中断使能//打开中断
    Trim_EnableIrq();
    ///< 使能并配置TRIM 系统中断
    EnableNvic(CLKTRIM_IRQn, IrqLevel3, TRUE);//中断中断号。
//4.  Trim_Run();跑这个程序。
//主要是进入中断之后做什么事情。
    volatile uint32_t u32CalCnt;
    
    if(Trim_GetIntFlag(TrimStop))
    {
        u32CalCnt = Trim_CalCntGet();//获取的时间。
        ///<参考计数值计数完成(10ms)时,查看待校准计数值是否也为(10ms)计数值,或是否在允许误差范围内,此处为32768/100 = 328(±0.3%)
        ///<可根据实际修改该比较范围,提高TRIM校准精度。
        if ((u32CalCnt <= (328u + 1u)) &&
            (u32CalCnt >= (328u - 1u)))
        {
            Trim_Stop();
            ///< 校准结束,此时的TRIM值即为最佳频率值
            u8TrimTestFlag = 0xFFu;
        }
        else
        {
            Trim_Stop();
            ///< 为达到目标精度,TRIM值增加1,继续校准
            M0P_SYSCTRL->RCL_CR_f.TRIM += 1;       
            Trim_Run();           
        }
        
    }
    
    if(Trim_GetIntFlag(TrimCalCntOf))  //参考校准时间设置过长,导致待校准计数器溢出,此时需要重新配置参考校准时间及校准精度
    {
        u8TrimTestFlag = 0;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值