HwA_Flagchip_FC7240_V2/Inc/HwA_eftu_ccm.h

486 lines
16 KiB
C

/**
* @file HwA_eftu_ccm.h
* @author flagchip
* @brief Hardware access layer for EFTU CCM
* @version 2.0.0
* @date 2024-08-20
*
* SDK Version: 2.6.0
*
* @copyright Copyright (c) 2024 Flagchip Semiconductors Co., Ltd.
*
*/
/* ********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 0.1.0 2023-12-15 Flagchip030 N/A First version for FC7300
* 2.0.0 2024-10-12 Flagchip099 N/A Change version and release
******************************************************************************** */
#ifndef HWA_INCLUDE_HWA_EFTU_CCM_H_
#define HWA_INCLUDE_HWA_EFTU_CCM_H_
#include "device_header.h"
#if EFTU_INSTANCE_COUNT > 0U
#define EFTU_CLUSTER_CLOCK_COUNT (8U)
#define EFTU_GTOM_CHANNEL_COUNT (16U)
#define EFTU_GTRIGGER_OUT_COUNT (8U)
#define EFTU_CMP_COUNT (2U)
#define EFTU_DMA_REQUEST_COUNT (6U)
#define EFTU_GTRIGGER_OUT_MASK_TOM1_CCU1_BIT0 (0x1<<0U)
#define EFTU_GTRIGGER_OUT_MASK_TOM0_CCU1_BIT1 (0x1<<1U)
#define EFTU_GTRIGGER_OUT_MASK_TOM1_CCU0_BIT2 (0x1<<2U)
#define EFTU_GTRIGGER_OUT_MASK_TOM0_CCU0_BIT3 (0x1<<3U)
#define EFTU_GTRIGGER_OUT_MASK_TIM_TRIG_BIT4 (0x1<<4U)
#define EFTU_TIM_ERROR_EN_BIT0 (0x1<<0U)
#define EFTU_TIM_ERROR_EN_BIT1 (0x1<<1U)
#define EFTU_TIM_ERROR_EN_BIT2 (0x1<<2U)
#define EFTU_TIM_ERROR_EN_BIT3 (0x1<<3U)
#define EFTU_TIM_ERROR_EN_BIT4 (0x1<<4U)
#define EFTU_TIM_ERROR_EN_BIT5 (0x1<<5U)
#define EFTU_TOM_SWAP_OUT_2_3_OUT_T_0_1_BIT0 (0x1<<0U)
#define EFTU_TOM_SWAP_OUT_6_7_OUT_T_4_5_BIT1 (0x1<<1U)
#define EFTU_TOM_SWAP_OUT_10_11_OUT_T_8_9_BIT2 (0x1<<2U)
#define EFTU_TOM_SWAP_OUT_14_15_OUT_T_12_13_BIT3 (0x1<<3U)
#define EFTU_TOM_SWAP_OUT_4_7_OUT_T_0_3_BIT4 (0x1<<4U)
#define EFTU_TOM_SWAP_OUT12_15_OUT_T_8_11_BIT5 (0x1<<5U)
typedef enum
{
EFTU_CLUSTER_CLOCK_CMU_CLK = 0U,
EFTU_CLUSTER_CLOCK_CMU_CLK8 = 1U,
EFTU_CLUSTER_CLOCK_EXT_CAPTURE = 2U,
} EFTU_CCM_ClusterCmuClkSelectType;
typedef enum
{
EFTU_DEBUG_RUN = 0U,
EFTU_DEBUG_TOM_HALT = 1U,
EFTU_DEBUG_OUT_FREEZEN = 2U,
EFTU_DEBUG_ALL_HALT = 3U,
} EFTU_CCM_DebugMode;
typedef enum
{
EFTU_TIM_AUXI_SRC_CH0 = 0U,
EFTU_TIM_AUXI_SRC_CH1 = 1U,
EFTU_TIM_AUXI_SRC_CH2 = 2U,
EFTU_TIM_AUXI_SRC_CH3 = 3U,
EFTU_TIM_AUXI_SRC_CH4 = 4U,
EFTU_TIM_AUXI_SRC_CH5 = 5U,
EFTU_TIM_AUXI_SRC_CH6 = 6U,
EFTU_TIM_AUXI_SRC_CH7 = 7U,
EFTU_TIM_AUXI_SRC_CH8 = 8U,
EFTU_TIM_AUXI_SRC_CH9 = 9U,
EFTU_TIM_AUXI_SRC_CH10 = 10U,
EFTU_TIM_AUXI_SRC_CH11 = 11U,
EFTU_TIM_AUXI_SRC_CH12 = 12U,
EFTU_TIM_AUXI_SRC_CH13 = 13U,
EFTU_TIM_AUXI_SRC_CH14 = 14U,
EFTU_TIM_AUXI_SRC_CH15 = 15U,
} EFTU_CCM_AuxInChlSrcType;
typedef enum
{
EFTU0_OUT0 = 0U,
EFTU1_OUT0 = 1U,
EFTU2_OUT0 = 2U,
EFTU0_OUT1 = 3U,
EFTU1_OUT2 = 4U,
EFTU2_OUT3 = 5U,
} EFTU_CCM_AuxInSrcType;
typedef enum
{
EFTU_TIM_PAD_IN = 0U,
EFTU_TIM_EXT_TRIGGER = 0U,
} EFTU_CCM_TimInSrcType;
typedef enum
{
EFTU_GTOM_MUX_SRC_EFTU2_OUT = 0U,
EFTU_GTOM_MUX_SRC_EFTU1_OUT = 1U,
EFTU_GTOM_MUX_SRC_EFTU0_OUT = 2U,
} EFTU_CCM_GtomOutSrc;
typedef enum
{
EFTU_GTRIGGER_OUT_SRC_DIS = 0U,
EFTU_GTRIGGER_OUT_SRC_EFTU0 = 1U,
EFTU_GTRIGGER_OUT_SRC_EFTU1 = 2U,
EFTU_GTRIGGER_OUT_SRC_EFTU2 = 3U,
} EFTU_CCM_GlobalTriggerOutType;
typedef enum
{
EFTU0_CMP0 = 0U,
EFTU0_CMP1 = 1U,
} EFTU_CCM_CmpInstance;
typedef enum
{
EFTU_CMP_X_Y_SEL_EFTU0_OUT_0_7 = 0x0U,
EFTU_CMP_X_Y_SEL_EFTU0_OUT_8_15 = 0x1U,
EFTU_CMP_X_Y_SEL_EFTU1_OUT_0_7 = 0x2U,
EFTU_CMP_X_Y_SEL_EFTU1_OUT_8_15 = 0x3U,
EFTU_CMP_X_Y_SEL_EFTU2_OUT_0_7 = 0x4U,
EFTU_CMP_X_Y_SEL_EFTU2_OUT_8_15 = 0x5U,
EFTU_CMP_X_Y_SEL_EFTU0_OUT_T_0_7 = 0x8U,
EFTU_CMP_X_Y_SEL_EFTU0_OUT_T_8_15 = 0x9U,
EFTU_CMP_X_Y_SEL_EFTU1_OUT_T_0_7 = 0xAU,
EFTU_CMP_X_Y_SEL_EFTU1_OUT_T_8_15 = 0xBU,
EFTU_CMP_X_Y_SEL_EFTU2_OUT_T_0_7 = 0xCU,
EFTU_CMP_X_Y_SEL_EFTU2_OUT_T_8_15 = 0xDU,
} EFTU_CCM_CmpSrcSelectType;
typedef enum
{
EFTU_HRPWM_SRC_OUT03_OUT_T03 = 0x0U,
EFTU_HRPWM_SRC_OUT47_OUT_T47 = 0x1U,
EFTU_HRPWM_SRC_OUT07 = 0x2U,
EFTU_HRPWM_SRC_OUT_T07 = 0x3U,
} EFTU_CCM_HrPwmSrcType;
typedef enum
{
EFTU_TOM0_CH0_TO_TOM1_CH0 = 0x1U,
EFTU_TOM0_CH7_TO_TOM1_CH0 = 0x2U,
} EFTU_CCM_TomChTrigInType;
typedef enum
{
EFTU_CLUSTER_CMU_CLK_0 = 0u,
EFTU_CLUSTER_CMU_CLK_1 = 1u,
EFTU_CLUSTER_CMU_CLK_2 = 2u,
EFTU_CLUSTER_CMU_CLK_3 = 3u,
EFTU_CLUSTER_CMU_CLK_4 = 4u,
EFTU_CLUSTER_CMU_CLK_5 = 5u,
EFTU_CLUSTER_CMU_CLK_6 = 6u,
EFTU_CLUSTER_CMU_CLK_7 = 7u,
} EFTU_CCM_ClusterCmuClkType;
typedef enum
{
EFTU_TIM_ERR_CH0 = 0U,
EFTU_TIM_ERR_CH1 = 1U,
EFTU_TIM_ERR_CH2 = 2U,
EFTU_TIM_ERR_CH3 = 3U,
EFTU_TIM_ERR_CH4 = 4U,
EFTU_TIM_ERR_CH5 = 5U,
EFTU_TIM_ERR_CH6 = 6U,
EFTU_TIM_ERR_CH7 = 7U,
} EFTU_CCM_TimErrChnType;
/*EFTU_CCM_PROT*/
LOCAL_INLINE void EFTU_CCM_HWA_EnableProtection(EFTU_CCM_Type *pCcm)
{
pCcm->PROT |= EFTU_CCM_PROT_CLS_PROT_MASK;
}
LOCAL_INLINE void EFTU_CCM_HWA_DisableProtection(EFTU_CCM_Type *pCcm)
{
pCcm->PROT &= ~EFTU_CCM_PROT_CLS_PROT_MASK;
}
LOCAL_INLINE void EFTU_CCM_HWA_ConfigDebugMode(EFTU_CCM_Type *pCcm, EFTU_CCM_DebugMode eDebugMode)
{
pCcm->PROT = (pCcm->PROT & ~EFTU_CCM_PROT_DBG_MODE_MASK) | EFTU_CCM_PROT_DBG_MODE(eDebugMode);
}
/*EFTU_CCM_CFG*/
LOCAL_INLINE void EFTU_CCM_HWA_EnableTim0(EFTU_CCM_Type *pCcm)
{
pCcm->CFG |= EFTU_CCM_CFG_EN_TIM_MASK;
}
LOCAL_INLINE void EFTU_CCM_HWA_EnableTom0(EFTU_CCM_Type *pCcm)
{
pCcm->CFG |= EFTU_CCM_CFG_EN_TOM0_MASK;
}
LOCAL_INLINE void EFTU_CCM_HWA_EnableTom1(EFTU_CCM_Type *pCcm)
{
pCcm->CFG |= EFTU_CCM_CFG_EN_TOM1_MASK;
}
LOCAL_INLINE void EFTU_CCM_HWA_DisableTim0(EFTU_CCM_Type *pCcm)
{
pCcm->CFG &= ~EFTU_CCM_CFG_EN_TIM_MASK;
}
LOCAL_INLINE void EFTU_CCM_HWA_DisableTom0(EFTU_CCM_Type *pCcm)
{
pCcm->CFG &= ~EFTU_CCM_CFG_EN_TOM0_MASK;
}
LOCAL_INLINE void EFTU_CCM_HWA_DisableTom1(EFTU_CCM_Type *pCcm)
{
pCcm->CFG &= ~EFTU_CCM_CFG_EN_TOM1_MASK;
}
/*EFTU_CCM_CMU_CLK_CFG*/
LOCAL_INLINE void EFTU_CCM_HWA_SetClusterCmuClkSrc(EFTU_CCM_Type *pCcm, EFTU_CCM_ClusterCmuClkType eCmuClk, EFTU_CCM_ClusterCmuClkSelectType eCmuClkSelect)
{
pCcm->CMU_CLK_CFG = ((uint32_t)pCcm->CMU_CLK_CFG & ~(uint32_t)(0x3U << (uint8_t)(4 * eCmuClk)))| ((uint32_t)((uint8_t)eCmuClkSelect << (uint8_t)(4 * eCmuClk)));
}
/*EFTU_CCM_TIM_IN_SRC /EFTU_CCM_TIM_IN_SRC0 /EFTU_CCM_TIM_IN_SRC1 */
LOCAL_INLINE void EFTU_CCM_HWA_SetTimInSrc(EFTU_CCM_Type *pCcm, uint8_t u8TimChannel, EFTU_CCM_TimInSrcType eTimSrcSelect)
{
pCcm->TIM_IN_SRC = ((uint32_t)pCcm->TIM_IN_SRC & ~(uint32_t)(0x1u << u8TimChannel)) | ((uint32_t)eTimSrcSelect << u8TimChannel);
}
LOCAL_INLINE void EFTU_CCM_HWA_SetAuxInSel0_3(EFTU_CCM_Type *pCcm, uint8_t u8TimAuxIn, EFTU_CCM_AuxInSrcType eAuxInSecSrc, EFTU_CCM_AuxInChlSrcType eAuxInSecChannel)
{
pCcm->TIM_IN_SRC0 = (pCcm->TIM_IN_SRC0 & ~(uint32_t)(0x7FU << (u8TimAuxIn * 8U)))|(eAuxInSecSrc * 16U + eAuxInSecChannel) << (u8TimAuxIn * 8U);
}
LOCAL_INLINE void EFTU_CCM_HWA_SetAuxInSel4_7(EFTU_CCM_Type *pCcm, uint8_t u8TimAuxIn, EFTU_CCM_AuxInSrcType eAuxInSecSrc, EFTU_CCM_AuxInChlSrcType eAuxInSecChannel)
{
pCcm->TIM_IN_SRC1 =(pCcm->TIM_IN_SRC1 & ~(uint32_t)(0x7FU << ((u8TimAuxIn - 4U) * 8U))) | (eAuxInSecSrc * 16U + eAuxInSecChannel) << ((u8TimAuxIn - 4U) * 8U);
}
/*EFTU_CCM_TOM_OUT*/
LOCAL_INLINE uint16_t EFTU_CCM_HWA_GetTomOutlevel(EFTU_CCM_Type *pCcm)
{
return pCcm->EFTU_OUT & EFTU_CCM_EFTU_OUT_EFTU_OUT_MASK ;
}
LOCAL_INLINE uint16_t EFTU_CCM_HWA_GetTomNOutlevel(EFTU_CCM_Type *pCcm)
{
return (pCcm->EFTU_OUT & EFTU_CCM_EFTU_OUT_EFTU_OUT_T_MASK) >> EFTU_CCM_EFTU_OUT_EFTU_OUT_T_SHIFT;
}
/*EFTU_CCM_GTOM_MUX_0/EFTU_CCM_GTOM_MUX_1/EFTU_CCM_GTOM_MUX_2/EFTU_CCM_GTOM_MUX_3,only for EFTU0*/
LOCAL_INLINE void EFTU_CCM_HWA_SetGtomMux0_3(EFTU_CCM_Type *pCcm, uint8_t u8GtomAuxIn, EFTU_CCM_GtomOutSrc eGtomSrc, uint8_t u8channel)
{
pCcm->GTOM_MUX_0 &= ~(uint32_t)(0x7FU << (u8GtomAuxIn * 8U));
pCcm->GTOM_MUX_0 |= (uint32_t)(eGtomSrc << 5U | u8channel) << (u8GtomAuxIn * 8U);
}
LOCAL_INLINE void EFTU_CCM_HWA_SetGtomMux4_7(EFTU_CCM_Type *pCcm, uint8_t u8GtomAuxIn, EFTU_CCM_GtomOutSrc eGtomSrc, uint8_t u8channel)
{
pCcm->GTOM_MUX_1 &= ~(uint32_t)(0x7FU << ((u8GtomAuxIn - 4U) * 8U));
pCcm->GTOM_MUX_1 |= (uint32_t)(eGtomSrc << 5U | u8channel) << ((u8GtomAuxIn - 4U) * 8U);
}
LOCAL_INLINE void EFTU_CCM_HWA_SetGtomMux8_11(EFTU_CCM_Type *pCcm, uint8_t u8GtomAuxIn, EFTU_CCM_GtomOutSrc eGtomSrc, uint8_t u8channel)
{
pCcm->GTOM_MUX_2 &= ~(uint32_t)(0x7FU << ((u8GtomAuxIn - 8U) * 8U));
pCcm->GTOM_MUX_2 |= (uint32_t)(eGtomSrc << 5U | u8channel) << ((u8GtomAuxIn - 8U) * 8U);
}
LOCAL_INLINE void EFTU_CCM_HWA_SetGtomMux12_15(EFTU_CCM_Type *pCcm, uint8_t u8GtomAuxIn, EFTU_CCM_GtomOutSrc eGtomSrc, uint8_t u8channel)
{
pCcm->GTOM_MUX_3 &= ~(uint32_t)(0x7FU << ((u8GtomAuxIn - 12U) * 8U));
pCcm->GTOM_MUX_3 |= (uint32_t)(eGtomSrc << 5U | u8channel) << ((u8GtomAuxIn - 12U) * 8U);
}
#if (EFTU_HRPWM_SUPPORT == STD_ON)
/*EFTU_CCM_HRPWM_MUX,only for EFTU0*/
LOCAL_INLINE void EFTU_CCM_HWA_SetHrPwmSrc(EFTU_CCM_Type *pCcm, EFTU_CCM_HrPwmSrcType eHrpwmSrcStatus)
{
pCcm->HRPWM_MUX = (pCcm->HRPWM_MUX & ~EFTU_CCM_HRPWM_MUX_SWAP_CTRL_MASK)|eHrpwmSrcStatus;
}
#endif
/*EFTU_CCM_TRG_MUX/EFTU_CCM_TRG_EN0/EFTU_CCM_TRG_EN1,only for EFTU0*/
/*
#define EFTU_GTRIGGER_OUT_MASK_TOM1_CCU1_BIT0 (0x1<<0U)
#define EFTU_GTRIGGER_OUT_MASK_TOM0_CCU1_BIT1 (0x1<<1U)
#define EFTU_GTRIGGER_OUT_MASK_TOM1_CCU0_BIT2 (0x1<<2U)
#define EFTU_GTRIGGER_OUT_MASK_TOM0_CCU0_BIT3 (0x1<<3U)
#define EFTU_GTRIGGER_OUT_MASK_TIM_TRIG_BIT4 (0x1<<4U)
* */
LOCAL_INLINE void EFTU_CCM_HWA_ConfigGtomTriggerSrc(EFTU_CCM_Type *pCcm, uint8_t u8TrgMux, EFTU_CCM_GlobalTriggerOutType eGtriggerSrc)
{
pCcm->TRG_MUX &= ~(uint32_t)(0x3U << (2U * u8TrgMux));
pCcm->TRG_MUX |= (uint32_t)eGtriggerSrc << (2U * u8TrgMux);
}
LOCAL_INLINE void EFTU_CCM_HWA_ConfigGtomTriggerMask0_3(EFTU_CCM_Type *pCcm, uint8_t u8TrgMux, uint8_t u8TriggerMask)
{
pCcm->TRG_EN0 &= ~(uint32_t)(0x1FU << (u8TrgMux * 8U));
pCcm->TRG_EN0 |= (uint32_t)u8TriggerMask << (u8TrgMux * 8U);
}
LOCAL_INLINE void EFTU_CCM_HWA_ConfigGtomTriggerMask4_7(EFTU_CCM_Type *pCcm, uint8_t u8TrgMux, uint8_t u8TriggerMask)
{
pCcm->TRG_EN1 &= ~(uint32_t)(0x1FU << ((u8TrgMux - 4U) * 8U));
pCcm->TRG_EN1 |= (uint32_t)u8TriggerMask << ((u8TrgMux - 4U) * 8U);
}
/*EFTU_CCM_CMP_MUX_SEL,only for EFTU0*/
LOCAL_INLINE void EFTU_CCM_HWA_ConfigCmpSrc(EFTU_CCM_Type *pCcm, EFTU_CCM_CmpInstance eCmpInstance, uint8_t Cmp_EnMask, EFTU_CCM_CmpSrcSelectType eCmpSrc_X,
EFTU_CCM_CmpSrcSelectType eCmpSrc_Y)
{
pCcm->CMP_MUX_SEL &= ~ ((uint32_t)(0xFFU << (8U * (eCmpInstance + 2u))) | (uint32_t)(0xFU << (eCmpInstance * 8U)) |(uint32_t)(0xFU << (eCmpInstance * 8U + 4u)));
pCcm->CMP_MUX_SEL |= (uint32_t)Cmp_EnMask << (8U * (eCmpInstance + 2u)) | ((uint32_t)eCmpSrc_X << (eCmpInstance * 8U)) | ((uint32_t)eCmpSrc_Y << (eCmpInstance * 8U + 4u));
}
/*EFTU_CCM_CMP Interrupt,only for EFTU0*/
LOCAL_INLINE bool EFTU_CCM_HWA_GetCmp0IrqFlag(EFTU_CCM_Type *pCcm)
{
return (((pCcm->EINT_ST & EFTU_CCM_EINT_ST_CMP0_ERR_MASK) != 0U) ? TRUE : FALSE);
}
LOCAL_INLINE bool EFTU_CCM_HWA_GetCmp1IrqFlag(EFTU_CCM_Type *pCcm)
{
return (((pCcm->EINT_ST & EFTU_CCM_EINT_ST_CMP1_ERR_MASK) != 0U) ? TRUE : FALSE);
}
LOCAL_INLINE void EFTU_CCM_HWA_ClearCmp0IrqFlag(EFTU_CCM_Type *pCcm)
{
pCcm->EINT_ST = EFTU_CCM_EINT_ST_CMP0_ERR_MASK;
}
LOCAL_INLINE void EFTU_CCM_HWA_ClearCmp1IrqFlag(EFTU_CCM_Type *pCcm)
{
pCcm->EINT_ST = EFTU_CCM_EINT_ST_CMP1_ERR_MASK;
}
LOCAL_INLINE bool EFTU_CCM_HWA_GetCmp0IrqEnable(EFTU_CCM_Type *pCcm)
{
return (((pCcm->EINT_EN & EFTU_CCM_EINT_EN_CMP0_ENABLE_MASK) != 0U) ? TRUE : FALSE);
}
LOCAL_INLINE bool EFTU_CCM_HWA_GetCmp1IrqEnable(EFTU_CCM_Type *pCcm)
{
return (((pCcm->EINT_EN & EFTU_CCM_EINT_EN_CMP1_ENABLE_MASK) != 0U) ? TRUE : FALSE);
}
LOCAL_INLINE void EFTU_CCM_HWA_EnCmpInterrupt(EFTU_CCM_Type *pCcm, EFTU_CCM_CmpInstance eCmpInstance)
{
pCcm->EINT_EN |= EFTU_CCM_EINT_EN_CMP0_ENABLE_MASK << eCmpInstance;
}
LOCAL_INLINE uint32 EFTU_CCM_HWA_GetErrIrqFlag(EFTU_CCM_Type *pCcm)
{
return ((pCcm->EINT_ST & EFTU_CCM_EINT_ST_TIM_ERR_MASK) >> EFTU_CCM_EINT_ST_TIM_ERR_SHIFT);
}
/*EFTU_CCM_TOM_MUX*/
/*
#define EFTU_TOM_SWAP_OUT_2_3_OUT_T_0_1_BIT0 (0x1<<0U)
#define EFTU_TOM_SWAP_OUT_6_7_OUT_T_4_5_BIT1 (0x1<<1U)
#define EFTU_TOM_SWAP_OUT_10_11_OUT_T_8_9_BIT2 (0x1<<2U)
#define EFTU_TOM_SWAP_OUT_14_15_OUT_T_12_13_BIT3 (0x1<<3U)
#define EFTU_TOM_SWAP_OUT_4_7_OUT_T_0_3_BIT4 (0x1<<4U)
#define EFTU_TOM_SWAP_OUT12_15_OUT_T_8_11_BIT5 (0x1<<5U)
* */
LOCAL_INLINE void EFTU_CCM_HWA_SwapTomOut(EFTU_CCM_Type *pCcm, uint8_t u8OutSwapMask)
{
pCcm->TOM_MUX = ( pCcm->TOM_MUX & ~EFTU_CCM_TOM_MUX_TOM_SWAP_MASK)|EFTU_CCM_TOM_MUX_TOM_SWAP(u8OutSwapMask);
}
LOCAL_INLINE void EFTU_CCM_HWA_SetTom0ch0TrigIn(EFTU_CCM_Type *pCcm, EFTU_CCM_TomChTrigInType eChSrc)
{
pCcm->TOM_MUX |= EFTU_CCM_TOM_MUX_TOM_MUX_CTRL(eChSrc);
}
/*EFTU_CCM_SPEC_LOCK,only for EFTU0*/
LOCAL_INLINE void EFTU_CCM_HWA_SpecUnLock(EFTU_CCM_Type *pCcm)
{
pCcm->SPEC_LOCK = 0xBEEFCAFE;
}
LOCAL_INLINE void EFTU_CCM_HWA_SpecLock(EFTU_CCM_Type *pCcm)
{
pCcm->SPEC_LOCK = 0x5AFECAFE;
}
/*EFTU_CCM_EINT_EN,EFTU_CCM_TIM_EINT_EN0/EFTU_CCM_TIM_EINT_EN2*/
/*
#define EFTU_TIM_ERROR_EN_BIT0 (0x1<<0U)
#define EFTU_TIM_ERROR_EN_BIT1 (0x1<<1U)
#define EFTU_TIM_ERROR_EN_BIT2 (0x1<<2U)
#define EFTU_TIM_ERROR_EN_BIT3 (0x1<<3U)
#define EFTU_TIM_ERROR_EN_BIT4 (0x1<<4U)
#define EFTU_TIM_ERROR_EN_BIT5 (0x1<<5U)
*/
LOCAL_INLINE void EFTU_CCM_HWA_EnTimChnErrInterupt0_3(EFTU_CCM_Type *pCcm, uint8_t u8TimChannel, uint8_t u8ErrEnMask)
{
pCcm->TIM_EINT_EN0 |= (uint32_t)u8ErrEnMask << (u8TimChannel * 8U);
}
LOCAL_INLINE void EFTU_CCM_HWA_EnTimChnErrInterupt4_7(EFTU_CCM_Type *pCcm, uint8_t u8TimChannel, uint8_t u8ErrEnMask)
{
pCcm->TIM_EINT_EN1 |= (uint32_t)u8ErrEnMask << ((u8TimChannel - 4U) * 8U);
}
LOCAL_INLINE uint32 EFTU_CCM_HWA_GetTimErrEnable0_3(EFTU_CCM_Type *pCcm)
{
return pCcm->TIM_EINT_EN0 & EFTU_CCM_TIM_EINT_EN0_MASK;
}
LOCAL_INLINE uint32 EFTU_CCM_HWA_GetTimErrEnable4_7(EFTU_CCM_Type *pCcm)
{
return pCcm->TIM_EINT_EN1 & EFTU_CCM_TIM_EINT_EN1_MASK;
}
LOCAL_INLINE uint32 EFTU_CCM_HWA_GetTimErrFlag0_3(EFTU_CCM_Type *pCcm)
{
return pCcm->TIM_EINT_ST0 & EFTU_CCM_TIM_EINT_ST0_MASK;
}
LOCAL_INLINE uint32 EFTU_CCM_HWA_GetTimErrFlag4_7(EFTU_CCM_Type *pCcm)
{
return pCcm->TIM_EINT_ST1 & EFTU_CCM_TIM_EINT_ST1_MASK;
}
LOCAL_INLINE void EFTU_CCM_HWA_ClearTimErrFlag0_3(EFTU_CCM_Type *pCcm, uint32 u32ErrMask)
{
pCcm->TIM_EINT_ST0 &= u32ErrMask;
}
LOCAL_INLINE void EFTU_CCM_HWA_ClearTimErrFlag4_7(EFTU_CCM_Type *pCcm, uint32 u32ErrMask)
{
pCcm->TIM_EINT_ST1 &= u32ErrMask;
}
#if (EFTU_CCM_DMA_REQ_ONE_INSTANCE == 6U)
/*EFTU_CCM_DMA_SRC01/EFTU_CCM_DMA_SRC23/EFTU_CCM_DMA_SRC45*/
LOCAL_INLINE void EFTU_CCM_HWA_ConfigDmaSrc0_1(EFTU_CCM_Type *pCcm, uint8_t u8DmaChannel, uint8_t u8DmaReqMask)
{
pCcm->DMA_SRC01 &= ~(uint32_t)(EFTU_CCM_DMA_SRC01_REQ_0_MASK << (u8DmaChannel * EFTU_CCM_DMA_SRC01_REQ_1_SHIFT));
pCcm->DMA_SRC01 |= (uint32_t)u8DmaReqMask << (u8DmaChannel * EFTU_CCM_DMA_SRC01_REQ_1_SHIFT);
}
LOCAL_INLINE void EFTU_CCM_HWA_ConfigDmaSrc2_3(EFTU_CCM_Type *pCcm, uint8_t u8DmaChannel, uint8_t u8DmaReqMask)
{
pCcm->DMA_SRC23 &= ~(uint32_t)(EFTU_CCM_DMA_SRC01_REQ_0_MASK << ((u8DmaChannel - 2U) * EFTU_CCM_DMA_SRC01_REQ_1_SHIFT));
pCcm->DMA_SRC23 |= (uint32_t)u8DmaReqMask << ((u8DmaChannel - 2U) * EFTU_CCM_DMA_SRC01_REQ_1_SHIFT);
}
LOCAL_INLINE void EFTU_CCM_HWA_ConfigDmaSrc4_5(EFTU_CCM_Type *pCcm, uint8_t u8DmaChannel, uint8_t u8DmaReqMask)
{
pCcm->DMA_SRC45 &= ~(uint32_t)(EFTU_CCM_DMA_SRC01_REQ_0_MASK << ((u8DmaChannel - 4U) * EFTU_CCM_DMA_SRC01_REQ_1_SHIFT));
pCcm->DMA_SRC45 |= (uint32_t)u8DmaReqMask << ((u8DmaChannel - 4U) * EFTU_CCM_DMA_SRC01_REQ_1_SHIFT);
}
#elif (EFTU_CCM_DMA_REQ_ONE_INSTANCE == 16U)
LOCAL_INLINE void EFTU_CCM_HWA_ConfigDmaSrc(EFTU_CCM_Type *pCcm, uint8_t u8DmaChannel, uint8_t u8DmaReqMask)
{
pCcm->DMA_SRC[(uint8_t)(u8DmaChannel>>1u)] = ((pCcm->DMA_SRC[(uint8_t)(u8DmaChannel>>1u)]) & ((~(uint32_t)(EFTU_CCM_DMA_SRC_REQ_0_MASK << (((uint8_t)u8DmaChannel&0x1U) * EFTU_CCM_DMA_SRC_REQ_1_SHIFT)))))|
(((uint32_t)u8DmaReqMask << ((u8DmaChannel&0x1U) * EFTU_CCM_DMA_SRC_REQ_1_SHIFT)));
}
#endif /*EFTU_CCM_DMA_REQ_ONE_INSTANCE*/
#endif /*EFTU_INSTANCE_COUNT*/
#endif /* HWA_INCLUDE_HWA_EFTU_CCM_H_ */