chg-stn-motherboard-ti-mcu/utils/utils.h

115 lines
3.4 KiB
C

/*
* ivec_utils.h
*
* Created on: 22-Jan-2024
* Author: saar
*/
#ifndef UTILS_IVEC_UTILS_H_
#define UTILS_IVEC_UTILS_H_
#include <stdlib.h>
#include <assert.h>
#include "ti_msp_dl_config.h"
#define WATCHDOG_TIMER WWDT1
typedef enum
{
MCAL_WDT_1_SEC_TIMER = 1,
MCAL_WDT_2_SEC_TIMER,
MCAL_WDT_3_SEC_TIMER,
MCAL_WDT_4_SEC_TIMER,
MCAL_WDT_5_SEC_TIMER,
MCAL_WDT_6_SEC_TIMER,
MCAL_WDT_7_SEC_TIMER,
MCAL_WDT_8_SEC_TIMER,
MCAL_WDT_16_SEC_TIMER = 16,
MCAL_WDT_24_SEC_TIMER = 24,
MCAL_WDT_32_SEC_TIMER = 32,
MCAL_WDT_40_SEC_TIMER = 40,
MCAL_WDT_48_SEC_TIMER = 48,
MCAL_WDT_56_SEC_TIMER = 56,
MCAL_WDT_64_SEC_TIMER = 64
}MCAL_WWDT_TIMER;
/* Generic Status Codes */
typedef enum
{
IVEC_MCAL_STATUS_INIT_FAIL = -1,
IVEC_MCAL_STATUS_SUCCESS , /*!< Generic operation success status */
IVEC_MCAL_STATUS_ERROR , /*!< Generic operation failure status */
IVEC_MCAL_STATUS_BUSY , /*!< Generic operation busy status */
IVEC_MCAL_STATUS_TIMEOUT , /*!< Generic operation timeout status */
IVEC_MCAL_STATUS_UNSUPPORTED , /*!< Generic operation unsupported status */
IVEC_MCAL_STATUS_TRUE , /*!< Generic operation true status */
IVEC_MCAL_STATUS_FALSE , /*!< Generic operation false status */
} IVEC_McalStatus_e;
/* Peripheral Identifiers */
#define IVEC_GPIO 5
#define IVEC_UART 1
#define IVEC_HFXT 2
#define IVEC_STANDBY0 3
#define IVEC_SYSOSC 4
#define IVEC_SLEEP0 6
/* Core Status Codes */
typedef enum
{
IVEC_CORE_STATUS_INIT_FAIL = 1,
IVEC_CORE_STATUS_SUCCESS = 0, /*!< Generic operation success status */
IVEC_CORE_STATUS_ERROR = -1, /*!< Generic operation failure status */
IVEC_CORE_STATUS_BUSY = 2, /*!< Generic operation busy status */
IVEC_CORE_STATUS_TIMEOUT = 3, /*!< Generic operation timeout status */
IVEC_CORE_STATUS_UNSUPPORTED = 4, /*!< Generic operation unsupported status */
} IVEC_CoreStatus_e;
/* SPI Clock Speed Options */
typedef enum
{
IVEC_SPI_CS_1MHZ = 0,
} IVEC_SpiCs_e;
/* SysTick Period Options */
typedef enum
{
IVEC_SYSTICK_PERIOD_1MS = 72000, /*!< Sets period of SysTick to 1ms @48Mhz */
} IVEC_SystickPeriod_e;
/* I2C Baud Rate Options */
typedef enum
{
IVEC_I2C_BAUD_100KHZ = 0,
IVEC_I2C_BAUD_400KHZ,
} IVEC_I2cBaud_e;
/* I2C Controller Status */
typedef enum
{
IVEC_I2C_STATUS_IDLE = 0,
IVEC_I2C_STATUS_TX_STARTED,
IVEC_I2C_STATUS_TX_INPROGRESS,
IVEC_I2C_STATUS_TX_COMPLETE,
IVEC_I2C_STATUS_RX_STARTED,
IVEC_I2C_STATUS_RX_INPROGRESS,
IVEC_I2C_STATUS_RX_COMPLETE,
IVEC_I2C_STATUS_ERROR,
} IVEC_I2cControllerStatus_e;
/* Function Declarations */
void vMCAL_mcuInit(void);
IVEC_CoreStatus_e xMCAL_sysctlInit(uint8_t u8ClkSrc, uint8_t u8LpMode);
IVEC_CoreStatus_e xMCAL_systickInit(IVEC_SystickPeriod_e xTick);
int32_t i32MCAL_getTicks(void);
void vMCAL_delayTicks(int32_t i32DelayMs);
void vMCAL_softReset(void);
void vMCAL_delayUs(uint32_t u32Us);
IVEC_McalStatus_e xMCAL_vrefInit(void);
void vMCAL_WDG_Refresh(void);
void vMCAL_WatchdogDisablePower(void);
void vMCAL_WatchdogEnablePower(void);
bool bMCAL_IsWatchdogRunning(void);
#endif /* UTILS_IVEC_UTILS_H_ */