时钟HRC、LRC的校正

时钟校准

  • HRC校准原理
  • LRC校准原理
  • 校准系数
  • 自加载flash
  • 测试步骤
  • 相关代码

HRC校准原理

寻找最合适的HRC温度特性调节HRC_TC、HRC输出频率调节控制位HRC_ADJ,使得HRC的实际频率和期望频率差别最小。
在这里插入图片描述

LRC校准原理

寻找最合适的LRC输出频率调节控制位LRC_ADJ使误差最小,LRC和HRC校准方式大同小异,接下来以HRC校准说明。LRC期望频率为32768Hz,实测达不到,也需要校正。
在这里插入图片描述

校准系数

HRC_TC:不同温度下,TC值对应的不同的温度特性,选取最好的TC值后就会固定,所以暂时使用spec中推荐的默认值
HRC_ADJ:遍历0~127
获取实际频率的方式1:
将HRC作为CLKOUT的源,CLKOUT连到示波器,示波器的API直接得到HRC的频率值。缺点:通过示波器的方式获取频率只能精确到Khz,误差较大(不使用该方式)
获取实际频率的方式2:
芯片出厂OSC和PLL时钟是准确的,可以用准确的时钟源作为基准统计出准确的1s内待校准的时钟的实际时间。具体做法为:
选择PLL/OSC作为RTC的时钟源,使能RTC秒中断;选择HRC/LRC作为TMR4/5(支持异步时钟源)的源;秒中断的时间内即统计1s内TMRCNT的计数计算出频率;频率精确度较高。

自加载flash

设置HRC_ADJ可以直接写寄存器和先写到flash中,然后复位便得flash的值重新加载到寄存器字段中。

测试步骤

1.上电运行到main函数
2.配置RTC时钟为OSC(可不配置,默认就是OSC)
3.test_step.tmr_config()
配置TMR的时钟为系统时钟HRC9.8M,TMR4预分频为0,模式为周期定时模式
4.test_step.calibration_hrc_adj() ,包括以下4个小步骤:
4.1 self.dal.get_modul(‘CMU’).set_clk_adj_config()
通过写寄存器的方式设置HRC_ADJ的值
4.2 self.dal.get_module(‘TMR’).tmrcnt_run_between_rtc_sec()
TMRCNT清零,使能TMR的CNTEN,使能RTC的秒中断,记录下此时的TMRCNT1,循环等待秒中断标志为1时再次记录TMRCNT2值,关闭CNTEN和秒中断。
4.3 self.dal.get_module(‘TMR’).timer_history_event()
上位机获取TMRCMT的值列表,计算实际HRC频率:f=1 / (TMRCNT2-TMRCNT1),计算实际和期望频率的误差
4.4.遍历步骤4.1~4.3,找到误差最小的HRC_ADJ,自加载在flash中。

相关代码

校准逻辑的实现:

