123 lines
2.7 KiB
C
123 lines
2.7 KiB
C
|
/**
|
||
|
* @copyright 2017 Indie Semiconductor.
|
||
|
*
|
||
|
* This file is proprietary to Indie Semiconductor.
|
||
|
* All rights reserved. Reproduction or distribution, in whole
|
||
|
* or in part, is forbidden except by express written permission
|
||
|
* of Indie Semiconductor.
|
||
|
*
|
||
|
* @file pmu_device.h
|
||
|
*/
|
||
|
|
||
|
#ifndef PMU_DEVICE_H__
|
||
|
#define PMU_DEVICE_H__
|
||
|
|
||
|
#include <stddef.h>
|
||
|
#include <string.h>
|
||
|
#include <stdint.h>
|
||
|
#include <stdbool.h>
|
||
|
#include <meta.h>
|
||
|
|
||
|
typedef enum{
|
||
|
POLARITY_NATIVE = 0,
|
||
|
POLARITY_FLIP,
|
||
|
}BattMonitorPolarity_t;
|
||
|
|
||
|
|
||
|
typedef enum{
|
||
|
BOR_1V5_THRS_1298mV = 0,
|
||
|
BOR_1V5_THRS_1328mV,
|
||
|
BOR_1V5_THRS_1358mV,
|
||
|
BOR_1V5_THRS_1393mV,
|
||
|
BOR_1V5_THRS_1423mV,
|
||
|
BOR_1V5_THRS_1463mV,
|
||
|
}Bor1V5Thres_t;
|
||
|
|
||
|
|
||
|
typedef enum{
|
||
|
BOR_3V3_THRS_2163mV = 0,
|
||
|
BOR_3V3_THRS_2228mV,
|
||
|
BOR_3V3_THRS_2292mV,
|
||
|
BOR_3V3_THRS_2363mV,
|
||
|
BOR_3V3_THRS_2433mV,
|
||
|
BOR_3V3_THRS_2513mV,
|
||
|
BOR_3V3_THRS_2598mV,
|
||
|
BOR_3V3_THRS_2688mV,
|
||
|
BOR_3V3_THRS_2783mV,
|
||
|
BOR_3V3_THRS_2883mV,
|
||
|
BOR_3V3_THRS_2998mV,
|
||
|
BOR_3V3_THRS_3118mV,
|
||
|
BOR_3V3_THRS_3248mV,
|
||
|
}Bor3V3Thres_t;
|
||
|
|
||
|
/**
|
||
|
* @brief The enumeration of brownout mode.
|
||
|
*/
|
||
|
typedef enum {
|
||
|
PMU_BROWNOUT_RESET = 0U,
|
||
|
PMU_BROWNOUT_INTERRUPT,
|
||
|
PMU_BROWNOUT_NONE,
|
||
|
} PMU_BROWNOUT_MODE_t;
|
||
|
|
||
|
/**
|
||
|
* @brief The enumeration of wake up timer mode.
|
||
|
*/
|
||
|
typedef enum {
|
||
|
WAKEUP_TIMEER_DISABLE = 0U,
|
||
|
WAKEUP_TIMEER_ENABLE,
|
||
|
} PMU_WAKEUP_TIMEER_MODE_t;
|
||
|
|
||
|
/**
|
||
|
* @brief The enumeration of wake up timer mode.
|
||
|
*/
|
||
|
typedef enum {
|
||
|
WAKEUP_TIMEER_INTERVAL_100us = 0U,
|
||
|
WAKEUP_TIMEER_INTERVAL_200us,
|
||
|
WAKEUP_TIMEER_INTERVAL_400us,
|
||
|
WAKEUP_TIMEER_INTERVAL_800us,
|
||
|
WAKEUP_TIMEER_INTERVAL_16ms,
|
||
|
WAKEUP_TIMEER_INTERVAL_32ms,
|
||
|
WAKEUP_TIMEER_INTERVAL_64ms,
|
||
|
WAKEUP_TIMEER_INTERVAL_128ms,
|
||
|
WAKEUP_TIMEER_INTERVAL_256ms,
|
||
|
WAKEUP_TIMEER_INTERVAL_512ms,
|
||
|
WAKEUP_TIMEER_INTERVAL_1024ms,
|
||
|
WAKEUP_TIMEER_INTERVAL_2048ms,
|
||
|
WAKEUP_TIMEER_INTERVAL_4096ms,
|
||
|
WAKEUP_TIMEER_INTERVAL_8192ms,
|
||
|
WAKEUP_TIMEER_INTERVAL_16384ms,
|
||
|
WAKEUP_TIMEER_INTERVAL_32768ms
|
||
|
} PMU_WAKEUP_TIMEER_Interval_t;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#define MODUE_SOFT_RESET_ADC (0x001U)
|
||
|
#define MODUE_SOFT_RESET_PWM (0x002U)
|
||
|
#define MODUE_SOFT_RESET_CTT (0x004U)
|
||
|
#define MODUE_SOFT_RESET_GTM (0x008U)
|
||
|
#define MODUE_SOFT_RESET_SPIM (0x010U)
|
||
|
#define MODUE_SOFT_RESET_UART (0x011U)
|
||
|
#define MODUE_SOFT_RESET_MATHDIV (0x012U)
|
||
|
#define MODUE_SOFT_RESET_CRC (0x014U)
|
||
|
#define MODUE_SOFT_RESET_PWM_AUX (0x018U)
|
||
|
#define MODUE_SOFT_RESET_LINS (0x020U)
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
void PMU_BORInit(Bor1V5Thres_t lowThreshold, Bor3V3Thres_t highThreshold);
|
||
|
void PMU_WakeTimerInit(PMU_WAKEUP_TIMEER_MODE_t mode, PMU_WAKEUP_TIMEER_Interval_t interval);
|
||
|
void PMU_EnterDeepSleepMode(void);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#endif /* __PMU_DEVICE_H__ */
|