OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4244|回复: 0

雅特力AT32 ERTC的时钟源选择

[复制链接]

55

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2019-11-25
在线时间
28 小时
发表于 2021-8-24 20:55:11 | 显示全部楼层 |阅读模式
本帖最后由 tutu983618588 于 2022-2-21 19:54 编辑

AT32的ERTC时钟源可以选择LEXT、LICK、HEXT,3种时钟源各有适应的场景
LEXT:通常使用32.768Khz的晶振   
  优点:是该种时钟源精度最高,并且能在电池供电下、以及低功耗模式下工作
  缺点:需要一颗晶振,增加元件成本,增大PCB布线面积
HEXT: 主晶振
  优点:该种时钟源精度也比较高,节省一颗晶振,降低了PCB布线面积
  缺点:不能在电池供电下、以及低功耗下模式工作
LICK:典型值为40Khz,官方手册写了范围在30Khz~60KHz,
  优点:能在电池供电下、以及低功耗模式下工作,节省一颗晶振,降低了PCB布线面积
  缺点:时钟精度低,时间不是很准

AT32官方demo在以下路径
AT32F415_Firmware_Library_CN\project\at_start_f415\examples\ertc\calendar

以下程序是我在官方demo中截取的时钟切换部分

选择LICK为时钟
  /* enable the lick osc */
  crm_clock_source_enable(CRM_CLOCK_SOURCE_LICK, TRUE);

  /* wait till lick is ready */
  while(crm_flag_get(CRM_LICK_STABLE_FLAG) == RESET)
  {
  }

  /* select the ertc clock source */
  crm_ertc_clock_select(CRM_ERTC_CLOCK_LICK);

  /* ertc second(1hz) = ertc_clk(lick) / (ertc_clk_div_a + 1) * (ertc_clk_div_b + 1) */
  ertc_clk_div_b = 255;
  ertc_clk_div_a = 127;

选择LEXT为时钟
  /* enable the lext osc */
  crm_clock_source_enable(CRM_CLOCK_SOURCE_LEXT, TRUE);

  /* wait till lext is ready */
  while(crm_flag_get(CRM_LEXT_STABLE_FLAG) == RESET)
  {
  }

  /* select the ertc clock source */
  crm_ertc_clock_select(CRM_ERTC_CLOCK_LEXT);

  /* ertc second(1hz) = ertc_clk / (ertc_clk_div_a + 1) * (ertc_clk_div_b + 1) */
  ertc_clk_div_b = 255;
  ertc_clk_div_a = 127;

选择HEXT为时钟源,在官方的库中没有,但是比较简单
crm_ertc_clock_select(CRM_ERTC_CLOCK_HEXT_DIV);
意思就是选择HEXT/128为ERTC时钟,然后根据HSE频率配置分频值就行了,比如当HEXT为8MHz时,那么ERTC时钟为8MHz/128 = 62500hz,配置分频值为(ertc_clk_div_a + 1)*(ertc_clk_div_b + 1) = 62500就行了,比如
  ertc_clk_div_b = 499;
  ertc_clk_div_a = 124;
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-30 15:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表