找回密码
 立即注册
查看: 1970|回复: 7

自动校准内部高速IRC时钟,利用外部 32768 RTC 晶振时钟,STC8H数据手册 内容

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-9-27 11:53:29 | 显示全部楼层 |阅读模式

自动校准内部高速IRC时钟,利用外部 32768 RTC 晶振时钟
===STC8H数据手册 内容

7      自动频率校准,自动追频(CRE
  
产品线
  
CRE
STC8H1K08系列

STC8H1K28系列

STC8H3K64S4系列
STC8H3K64S2系列
STC8H8K64U系列
STC8H4K64TL系列
STC8H4K64TLCD系列A系列
STC8H4K64TLCD系列A+系列
STC8H1K08T系列
STC8H2K08U系列

STC8H部分单片机系列内建一个频率自动校准模块(CRE),CRE模块是使用外部的32.768KHz晶振对内部高速IRC(HIRC)的IRTRIM寄存器进行自动调整,以达到自动频率校准的功能。需要使用自动校准时,只需要根据给定的公式设置好目标频率的计数值和误差范围,然启动CRE模块,硬件便会进行自动频率校准,当HIRC的频率达到用户所设置误差范围内时,校准完成标志会被置位。

7.1                  相关寄存器
  
符号
  
描述
地址
位地址与符号
复位值
B7
B6
B5
B4
B3
B2
B1
B0
CRECR
CRE控制寄存器
FDA8H
ENCRE
MONO
UPT[1:0]
CREHF
CREINC
CREDEC
CRERDY
0000,0000
CRECNTH
CRE校准目标寄存器
FDA9H
CNT[15:8]
0000,0000
CRECNTL
CRE校准目标寄存器
FDAAH
CNT[7:0]
0000,0000
CRERES
CRE分辨率控制寄存器
FDABH
RES[7:0]
0000,0000

7.1.1                     CRE控制寄存器(CRECR
  
符号
  
地址
B7
B6
B5
B4
B3
B2
B1
B0
CRECR
FDA8H
ENCRE
MONO
UPT[1:0]
CREHF
CREINC
CREDEC
CRERDY
ENCRECRE模块控制位
0:关闭CRE模块。
1:使能CRE模块。
MONO:自动校准步幅控制
0:单步模式。每个校准周期,硬件自动将IRTRIM递增或递减1。
1:双步模式。每个校准周期,硬件自动将IRTRIM递增或递减2。
单步模式比双步模式校准后的IRC精度更高,但自动校准的时间比双步模式长。
UPT[1:0]:CRE校准周期选择
  
UPT[1:0]
  
校准周期
00
1ms
01
4ms
10
32ms
11
64ms
CREHF:高频模式选择
0:低频模式(目标频率小于或等于50MHz)。
1:高频模式(目标频率大于50MHz)。
CREINCCRE校准正处于上调状态。只读位。
CREDECCRE校准正处于下调状态。只读位。
CRERDYCRE校准完成状态。只读位。
0:CRE校准功能未启动或者未校准完成。
1:CRE校准已完成。

7.1.2                     CRE校准计数值寄存器(CRECNT
  
符号
  
地址
B7
B6
B5
B4
B3
B2
B1
B0
CRECNTH
FDA9H
CRECNT[15:8]
CRECNTL
FDAAH
CRECNT[7:0]
CRECNT[15:0]16位校准计数值。
目标校准值计算公式:
低频模式(CREHF=0):CRECNT = (16 * 目标频率(Hz)) / 32768
高频模式(CREHF=1):CRECNT = (8 * 目标频率(Hz)) / 32768
(详细设置见范例程序)

7.1.3                     CRE校准误差值寄存器(CRERES
  
符号
  
地址
B7
B6
B5
B4
B3
B2
B1
B0
CRERES
FDABH
CRERES[7:0]
CRERES[7:0]8位校准误差值(解析度控制)。
由于内部高速IRC的解析度远低于外部的32.768K晶振,最终的校准值无法与CRECNT所设置的目标值完全一致,所以必须通过CRERES寄存器设定一个误差范围。
校准误差计算公式:
CRERES = 误差范围(%) * 目标校准值
(误差范围一般控制在1%~0.3%即可,不建议超出此范围)
(详细设置见范例程序)



7.2                  范例程序1.2.1                     自动校准内部高速IRCHIRC
例如:校准的目标频率为22.1184MHz,校准误差范围为±0.5%
则需要将CREHF设置为0,CRECNT设置为(16*22118400)/32768=10800(2A30H),
即将CRECNTH设置为2AH,CRECNTL设置为30H,CRERES设置为10800 * 0.5%=54(36H)


//测试工作频率为11.0592MHz
#include "stc8h.h"//头文件见下载软件
#define       CNT22M             (16 * 22118400L) / 32768)                     //校准目标频率为22.1184M
#define       RES22M             (CNT22M *5 / 1000)                              //设置校准误差为0.5%
void main()
{
         P_SW2 |= 0x80;//使能访问XFR
         P0M0 = 0x00;
         P0M1 = 0x00;
         P1M0 = 0x00;
         P1M1 = 0x00;
         P2M0 = 0x00;
         P2M1 = 0x00;
         P3M0 = 0x00;
         P3M1 = 0x00;
         P4M0 = 0x00;
         P4M1 = 0x00;
         P5M0 = 0x00;
         P5M1 = 0x00;
X32KCR = 0xc0;                                                                           //启动外部32K晶振
while (!(X32KCR & 1));                                                               //等待时钟稳定
         IRCBAND &= ~0x03;
         IRCBAND |= 0x02;                                                                      //选择27M频段
         CLKSEL = 0x00;                                                                          //选择内部高速HIRC为系统时钟
         CRECNTH = CNT22M >>8;                                                      //设置目标校准值
         CRECNTL = CNT22M;
         CRERES = RES22M;                                                                  //设置校准误差
         CRECR = 0x90;                                                                            //使能CRE功能,并设置校准周期为4ms
         while (1)
         {
                   if (CRECR& 0x01)
                   {
//频率自动校准完成
                   }
         }
}


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-9-27 12:54:47 | 显示全部楼层
先占个高层楼层,好补充内容
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-9-27 12:54:59 | 显示全部楼层
先占个高层楼层,好补充内容
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

积分
5204
发表于 2023-12-20 14:21:12 | 显示全部楼层
STC8H1K17T也具有这个功能吧?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2023-12-20 14:47:45 | 显示全部楼层
话说有个问题,,STC8H的RTC为什么不设计成用主时钟分频后也能给RTC提供时钟,感觉内部高精度IRC时钟已经非常准了,而且还有需要把1.6 1.7用作普通IO。如果用内部那个32k的又太不准了,所以如果能主时钟分频给RTC那就太好了。
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:403
  • 最近打卡:2025-04-29 08:28:43

12

主题

319

回帖

2017

积分

金牌会员

积分
2017
发表于 2023-12-20 15:50:00 | 显示全部楼层
用外部晶振给RTC提供时钟能做准吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-12-20 16:00:29 | 显示全部楼层
RTC 只能用外部 32768-晶振,这时可以用外部高精准时钟,无成本动态校准内部高速IRC时钟
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:522
  • 最近打卡:2025-05-01 06:03:55
已绑定手机

34

主题

459

回帖

2215

积分

金牌会员

积分
2215
发表于 2024-4-3 14:42:29 | 显示全部楼层
外部 32768-晶振精度高
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:13 , Processed in 0.133395 second(s), 91 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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