|
在本次问题的设计中,使用到了RTC模块作为计时使用。外部使用了纽扣电池进行供电,时钟源使用了如下图所示的外部晶振电路。
生产中的板子有概率板子出现无发进行初始化时间配置问题。如下图可见,首次初始化会使用BACP UP RAM中的寄存器记录初始化标志位,即避免每次上下电反复初始化带来的计时误差。经过排查进仿真状态可见,RTC时间寄存器时间值不再变化刷新,RTC_ICSR寄存器中的RSF位未能置位。由于有纽扣电池供电,上下电板子也无法恢复。 通过将纽扣电池抠出,再安装后上电后,RTC模块再次初始化后可正常工作。
问题: 1、什么情况下会导致上述情况? 2、需要如何进行该工况的识别?是否可通过对特定寄存器数据的识别判定进入异常状态,进行再次初始化动作进行恢复? |
STM32H523CEU6的Pin41和Pin42能否作为USART6使用?
stm32mp157 通过codesys 运行PLC程序
STM32H5 I3C CCC通信广播地址 SCL 波形脉宽问题
stm32H503CBT6 ADC在某次上电后波动变大了一些。
STM32H503RB I3C通信中,IBI payload data,主机最多能接收几个字节?如果超过4 bytes,主机该如何接收?
STM32H503RB I3C通信中,主机如何通过SETAASA CCC方式使从机进入i3c模式?
硬件加速PKA模块支不支持输入国密SM2签名算法的参数?
STM32H563ZI OTA源码
STM32H533的IIC的问题
我想使用 STM32H5系列 进行 硬件I3C 读取
微信公众号
手机版
The LSE oscillator may not start or may stop in low drive mode (LSEDRV = 00). Using this mode is forbidden.
ES0565 STM32H562xx/563xx/573xx device errata (version 6.0, size 2 MB)
1。检查一下LSE的驱动能力
2.看一下备份域是不是乱了,用这个代码恢复下
__HAL_RCC_PWR_CLK_ENABLE();
HAL_PWR_EnableBkUpAccess();
__HAL_RCC_BACKUPRESET_FORCE();
__HAL_RCC_BACKUPRESET_RELEASE();
如果晶振启动困难(偶尔震荡不起来)可能会引起这种现象。
如果有条件的话,采用LSI 作为RTC的时钟源试试看。
电池应该是新的,不大可能是低电压引起的。当然电池夹子应该是可靠的。
发生问题时VDD已经没电了,所以软件应该是无能为力了。
[md]那我的理解就是在初始化的时候再添加一个队LSEDRV的判断,如果BACKUP RAM区的标志位是OK的,但是LSEDRV == 0 ,那么也可以判定为RTC此时需要在进行一次初始化和LSE使能配置
LSEDRV 是个配置位,由软件在开启LSE前配置驱动能力的,es 手册建议不要设置成00
所以这个位不是检查,而是启动前需要修改一下的。