ELIOT1 HAL
Загрузка...
Поиск...
Не найдено
Драйвер модуля RWC

Драйвер счетчика реального времени и Wake-контроллера Подробнее...

Файлы

файл  hal_rwc.h
 Интерфейс драйвера модуля RWC.
 

Структуры данных

struct  rwc_trimload_reg
 Регистр записи значения подстройки из регистра TRIM. Подробнее...
 
struct  rwc_time_reg
 Регистр текущего значения счетчика времени Подробнее...
 
struct  rwc_alarm_reg
 Регистр времени пробуждения Подробнее...
 
struct  rwc_trim_reg
 Регистр подстройки осцилляторов Подробнее...
 
struct  rwc_config_reg
 Конфигурационный регистр Подробнее...
 
struct  rwc_general_reg
 Регистр общего назначения Подробнее...
 
struct  rwc_wake_config_reg
 Регистр настройки контроллера пробуждения Подробнее...
 
union  rwc_union_reg
 Объединение для доступа к регистрам Подробнее...
 
struct  _rtc_datetime
 Структура используемая для хранения даты и времени Подробнее...
 
struct  rwc_config
 Структура используемая для конфигурирования RWC. Подробнее...
 

Макросы

#define RWC_SYNC_RETRY_TIMES   0U
 Количество циклов ожидания
 
#define RWC_SET_RETRY_TIMES   10U
 Количество циклов установки времени
 

Определения типов

typedef struct _rtc_datetime rtc_datetime_t
 Структура используемая для хранения даты и времени
 

Перечисления

enum  rwc_time_clk_sel
 Выбор сигнала для тактирования счетчика времени Подробнее...
 
enum  rwc_wake_up_polarity
 Уровень активного сигнала WKUP для генерирования прерывания Подробнее...
 
enum  rwc_wake_up_irq_enable
 Разрешение прерывания RWC_WKUP. Подробнее...
 
enum  rwc_lfe_bypass
 Режимы работы осциллятора LFE. Подробнее...
 
enum  rwc_internal_register
 Внутренние регистры с батарейным питанием Подробнее...
 
enum  rwc_rtcclk_type
 Источник частоты, подаваемой на RTCCLK. Подробнее...
 
enum  rwc_reset_type
 Виды сбросов внутренних регистров при сигнале SRSTn. Подробнее...
 
enum  rwc_rtcclk_divisor
 Делители частоты RTCCLK. Подробнее...
 
enum  rwc_cmd
 Команды доступа к внутренним регистрам Подробнее...
 
enum  rwc_status
 Статусы драйвера CLKCTR. Подробнее...
 
enum  rwc_timer_status
 Статусы таймера Подробнее...
 
enum  rwc_alarm_enable
 Разрешение прерывания ALARM. Подробнее...
 
enum  rwc_wkup_enable
 Разрешение работы входа WKUP. Подробнее...
 
enum  rwc_shutdown_force
 Принудительный переход в SHUTDOWN. Подробнее...
 
enum  rwc_freq_serial
 Значения делителей частоты внутреннего интерфейса Подробнее...
 

Функции

enum rwc_status RWC_SetSecondsTimerMatch (RWC_Type *base, uint32_t match_value)
 Устанавливает время будильника в секундах
 
uint32_t RWC_GetSecondsTimerMatch (RWC_Type *base)
 Получает актуальное время срабатывания будильника в секундах
 
enum rwc_status RWC_SetSecondsTimerCount (RWC_Type *base, uint32_t count_value)
 Устанавливает текущее время в секундах
 
enum rwc_status RWC_GetSecondsTimerCount (RWC_Type *base, uint32_t *sec)
 Получение текущее время в секундах
 
enum rwc_status RWC_GetDefaultConfig (struct rwc_config *config)
 Получение конфигурации таймера по умолчанию
 
enum rwc_status RWC_SetLFEBypass (RWC_Type *base, enum rwc_lfe_bypass value)
 Выбор режима работы осциллятора LFE.
 
enum rwc_status RWC_SetLFx (RWC_Type *base, enum rwc_rtcclk_type value)
 Выбор генератора LFE или LFI.
 
enum rwc_status RWC_GetLastAPIStatus ()
 Получение статуса выполнения функции, тип результата которой отличен от enum rwc_status.
 
enum rwc_status RWC_SetResetCtrl (RWC_Type *base, enum rwc_reset_type value)
 Управление сбросом регистров при сигнале на входе SRSTn.
 

Функции чтения/записи внутренних регистров

enum rwc_status RWC_GetInternalRegister (RWC_Type *base, enum rwc_internal_register reg, union rwc_union_reg *value)
 Чтение значения из внутреннего регистра RWC.
 
