RTC + VBAT

2020. 9. 4. 16:33STM32F/코드

  VBAT PIN 에 코인전지가 연결되어 있으면 ( 베티리 ) 전원이 OFF 되더라고 RTC 는 동작 하게 되어 

현재 시간 및 날짜 등을 유지 시킬 수 있다. 아래 코드는 시간 및 날짜 정보를 읽어오는 코드 있다.

 

  데이터 출력 포멧은 BCD 로 설정 하고, 이를 Dec 로 변환 할 수 있는 함수를 구현 한다. 

여기서 주의할 점은 데이터를 읽어올때 sTime -> sData 순으로 읽어야 데이터가 정상적으로 출력된다. 

만약 sTime 및 sData 하나만 읽거나, sData -> sTime 을 읽으면 데이터 출력이 안된다.

 

main.c

 

  위 코드 만으로는 전원이 OFF 되고 다시 ON을 시키면 시간 및 날짜 정보는 모두 초가화가 된다. ( 데이터 시트 참조 )

현재 시간 및 날짜는 유지 시키기 위해서는 아래의 코드를 추가 하면 된다.

( CubeIDE 툴에서 RTC 를 추가 하면 MX_RTC_Init 함수는 만들어 진다. )

 

main.c / MX_RTC_Init 함수 내용 수정

 

 

* 구동중 Reset ( hardware reset ) 을 시키면 RTC 에 delay ( reset 을 걸는 시간 + @ ) 가 생겨 오차가 계속 누적된다.  

reset 을 많이 걸어야 하는 시스템이라면 외부 RTC 모듈을 사용하는게 좋을거 같다.

'STM32F > 코드' 카테고리의 다른 글

STM32CubeIDE___SPI_Slave_DMA  (0) 2020.05.18
STM32CubeIDE___SPI Slave Interrupt ( TX/RX )  (0) 2020.05.13
STM32CubeIDE___SPI Code  (0) 2020.05.04