|
在本次问题的设计中,使用到了RTC模块作为计时使用。外部使用了纽扣电池进行供电,时钟源使用了如下图所示的外部晶振电路。
生产中的板子有概率板子出现无发进行初始化时间配置问题。如下图可见,首次初始化会使用BACP UP RAM中的寄存器记录初始化标志位,即避免每次上下电反复初始化带来的计时误差。经过排查进仿真状态可见,RTC时间寄存器时间值不再变化刷新,RTC_ICSR寄存器中的RSF位未能置位。由于有纽扣电池供电,上下电板子也无法恢复。 通过将纽扣电池抠出,再安装后上电后,RTC模块再次初始化后可正常工作。
问题: 1、什么情况下会导致上述情况? 2、需要如何进行该工况的识别?是否可通过对特定寄存器数据的识别判定进入异常状态,进行再次初始化动作进行恢复? |
STM32H563的QSPI接口不能读取W25Q256的后128MB数据
STM32H5F/E 相比 STM32F4 系列最大的优势是什么?
NUCLEO-H503RB串口通讯实验测试分享
STM32H5入门级DEMO板,NUCLEO-H503RB(Flash 128K,LQFP64封装)-ST中文论坛首帖
STM32H523CEU6的Pin41和Pin42能否作为USART6使用?
有使用STM32芯片制作嵌入式PLC比较成熟的方案吗?
今晚 19:00 直播看点:STM32H5E/F 来了!性能 + 安全双升级,拓宽应用新边界
stm32mp157 通过codesys 运行PLC程序
STM32H5 I3C CCC通信广播地址 SCL 波形脉宽问题
stm32H503CBT6 ADC在某次上电后波动变大了一些。
微信公众号
手机版
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
所以这个位不是检查,而是启动前需要修改一下的。