查看: 4640|回复: 2

RCHF漂移太大如何解决?

[复制链接]

6

主题

13

帖子

98

积分

中级工程师

Rank: 2

积分
98
发表于 2020-4-4 11:41:51 | 显示全部楼层 |阅读模式
前一段时间写好的UART程序,经过测试能够正常使用,隔离大概一个星期发现RTC数据能够正常发送至上位机,但是接收到的数据与发送的不一致。通过AHB64分频,PG6上测得的频率为133.7KHz,换算RCHF为8.557MHz与8M RCHF差距太大,请问这是什么原因造成的?
官方时钟初始化程序:

void Init_System(void)
{        
    /*基础系统配置*/
    __disable_irq();            //关闭全局中断使能
    IWDT_Init();                //系统看门狗设置
    IWDT_Clr();                  //清系统看门狗   
   
    Init_SysTick();                //cpu滴答定时器配置(软件延时用)   
    TicksDelayMs( 10, NULL );    //软件延时,系统上电后不要立刻将时钟切换为非RCHF8M,也不要立刻进休眠否则可能导致无法下载程序
   
    Init_SysClk_Gen();            //系统时钟配置
    RCC_Init_RCHF_Trim(clkmode);             //RCHF振荡器校准值载入(芯片复位后自动载入8M的校准值)
   
    /*外设初始化配置*/
    Init_Pad_Io();                //IO口输出寄存器初始状态配置
    Close_None_GPIO_80pin();    //关闭80脚芯片不支持的IO
    Close_AllIO_GPIO_80pin();   //关闭全部IO
   
    /*用户初始化代码*/
    Init_IO();
   
    /*准备进入主循环*/
    //TicksDelayMs( 0, NULL );            //软件延时
   
    //LED0_Flash(5);                //软件延时,闪灯五次
   
    __enable_irq();                //打开全局中断使能
}


PG6频率133.7kHz

PG6频率133.7kHz
回复

使用道具 举报

13

主题

41

帖子

867

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
867
发表于 2020-4-9 14:00:25 | 显示全部楼层
您好,可以加下我的QQ,1012327173
回复

使用道具 举报

151

主题

845

帖子

4405

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4405
发表于 2020-4-9 14:51:24 | 显示全部楼层
是不是主程中调用了RCHF 校准, 然后又没有焊32768晶振导致的. 这个校准函数不推荐一直调用. 如果32768停振或没焊会导致直接校偏.  RCHF 全温区+-2%误差. 已满足一般通信.
回复

使用道具 举报

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

本版积分规则

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