enum rwc_status RWC_SetInternalRegister (RWC_Type *base, enum rwc_internal_register reg, union rwc_union_reg value)
 Запись значения во внутренний регистр RWC.
 

Функции для работы с частотой тактирования

enum rwc_status RWC_GetRTCClkParam (uint32_t *div, enum rwc_rtcclk_type *src)
 Чтение делителя и источника частоты RTCCLK.
 
enum rwc_status RWC_SetRTCClkParam (uint32_t div, enum rwc_rtcclk_type src)
 Запись делителя и источника частоты RTCCLK.
 
uint32_t RWC_GetTime (RWC_Type *base)
 Чтение значения счетчика реального времени
 

Инициализация и деинициализация

enum rwc_status RWC_Init (RWC_Type *base, struct rwc_config cfg)
 Инициализирует таймер реального времени
 
enum rwc_status RWC_Deinit (RWC_Type *base)
 Деинициализирует таймер реального времени
 

Текущее время и предупреждение

enum rwc_status RWC_SetDatetime (RWC_Type *base, const rtc_datetime_t *datetime)
 Устанавливает текущее время и дату согласно заданной структуре
 
enum rwc_status RWC_GetDatetime (RWC_Type *base, rtc_datetime_t *datetime)
 Получает текущее дату/время и сохраняет в указанную структуру
 
enum rwc_status RWC_SetAlarm (RWC_Type *base, const rtc_datetime_t *alarmTime)
 Устанавливает время будильника
 
enum rwc_status RWC_GetAlarm (RWC_Type *base, rtc_datetime_t *datetime)
 Возвращает время будильника
 

Interrupt Interface

enum rwc_status RWC_EnableWakeUpTimerInterruptFromDPD (RWC_Type *base, bool enable)
 Разрешение прерывания по сигналу wake-up из режима глубокого отключения питания
 
enum rwc_status RWC_EnableAlarmTimerInterruptFromDPD (RWC_Type *base, bool enable)
 Разрешение прерывания по сигналу будильника из режима глубокого отключения питания
 
enum rwc_status RWC_InterruptClear (RWC_Type *base)
 Сброс прерывания RWC_ALARM.
 

Status Interface

uint32_t RWC_GetStatusFlags (RWC_Type *base)
 Получение статусов таймера реального времени
 

Функции работы с внешним сигналом сигналом пробуждения (wake-up)

enum rwc_status RWC_SetWakeUpEnable (RWC_Type *base, bool enable)
 Разрешение работы входа wake_up.
 
enum rwc_status RWC_SetWakeUpActiveLewel (RWC_Type *base, enum rwc_wake_up_polarity value)
 Установка полярности сигнала wake_up.
 

Макросы для операций перевода времени

#define SECONDS_IN_A_DAY   (86400U)
 
#define SECONDS_IN_A_HOUR   (3600U)
 
#define SECONDS_IN_A_MINUTE   (60U)
 
#define DAYS_IN_A_YEAR   (365U)
 
#define YEAR_RANGE_START   (1970U)
 
#define YEAR_RANGE_END   (2099U)
 

Подробное описание

Драйвер счетчика реального времени и Wake-контроллера

Заметки
Драйвер модуля RWC управляет счетчиком реального времени и Wake-контроллером.

Макросы

◆ DAYS_IN_A_YEAR

#define DAYS_IN_A_YEAR   (365U)

Дней в одном году

◆ RWC_SYNC_RETRY_TIMES

#define RWC_SYNC_RETRY_TIMES   0U

Количество циклов ожидания

Заметки
0 - максимальное ожидание. Если необходимо бесконечное ожидание, закомментируйте этот макрос

◆ SECONDS_IN_A_DAY

#define SECONDS_IN_A_DAY   (86400U)

Секунд в одном дне

◆ SECONDS_IN_A_HOUR

#define SECONDS_IN_A_HOUR   (3600U)

Секунд в одном часе

◆ SECONDS_IN_A_MINUTE

#define SECONDS_IN_A_MINUTE   (60U)

Секунд в одной минуте

◆ YEAR_RANGE_END

#define YEAR_RANGE_END   (2099U)

Максимально допустимый год

◆ YEAR_RANGE_START

#define YEAR_RANGE_START   (1970U)

Начальный год

Перечисления

◆ rwc_alarm_enable

Разрешение прерывания ALARM.

Элементы перечислений
RWC_AlarmDisable 

Запретить прерывание ALARM

RWC_AlarmEnable 

Разрешить прерывание ALARM

◆ rwc_cmd

enum rwc_cmd

