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

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

[复制链接]

该用户从未签到

550

主题

9311

回帖

1万

积分

管理员

积分
13872
发表于 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)
                   {
//频率自动校准完成
                   }
         }
}


回复 送花

使用道具 举报

该用户从未签到

550

主题

9311

回帖

1万

积分

管理员

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

使用道具 举报

该用户从未签到

550

主题

9311

回帖

1万

积分

管理员

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

使用道具 举报

  • TA的每日心情
    开心
    昨天 09:36
  • 签到天数: 159 天

    [LV.7]常住居民III

    67

    主题

    836

    回帖

    2784

    积分

    金牌会员

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

    使用道具 举报

  • TA的每日心情
    慵懒
    5 天前
  • 签到天数: 134 天

    [LV.7]常住居民III

    20

    主题

    1039

    回帖

    2459

    积分

    金牌会员

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

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 123 天

    [LV.7]常住居民III

    12

    主题

    315

    回帖

    878

    积分

    高级会员

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

    使用道具 举报

    该用户从未签到

    550

    主题

    9311

    回帖

    1万

    积分

    管理员

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

    使用道具 举报

  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 162 天

    [LV.7]常住居民III

    17

    主题

    280

    回帖

    410

    积分

    中级会员

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-5 07:12 , Processed in 0.068027 second(s), 57 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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