STM32
直播中

刘辉

7年用户 1092经验值
私信 关注
[问答]

STM32F1的RTC上电不起振的原因?怎么解决?

量产的产品,之前就偶尔出现屏幕上电不亮,最近越来越多。连电脑发现是卡死在 等待RTC时钟:  /* Loop until RSF flag is set */ while ((RTC->CRL   RTC_FLAG_RSF) == (uint16_t)RESET)

我用示波器测,不亮的屏幕,确实有些是外部32768没波形。但有些也有,屏幕也不亮。

网上查,说是F1的RTC做的不太好,比较挑晶体。必须是6pf的。但看有网友说是换了6pf也会出问题,还有人说是低温下,问题更多。

偶然发现,不亮的屏幕,如果把电池扣掉,那每次都可以点亮了

刚好我的程序就是这样写的:所以我想问一下,之前大家碰到的RTC不起振,是不是也是只要每次都执行一次RTC_Configuration就好了?
我这个程序,就是如果上电碰到A5A5标志位,就直接走下边去了,没有再次初始化RTC,然后就卡死了。如果每次都初始化就好了,但时间也就复位了


回帖(1)

刘娟

2024-4-28 17:16:29
STM32F1的RTC上电不起振的原因可能有以下几点:

1. 外部32.768kHz晶振问题:晶振的品质、负载电容或频率不稳定可能导致RTC时钟不起振。确保使用的晶振符合规格要求,且负载电容为6pF。

2. 电源问题:RTC时钟需要稳定的电源供应。如果电源不稳定或电压不足,可能导致RTC时钟不起振。检查电源电路,确保为RTC提供稳定的电源。

3. 温度问题:低温环境下,晶振的频率可能会受到影响,导致RTC时钟不起振。确保产品在规定的工作温度范围内使用。

4. 软件问题:程序中可能存在对RTC初始化设置不当或时钟树配置错误的问题。检查程序中的RTC初始化代码,确保正确配置。

5. 硬件问题:STM32F1的RTC模块可能存在硬件缺陷。如果排除了以上原因,可以考虑更换STM32F1芯片。

针对您提到的问题,可以尝试以下解决方案:

1. 更换晶振:确保使用的晶振符合规格要求,负载电容为6pF。

2. 检查电源:确保为RTC提供稳定的电源,检查电源电路。

3. 调整工作温度:确保产品在规定的工作温度范围内使用。

4. 优化软件:检查并优化RTC初始化代码,确保正确配置。

5. 扣电池重启:如果扣电池后可以正常点亮屏幕,可以考虑在程序中添加一个延时,以确保RTC时钟稳定后再进行后续操作。

6. 更换STM32F1芯片:如果以上方法都无法解决问题,可以考虑更换STM32F1芯片。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分