forked from LuckfoxTECH/luckfox-pico
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
alistairjordan
committed
Dec 25, 2023
1 parent
a9a487b
commit 1662e64
Showing
2 changed files
with
220 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,192 @@ | ||
/*! | ||
* \file rtc-board.h | ||
* | ||
* \brief Target board RTC timer and low power modes management | ||
* | ||
* \copyright Revised BSD License, see section \ref LICENSE. | ||
* | ||
* \code | ||
* ______ _ | ||
* / _____) _ | | | ||
* ( (____ _____ ____ _| |_ _____ ____| |__ | ||
* \____ \| ___ | (_ _) ___ |/ ___) _ \ | ||
* _____) ) ____| | | || |_| ____( (___| | | | | ||
* (______/|_____)_|_|_| \__)_____)\____)_| |_| | ||
* (C)2013-2017 Semtech | ||
* | ||
* \endcode | ||
* | ||
* \author Miguel Luis ( Semtech ) | ||
* | ||
* \author Gregory Cristian ( Semtech ) | ||
*/ | ||
#ifndef __RTC_BOARD_H__ | ||
#define __RTC_BOARD_H__ | ||
|
||
#ifdef __cplusplus | ||
extern "C" | ||
{ | ||
#endif | ||
|
||
#include <stdint.h> | ||
#include <stdbool.h> | ||
#include "timer.h" | ||
|
||
/*! | ||
* \brief Temperature coefficient of the clock source | ||
*/ | ||
#define RTC_TEMP_COEFFICIENT ( -0.035f ) | ||
|
||
/*! | ||
* \brief Temperature coefficient deviation of the clock source | ||
*/ | ||
#define RTC_TEMP_DEV_COEFFICIENT ( 0.0035f ) | ||
|
||
/*! | ||
* \brief Turnover temperature of the clock source | ||
*/ | ||
#define RTC_TEMP_TURNOVER ( 25.0f ) | ||
|
||
/*! | ||
* \brief Turnover temperature deviation of the clock source | ||
*/ | ||
#define RTC_TEMP_DEV_TURNOVER ( 5.0f ) | ||
|
||
/*! | ||
* \brief Initializes the RTC timer | ||
* | ||
* \remark The timer is based on the RTC | ||
*/ | ||
void RtcInit( void ); | ||
|
||
/*! | ||
* \brief Returns the minimum timeout value | ||
* | ||
* \retval minTimeout Minimum timeout value in in ticks | ||
*/ | ||
uint32_t RtcGetMinimumTimeout( void ); | ||
|
||
/*! | ||
* \brief converts time in ms to time in ticks | ||
* | ||
* \param[IN] milliseconds Time in milliseconds | ||
* \retval returns time in timer ticks | ||
*/ | ||
uint32_t RtcMs2Tick( TimerTime_t milliseconds ); | ||
|
||
/*! | ||
* \brief converts time in ticks to time in ms | ||
* | ||
* \param[IN] time in timer ticks | ||
* \retval returns time in milliseconds | ||
*/ | ||
TimerTime_t RtcTick2Ms( uint32_t tick ); | ||
|
||
/*! | ||
* \brief Performs a delay of milliseconds by polling RTC | ||
* | ||
* \param[IN] milliseconds Delay in ms | ||
*/ | ||
void RtcDelayMs( TimerTime_t milliseconds ); | ||
|
||
/*! | ||
* \brief Sets the alarm | ||
* | ||
* \note The alarm is set at now (read in this funtion) + timeout | ||
* | ||
* \param timeout [IN] Duration of the Timer ticks | ||
*/ | ||
void RtcSetAlarm( uint32_t timeout ); | ||
|
||
/*! | ||
* \brief Stops the Alarm | ||
*/ | ||
void RtcStopAlarm( void ); | ||
|
||
/*! | ||
* \brief Starts wake up alarm | ||
* | ||
* \note Alarm in RtcTimerContext.Time + timeout | ||
* | ||
* \param [IN] timeout Timeout value in ticks | ||
*/ | ||
void RtcStartAlarm( uint32_t timeout ); | ||
|
||
/*! | ||
* \brief Sets the RTC timer reference | ||
* | ||
* \retval value Timer reference value in ticks | ||
*/ | ||
uint32_t RtcSetTimerContext( void ); | ||
|
||
/*! | ||
* \brief Gets the RTC timer reference | ||
* | ||
* \retval value Timer value in ticks | ||
*/ | ||
uint32_t RtcGetTimerContext( void ); | ||
|
||
/*! | ||
* \brief Gets the system time with the number of seconds elapsed since epoch | ||
* | ||
* \param [OUT] milliseconds Number of milliseconds elapsed since epoch | ||
* \retval seconds Number of seconds elapsed since epoch | ||
*/ | ||
uint32_t RtcGetCalendarTime( uint16_t *milliseconds ); | ||
|
||
/*! | ||
* \brief Get the RTC timer value | ||
* | ||
* \retval RTC Timer value | ||
*/ | ||
uint32_t RtcGetTimerValue( void ); | ||
|
||
/*! | ||
* \brief Get the RTC timer elapsed time since the last Alarm was set | ||
* | ||
* \retval RTC Elapsed time since the last alarm in ticks. | ||
*/ | ||
uint32_t RtcGetTimerElapsedTime( void ); | ||
|
||
/*! | ||
* \brief Writes data0 and data1 to the RTC backup registers | ||
* | ||
* \param [IN] data0 1st Data to be written | ||
* \param [IN] data1 2nd Data to be written | ||
*/ | ||
void RtcBkupWrite( uint32_t data0, uint32_t data1 ); | ||
|
||
/*! | ||
* \brief Reads data0 and data1 from the RTC backup registers | ||
* | ||
* \param [OUT] data0 1st Data to be read | ||
* \param [OUT] data1 2nd Data to be read | ||
*/ | ||
void RtcBkupRead( uint32_t* data0, uint32_t* data1 ); | ||
|
||
/*! | ||
* \brief Processes pending timer events | ||
*/ | ||
void RtcProcess( void ); | ||
|
||
/*! | ||
* \brief Computes the temperature compensation for a period of time on a | ||
* specific temperature. | ||
* | ||
* \param [IN] period Time period to compensate in milliseconds | ||
* \param [IN] temperature Current temperature | ||
* | ||
* \retval Compensated time period | ||
*/ | ||
TimerTime_t RtcTempCompensation( TimerTime_t period, float temperature ); | ||
|
||
/*! | ||
* \brief Processes pending timer events | ||
*/ | ||
void RtcProcess( void ); | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif // __RTC_BOARD_H__ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters