RTC_TR and RTC_DR are not set on STM32H743
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-09-30 11:13 AM
Hi,
I've used STM32CubeMX to configure my STM32H7 MCU, but RTC initial values which I set on CubeMX as default value are not set on RTC_TR and RTC_DR registers after debugging line by line when MX_RTC_Init() is called. There is no fault reported or any hardfault..., and I've use LSI for RTC.
Please help in this simple issue which waste my time couple of days ...
Thanks.
- Labels:
-
Documentation
-
RTC
-
STM32CubeMX
-
STM32H7 series
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-10-03 1:49 AM
Please some one help, on this topic ...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-10-03 3:27 AM
The 'H7 is an overly complicated design and I don't use it so maybe some step is different from the usual procedure for other STM32, but you are supposed to:
- enable RTC clock in RCC
- enable PWR clock in RCC (from reading RM0433 it appears that in 'H7 this is not necessary, as I don't see any bit in RCC registers which would accomplis this)
- enable backup domain access by setting PWR_CR1.DBP (see Accessing the backup domain subchapter in RM0433), read back PWR_CR1 content (e.g. in debugger) to check
- enable LSI in RCC_CSR and make sure it runs by checking the LSIRDY bit in the same register
- in RCC_BDCR, select LSI as RTC clock in RTCSEL field and enable RTC by setting RTCEN bit; read back to confirm the settings are performed as intended (if not, you may need to reset the backup domain)
- in RTC, you need to unlock RTC writes by writing the prescribed sequence to RTC_WPR, see RTC register write protection subchapter in RTC chapter of RM
- enter RTC initialization mode by setting RTC_ISR.INIT=1 and waiting until RTC_ISR.INITF is set to 1 - see Calendar initialization and configuration subchapter
- write time and date to RTC_TR and RTC_DR respectively
- exit the initialization mode by clearing RTC_ISR.INIT
JW
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-10-03 4:51 AM
Thanks for your reply,
I should add, I can read RTC_TR and RTC_DR, but their values are started always from zero each time I start my code and in the following it work properly (count time), .. It seems RTC clock works properly but the problem is where I want set these registers...
Thanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-10-03 6:08 AM
> their values are started always from zero each time I start my code
Do you have battery connected to VBAT pin? If not, RTC is reset whenever VDD is removed.
If date/time is reset when system reset occurs without actually removing power, then it's software issue, but I don't use Cube and can't help there.
JW
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-10-03 8:47 AM
Yes, when system reset, date/Time is lost....
How we can find out removing write protection by writing 0xCA and 0x53 is done properly... Is there any other register to check for insurance?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-10-03 1:55 PM
> How we can find out removing write protection by writing 0xCA and 0x53 is done properly... Is there any other register to check for insurance?
You can't check it directly, but if it's not done properly, you won't be able to change RTC_ISR.INIT.
JW
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-10-04 2:27 AM
RTC_ISR.INIT is changed... but RTC_TR value does not change...:crying_face:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-10-04 3:01 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2021-10-04 4:07 AM
Once I write RTC_DR or RTC_TR, check its register on debugger just after witting, nothing changed ...
After initializing when my threads starts... I read RTC_TR and RTC_DR... It works properly but all start from zero and nothing was written on their registers.
There is something wrong here which I can not write any thing on RTC_DR and RTC_TR as initial time...