clk_adj_info timer_clk_adj_info()
{//1.关闭写保护uint32_t writeProtect = RegisterwriteProtect[HT_CHU->WPREG & 0x01];HT_CHU->WPREG = CMU_WPREG_UnProtected;//2.开启TIMERO的模块时钟HT_CHU->CLKCTRL1 |= 0x1;//3.清除TIMER的计数值和中断标志HT_TMR0->TMRCNT = 0;HT_TMR0->TMRIF = 0x00;overtime = 0;tmr_index = 0;//4.使能TIMER周期中断tmr->TMRIE = 0x01;//5.使能TIMER的计数器使能,并配置周期值,模式选择周期定时功能HT_TMR0->TMRCON |= 0x07;if(params.period != 0xFFFFFFF)HT_TMR0->TMRPRD = params.period //6.开启中断NVIC_EnableIRQ NVIC_EnableIRQ(TIMER_0_IRQn);//7.清除RTC的校准请原有计数,并且清除RTC的秒中断标志HT_RTC->RICIF = 0;while(HT_RIC->RICIF == 0x00);HT_RIC->RICIF = 0;clk_adi_info.array size = 0;//8.1s记录一次TIMER的计数值for(int i = 0; i < 5; i ++){while(1){if(HT_RTC->RTCIF == 0x01{HI_RIC->RICIF = 0x00;c1k_adj_info.freq_array[c1k_adj_info.array_size] = HT_TMRO->TMRCNT + 65536*overtime;clk_adi_info.array_size ++;break}}}//9.关闭TIMER的使能HT TMRO->THRCON &= ~0x01;//10.开启写保护HT CMU->WPREG = 0x4554 + 1;return clk_adj_info;	
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/641502.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌广告B2C实战特训营,500+谷歌账户经验,实战演示从0-1搭建广告账户

结合数据优化搜索、购物(PMax)、再营销、展示、视频广告类型&#xff0c;提升ROI稳定增长 课程背景&#xff1a; 不同的电商产品(如大件家具、假发、服饰等)适合的广告类型、组合策略、预算配置大不相同。 为了让大家最快掌握不同产品的投放策略找到最适合自己的打法&#x…

vuex和pinia转态管理工具介绍

一、介绍 相同点&#xff1a; 都是Vue.js的状态管理工具 不同点&#xff1a; 区别PiniaVuex支持Vue2和Vue3都支持Vue3写法需要额外配置Mutation只有 state, getter 和 action&#xff0c;无Mutationaction异步、Mutation 同步actionaction支持同步和异步action异步、Mutatio…

nvm管理多个node版本,快速来回切换node版本

前言 文章基于 windows环境 使用nvm安装多版本nodejs。 最近公司有的项目比较老需要降低node版本才能运行&#xff0c;由于来回进行卸载不同版本的node比较麻烦&#xff1b;所以需要使用node工程多版本管理&#xff0c;后面自己就简单捯饬了一下nvm来管理node&#xff0c;顺便…

淘宝京东比价接口推荐(商品api接口)

主流电商商品API接口 数据时代&#xff0c;做好数据分析的重要性不言而喻。电商行业也同样如此&#xff0c;做好商品数据的整合分析&#xff0c;对于电商企业来说&#xff0c;有以下几个好处&#xff1a; 更好地了解产品表现。通过商品数据分析&#xff0c;品牌方可以了解到商…

前端css中的transform(转换)的使用

前端css中的transform的使用 一、前言二、流程图三、举例&#xff08;一&#xff09;、平移1.平移&#xff0c;源码12.源码1运行效果(1).视频效果(2).截图效果 3.平移3d效果&#xff0c;源码24.源码2运行效果&#xff08;1&#xff09;、视频效果&#xff08;2&#xff09;、截…

甘特图:如何制定一个有效的产品运营规划?

做好一个产品的运营规划是一个复杂且系统的过程&#xff0c;涉及多个方面和阶段。以下是一些关键步骤和考虑因素&#xff0c;帮助你制定一个有效的产品运营规划&#xff1a; 1、明确产品定位和目标用户&#xff1a; 确定产品的核心功能、特点和优势&#xff0c;明确产品在市…

Android Studio实现内容丰富的安卓校园超市

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目代号168 1.开发环境 后端用springboot框架&#xff0c;安卓的用android studio开发 android stuido3.6 jdk1.8 idea mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册…

jdbc操作数据库 and 一个商品管理页面

文章目录 1. 介绍1.1 应用知识介绍1.2 项目介绍 2. 文件目录2.1 目录2.2 介绍以下&#xff08;从上到下&#xff09; 3. 相关代码3.1 DBConnection.java3.2 MysqlUtil.java3.3 AddServlet.java3.4 CommodityServlet.java3.5 DelectServlet.java3.6 SelectByIdServlet.java3.7 S…

iStat Menus for Mac:强大的系统监控工具

iStat Menus for Mac是一款功能强大的系统监控工具&#xff0c;专为Mac用户设计&#xff0c;旨在帮助用户全面了解电脑的运行状态&#xff0c;提高电脑的性能和稳定性。 iStat Menus for Mac v6.73 (1239)中文版下载 该软件可以实时监测CPU使用率、内存占用、网络速度、硬盘活动…

Python网络爬虫之数美滑块的加密及轨迹分析

目录 一、引言 二、数美滑块验证概述 三、数美滑块加密机制分析 1、参数混淆与加密 2、JS代码动态执行 四、轨迹分析 1、轨迹数据获取 2、轨迹特征提取 五、动态JS参数分析 1、网络请求分析 2、JS代码调试与追踪 六、Python实现案例分析 1. 环境搭建与依赖安装 2…

模块三——二分:34.在排序数组中查找元素的第一个和最后一个位置

文章目录 前言题目描述算法原理细节问题 代码实现 前言 相信通过本模块的第一篇博客&#xff0c;大家已经能够对二分有一个清晰的认知了&#xff0c;最好画画图来加深理解&#xff0c;以下是一些新的注意事项&#xff1a; 请⼤家⼀定不要觉得背下模板就能解决所有⼆分问题。⼆…

TaskWeaver使用记录

TaskWeaver使用记录 1. 基本介绍2. 总体结构与流程3. 概念细节3.1 Project3.2 Session3.3 Memory3.4 Conversation3.5 Round3.6 Post3.7 Attachment3.8 Plugin3.9 Executor 4. 代码特点5. 使用过程5.1 api调用5.2 本地模型使用5.3 添加插件 6. 存在的问题与使用体验6.1 判别模型…