dmzdmz666 发表于 2023-12-25 10:22:48

STC8H4K64TL的RTC和触摸同时开启32.768K晶振波形不对

STC8H4K64TL需要RTC和触摸同时开启,下图是同时开启RTC和触摸的 发现32.768K晶振输出的波形有个70Hz的尖峰脉冲,导致波形的频率不是32.768K,使得RTC走时不精确,实测600分钟慢了6分钟左右



下图是开启RTC、不开启触摸,此时波形就很正常,晶振输出的频率就很准 32.768K



不知道为什么会这样,起振电容为12PF(10-20PF都试了)触摸的参考电容为47PF
下面是我触摸的初始化程序

void TSU_Init()
{
    P_SW2 |= 0x80;          //允许访问XSF
    TSRT = 0x00;            //没有LED分时扫描
    TSCHEN1 = 0x00;         //使能TK07~TK00
    TSCHEN2 = 0xF0;         //使能TK15~TK08
    TSCFG1= (7<<4) + 7;   //开关电容工作频率 = fosc/(2*(TSCFG1+1)), 放电时间(系统时钟周期数) 0(125) 1(250) 2(500) 3(1000) 4(2000) 5(2500) 6(5000) 7(7500) 最小3
    TSCFG2= 7;            //配置触摸按键控制器的内部参考电压(AVCC的分压比), 0(1/4)1(1/2)2(5/8)3(3/4)
    TSCTRL= 0x90;
    IE2 |= 0x80;            //使能触摸中断
}

下面是我RTC的初始化和设置程序


void RTC_Init()//RTC初始化函数
{
    P_SW2 |= 0x80;//SFR enable   
    P1M0=0x00;
    P1M1=0x00+1<<7+1<<6;//P1.6 P1.7设置为高阻输入
    P1IE = ~0xC0;//P1.6 P1.7关闭数字输入功能
    X32KCR = 0x80 + 0x40;//启动外部32K晶振, 低增益+0x00, 高增益+0x40.
    while(!(X32KCR&0x01));//等待外部晶振稳定
    RTCIEN= 0x08|0x04; //中断使能, 0x80:闹钟中断, 0x40:日中断, 0x20:小时中断, 0x10:分钟中断, 0x08:秒中断, 0x04:1/2秒中断, 0x02:1/8秒中断, 0x01:1/32秒中断
    RTCIF   = 0x00;    //中断标志, 0x80:闹钟中断, 0x40:日中
}


void RTC_Set(int year,char month,char day,char hour,char minute,char second)//设置RTC时间函数
{
    RTCCR = 0x01;//使能RTC, 并开始RTC计数
    if(year>2099)   year=2099;
    if(month==0)    month=1;
    if(month>12)    month=12;
    if(day==0)      day=1;
    if(day>31)      day=31;
    if(hour>23)   hour=23;
    if(minute>59)   minute=59;
    if(second>59)   second=59;
    INIYEAR= year-2000;
    INIMONTH = month;
    INIDAY   = day;
    INIHOUR= hour;
    INIMIN   = minute;
    INISEC   = second;
    INISSEC= 0;
    RTCCFG = 0x01 | 0x00;//设置RTC时间, |0x00:选择外部32K时钟, |0x02:选择内部32K时钟.
    while(RTCCFG & 0x01);//等待初始化完成. 设置RTC时间需要32768Hz的1个周期时间,大约30.5us. 由于同步, 所以实际等待时间是0~30.5us.
                        //如果不等待设置完成就睡眠, 则RTC会由于设置没完成, 停止计数, 唤醒后才继续完成设置并继续计数.
}



如果各位大佬有遇到类似的情况,欢迎指导 谢谢!!!!



yanglin 发表于 2025-2-19 13:11:19

楼主,你这个触摸按键用的是哪一个中断口?是13还是35?我这个触摸按键还用不了,我用的是stc 1k08t这颗芯片,不知道怎么回事,你教教我呗
页: [1]
查看完整版本: STC8H4K64TL的RTC和触摸同时开启32.768K晶振波形不对