Команды доступа к внутренним регистрам

Элементы перечислений
RWC_CmdWait 

Признак завершения выполнения команды, записывать нельзя

RWC_CmdWrite 

Команда записи регистра

RWC_CmdRead 

Команда чтения регистра

◆ rwc_freq_serial

Значения делителей частоты внутреннего интерфейса

Элементы перечислений
RWC_FS8MHz 

8 МГц

RWC_FS4MHz 

4 МГц

RWC_FS2MHz 

2 МГц

RWC_FS1MHz 

1 МГц

RWC_FS500kHz 

500 кГц

RWC_FS250kHz 

250 кГц

RWC_FS125kHz 

125 кГц

RWC_FS625hHz 

62,5 кГц

◆ rwc_internal_register

Внутренние регистры с батарейным питанием

Элементы перечислений
RWC_TrimLoad 

Регистр записи значения подстройки из регистра TRIM

RWC_Time 

Регистр текущего значения счетчика времени

RWC_Alarm 

Регистр времени пробуждения

RWC_Trim 

Регистр подстройки осцилляторов

RWC_Config 

Конфигурационный регистр

RWC_GeneralReg 

Регистр общего назначения

RWC_WakeConfig 

Регистр настройки контроллера пробуждения

◆ rwc_lfe_bypass

Режимы работы осциллятора LFE.

Элементы перечислений
RWC_QuartzResonator 

Режим осциллятора соместно с внешним кварцевым резонатором

RWC_CMOSSignal 

Режим буфера для внешнего КМОП сигнала на выводе XTI32

◆ rwc_reset_type

Виды сбросов внутренних регистров при сигнале SRSTn.

Элементы перечислений
RWC_ResetOnlyWakeConfigAndConfig 

Cбрасываются только регистры WakeConfig и Config

RWC_ResetAllExpectedGeneralReg 

Сбрасываются все регистры кроме GeneralReg

◆ rwc_rtcclk_divisor

Делители частоты RTCCLK.

Элементы перечислений
RWC_Div1 

Делитель LFI на 1

RWC_Div2 

Делитель LFI на 2

RWC_Div4 

Делитель LFI на 4

RWC_Div8 

Делитель LFI на 8

RWC_Div16 

Делитель LFI на 16

RWC_Div32 

Делитель LFI на 32

RWC_Div64 

Делитель LFI на 64

RWC_Div128 

Делитель LFI на 128

RWC_Div256 

Делитель LFI на 256

RWC_Div512 

Делитель LFI на 512

RWC_Div1024 

Делитель LFI на 1024

RWC_Div2048 

Делитель LFI на 2048

RWC_Div4096 

Делитель LFI на 4096

RWC_Div8192 

Делитель LFI на 8192

RWC_Div16384 

Делитель LFI на 16384

RWC_Div32768 

Делитель LFI на 32768

RWC_DivMax 

Максимальный делитель

◆ rwc_rtcclk_type

Источник частоты, подаваемой на RTCCLK.

Элементы перечислений
RWC_RTCClkTypeLFI 

RTCClk переключена на LFI

RWC_RTCClkTypeLFE 

RTCClk переключена на LFE

◆ rwc_shutdown_force

Принудительный переход в SHUTDOWN.

Элементы перечислений
RWC_ShutdownNoSet 

Не переходить в SHUTDOWN

RWC_ShutdownSet 

Переходить в SHUTDOWN

◆ rwc_status

enum rwc_status

Статусы драйвера CLKCTR.

Элементы перечислений
RWC_Status_Ok 

Нет ошибок

RWC_Status_InvalidArgument 

Недопустимый параметр

RWC_Status_CheckError 

Получена ошибка от оборудования

RWC_Status_VerifyError 

Верификация не прошла

RWC_Status_ConfigureError 

Недопустимая конфигурация или ошибка в описании оборудования

RWC_Status_HardwareBusy 

Оборудование не готово

RWC_Status_Timeout 

Тайм-аут

◆ rwc_time_clk_sel

Выбор сигнала для тактирования счетчика времени

Элементы перечислений
RWC_TimeClock32kHz 

32 кГц (RTCCLK)

RWC_TimeClock1Hz 

1 Гц

◆ rwc_timer_status

Статусы таймера

Элементы перечислений
RWC_WakeStat3 

Бит устанавливается после первичной подачи питания на RWC. Бит сбрасывается при переходе в режим SHUTDOWN.

RWC_WakeStat2 

Бит устанавливается при выходе из режима SHUTDOWN по внешнему событию WKUP либо по сбросу SRSTn. Бит сбрасывается при переходе в режим SHUTDOWN.

RWC_WakeStat1 

Бит устанавливается при выходе из режима SHUTDOWN. Бит сбрасывается при переходе в режим SHUTDOWN.

◆ rwc_wake_up_irq_enable

Разрешение прерывания RWC_WKUP.

Элементы перечислений
RWC_IRQWkUpDisable 

Запрещёно

RWC_IRQWkUpEnable 

Разрешено

◆ rwc_wake_up_polarity

Уровень активного сигнала WKUP для генерирования прерывания

Элементы перечислений
RWC_WkUpPolarityHigh 

Высокий уровень

RWC_WkUpPolarityLow 

Низкий уровень

◆ rwc_wkup_enable

Разрешение работы входа WKUP.

Элементы перечислений
RWC_WkUpDisable 

Прерывание WKUP запрещено

RWC_WkUpEnable 

Прерывание WKUP разрешено

Функции

◆ RWC_Deinit()

enum rwc_status RWC_Deinit ( RWC_Type * base)

Деинициализирует таймер реального времени

Заметки
Сбрасывает регистры RWC_Config и RWC_WakeConfig таймера к значениям по умолчанию
Аргументы
baseТаймер
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_CheckError

◆ RWC_EnableAlarmTimerInterruptFromDPD()

enum rwc_status RWC_EnableAlarmTimerInterruptFromDPD ( RWC_Type * base,
bool enable )

Разрешение прерывания по сигналу будильника из режима глубокого отключения питания

Аргументы
baseТаймер
enableУправление разрешением.
  • true: разрешено.
  • false: запрешено.
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_CheckError

◆ RWC_EnableWakeUpTimerInterruptFromDPD()

enum rwc_status RWC_EnableWakeUpTimerInterruptFromDPD ( RWC_Type * base,
bool enable )

Разрешение прерывания по сигналу wake-up из режима глубокого отключения питания

Аргументы
baseТаймер
enableУправление разрешением.
  • true: разрешено.
  • false: запрешено.
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_CheckError

◆ RWC_GetAlarm()

enum rwc_status RWC_GetAlarm ( RWC_Type * base,
rtc_datetime_t * datetime )

Возвращает время будильника

Аргументы
baseТаймер
datetimeСтруктура дата/время
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_CheckError

◆ RWC_GetDatetime()

enum rwc_status RWC_GetDatetime ( RWC_Type * base,
rtc_datetime_t * datetime )

Получает текущее дату/время и сохраняет в указанную структуру

Аргументы
baseТаймер
datetimeСтруктура дата/время
Возвращает
RWC_Status_Ok
RWC_Status_InvalidArgument

◆ RWC_GetDefaultConfig()

enum rwc_status RWC_GetDefaultConfig ( struct rwc_config * config)

Получение конфигурации таймера по умолчанию

Аргументы
configКонфигурация
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument

◆ RWC_GetInternalRegister()

enum rwc_status RWC_GetInternalRegister ( RWC_Type * base,
enum rwc_internal_register reg,
union rwc_union_reg * value )

Чтение значения из внутреннего регистра RWC.

Заметки
Функцию не рекомендуется использовать без понимания функционирования блока
Аргументы
baseТаймер
regВнутренний регистр
valueЗначение регистра
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_Timeout

◆ RWC_GetLastAPIStatus()

enum rwc_status RWC_GetLastAPIStatus ( )

Получение статуса выполнения функции, тип результата которой отличен от enum rwc_status.

Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_CheckError

◆ RWC_GetRTCClkParam()

enum rwc_status RWC_GetRTCClkParam ( uint32_t * div,
enum rwc_rtcclk_type * src )

Чтение делителя и источника частоты RTCCLK.

Заметки
Функцию не рекомендуется использовать без понимания функционирования блока
Аргументы
divДелитель частоты
srcИсточник частоты
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_CheckError

◆ RWC_GetSecondsTimerCount()

enum rwc_status RWC_GetSecondsTimerCount ( RWC_Type * base,
uint32_t * sec )

Получение текущее время в секундах

Аргументы
baseТаймер
secСчитанное значение секунд
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument

◆ RWC_GetSecondsTimerMatch()

uint32_t RWC_GetSecondsTimerMatch ( RWC_Type * base)

Получает актуальное время срабатывания будильника в секундах

Аргументы
baseТаймер
Возвращает
Врема будильника в секундах

◆ RWC_GetStatusFlags()

uint32_t RWC_GetStatusFlags ( RWC_Type * base)

Получение статусов таймера реального времени

Аргументы
baseТаймер
Возвращает
Объединение статусов rwc_timer_status

◆ RWC_GetTime()

uint32_t RWC_GetTime ( RWC_Type * base)

Чтение значения счетчика реального времени

Аргументы
baseТаймер
Возвращаемые значения
Значениерегистра времени TIME

◆ RWC_Init()

enum rwc_status RWC_Init ( RWC_Type * base,
struct rwc_config cfg )

Инициализирует таймер реального времени

Заметки
Эту функцию следует вызывать перед использованием драйвера таймера реального времени.
Аргументы
baseТаймер
cfgКонфигурация
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_CheckError

◆ RWC_InterruptClear()

enum rwc_status RWC_InterruptClear ( RWC_Type * base)

Сброс прерывания RWC_ALARM.

Аргументы
baseТаймер
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument

◆ RWC_SetAlarm()

enum rwc_status RWC_SetAlarm ( RWC_Type * base,
const rtc_datetime_t * alarmTime )

Устанавливает время будильника

Заметки
Функция проверяет, превышает ли указанное время срабатывания будильника текущее время. Если нет, то функция не устанавливает сигнал будильника и возвращает сообщение об ошибке.
Аргументы
baseТаймер
alarmTimeСтруктура дата/время
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_ConfigureError

◆ RWC_SetDatetime()

enum rwc_status RWC_SetDatetime ( RWC_Type * base,
const rtc_datetime_t * datetime )

Устанавливает текущее время и дату согласно заданной структуре

Заметки
Процедура может приводить к зависанию.
Аргументы
baseТаймер
datetimeСтруктура дата/время
Возвращает
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_Timeout

◆ RWC_SetInternalRegister()

enum rwc_status RWC_SetInternalRegister ( RWC_Type * base,
enum rwc_internal_register reg,
union rwc_union_reg value )

Запись значения во внутренний регистр RWC.

Заметки
Функцию не рекомендуется использовать без понимания функционирования блока
Аргументы
baseТаймер
regВнутренний регистр
valueЗаписываемое значение
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_Timeout

◆ RWC_SetLFEBypass()

enum rwc_status RWC_SetLFEBypass ( RWC_Type * base,
enum rwc_lfe_bypass value )

Выбор режима работы осциллятора LFE.

Аргументы
baseБазовый адрес
valueРежим работы осциллятора LFE
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_CheckError

◆ RWC_SetLFx()

enum rwc_status RWC_SetLFx ( RWC_Type * base,
enum rwc_rtcclk_type value )

Выбор генератора LFE или LFI.

Аргументы
baseБазовый адрес
valueГенератор
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_CheckError

◆ RWC_SetResetCtrl()

enum rwc_status RWC_SetResetCtrl ( RWC_Type * base,
enum rwc_reset_type value )

Управление сбросом регистров при сигнале на входе SRSTn.

Аргументы
baseБазовый адрес
valueВид сброса
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_CheckError

◆ RWC_SetRTCClkParam()

enum rwc_status RWC_SetRTCClkParam ( uint32_t div,
enum rwc_rtcclk_type src )

Запись делителя и источника частоты RTCCLK.

Заметки
Допустимые значения для делителя частоты - степени 2 от 2^0 до 2^RWC_DivMax.
Функцию не рекомендуется использовать без понимания функционирования блока
Аргументы
divДелитель частоты
srcИсточник частоты
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_CheckError

◆ RWC_SetSecondsTimerCount()

enum rwc_status RWC_SetSecondsTimerCount ( RWC_Type * base,
uint32_t count_value )

Устанавливает текущее время в секундах

Заметки
Время устанавливается до тех пор, пока не будет установлено либо не будет превышено максимальное число попыток записи.
Аргументы
baseТаймер
countValueВремя в секундах
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_Timeout

◆ RWC_SetSecondsTimerMatch()

enum rwc_status RWC_SetSecondsTimerMatch ( RWC_Type * base,
uint32_t match_value )

Устанавливает время будильника в секундах

Аргументы
baseТаймер
matchValueВремя будильника в секундах
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_CheckError

◆ RWC_SetWakeUpActiveLewel()

enum rwc_status RWC_SetWakeUpActiveLewel ( RWC_Type * base,
enum rwc_wake_up_polarity value )

Установка полярности сигнала wake_up.

Аргументы
baseБазовый адрес
valueПолярность сигнала
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_CheckError

◆ RWC_SetWakeUpEnable()

enum rwc_status RWC_SetWakeUpEnable ( RWC_Type * base,
bool enable )

Разрешение работы входа wake_up.

Аргументы
baseБазовый адрес
enableРазрешение
Возвращаемые значения
RWC_Status_Ok
RWC_Status_InvalidArgument
RWC_Status_CheckError