HwA_Flagchip_FC7240_V2/Inc/Hwa_eftu_spe.h

334 lines
8.5 KiB
C

/*
* Hwa_eftu_spe.h
*
* Created on: 2025年12月3日
* Author: qxw0076
*/
#ifndef TEMPLATE_HWA_INCLUDE_HWA_EFTU_SPE_H_
#define TEMPLATE_HWA_INCLUDE_HWA_EFTU_SPE_H_
#include "device_header.h"
#if (EFTU_INSTANCE_COUNT > 0U) && (EFTU_SPE_SUPPORT == STD_ON) && defined(EFTU_SPE_SUPPORT)
typedef enum
{
EFTU_SPE_INSTANCE_0 = 0U,
EFTU_SPE_INSTANCE_1 = 1U,
} EFTU_SPE_InstanceType;
typedef enum
{
EFTU_SPE_UPDATETRIGGER_NIPD = 0U,
EFTU_SPE_UPDATETRIGGER_TOM = 1U,
EFTU_SPE_UPDATETRIGGER_NIPD_DELAY = 2U,
EFTU_SPE_UPDATETRIGGER_TOM_DELAY = 3U,
} EFTU_SPE_UpdateTriggerType;
typedef enum
{
EFTU_SPE_EXUPDATETRIGGER_CH6_CM0 = 0U,
EFTU_SPE_EXUPDATETRIGGER_CH7_CM0 = 1U,
EFTU_SPE_EXUPDATETRIGGER_CH4_CM0 = 2U,
EFTU_SPE_EXUPDATETRIGGER_CH5_CM0 = 3U,
} EFTU_SPE_UpdateExTriggerType;
typedef enum
{
EFTU_SPE_REFTYPE_00 = 0U,
EFTU_SPE_REFTYPE_01 = 1U,
EFTU_SPE_REFTYPE_10 = 2U,
EFTU_SPE_REFTYPE_11 = 3U,
} EFTU_SPE_RefSelectType;
typedef enum
{
EFTU_SPE_OUT_REF_H = 0U,
EFTU_SPE_OUT_REF_L = 1U,
EFTU_SPE_OUT_CONST_0 = 2U,
EFTU_SPE_OUT_CONST_1 = 3U,
} EFTU_SPE_PwmOutSelect;
typedef enum
{
EFTU_SPE_HALL_INPUT_0 = 0u,
EFTU_SPE_HALL_INPUT_1 = 1u,
} EFTU_SPE_HallLevel;
typedef struct
{
EFTU_SPE_HallLevel eHallA_level;
EFTU_SPE_HallLevel eHallB_level;
EFTU_SPE_HallLevel eHallC_level;
uint8 u8SpePtr;
uint8 u8SpePtrBwd;
} EFTU_SPE_HallPattern;
typedef struct
{
EFTU_SPE_PwmOutSelect ePwmoutpattern0;
EFTU_SPE_PwmOutSelect ePwmoutpattern1;
EFTU_SPE_PwmOutSelect ePwmoutpattern2;
EFTU_SPE_PwmOutSelect ePwmoutpattern3;
EFTU_SPE_PwmOutSelect ePwmoutpattern4;
EFTU_SPE_PwmOutSelect ePwmoutpattern5;
} EFTU_SPE_OutPattern;
typedef enum
{
CCM_CLK_RES_0 = 0U,
CCM_CLK_RES_1 = 1U,
CCM_CLK_RES_2 = 2U,
CCM_CLK_RES_3 = 3U,
CCM_CLK_RES_4 = 4U,
CCM_CLK_RES_5 = 5U,
CCM_CLK_RES_6 = 6U,
CCM_CLK_RES_7 = 7U,
} EFTU_SPE_DelayClockSrc;
typedef enum
{
DTM_AUX_IN0 = 0U,
DTM_AUX_IN1 = 1U,
DTM_AUX_IN2 = 2U,
DTM_AUX_IN3 = 3U,
DTM_AUX_IN4 = 4U,
DTM_AUX_IN5 = 5U,
DTM_AUX_IN6 = 6U,
DTM_AUX_IN7 = 7U,
} EFTU_SPE_FastShutSrc;
typedef enum
{
EFTU_SPE_PAT0 = 0U,
EFTU_SPE_PAT1 = 1U,
EFTU_SPE_PAT2 = 2U,
EFTU_SPE_PAT3 = 3U,
EFTU_SPE_PAT4 = 4U,
EFTU_SPE_PAT5 = 5U,
EFTU_SPE_PAT6 = 6U,
EFTU_SPE_PAT7 = 7U,
} EFTU_SPE_OutPatternType;
typedef enum
{
EFTU_SPE_OUT_PAT_PTR = 0U,
EFTU_SPE_OUT_PPAT_PTR_BWD = 1U,
EFTU_SPE_OUT_PAT_6 = 2U,
EFTU_SPE_OUT_PAT_7 = 3U,
} EFTU_SPE_ControlCmd;
LOCAL_INLINE void EFTU_SPE_ConfigPAT(EFTU_SPE_Type *const pSpe, uint32 u32HallPta)
{
pSpe->HALL_IN_PAT = u32HallPta;
}
LOCAL_INLINE void EFTU_SPE_ConfigOutPwm(EFTU_SPE_Type *const pSpe, uint32 u32OutPwm, uint8 u8Channel)
{
pSpe->PWM_OUT_PAT[u8Channel] = u32OutPwm;
}
LOCAL_INLINE void EFTU_SPE_ConfigOutputDirect(EFTU_SPE_Type *const pSpe, uint32 u32Outpattern)
{
pSpe->PWM_OUT_CTRL = u32Outpattern;
}
LOCAL_INLINE void EFTU_SPE_ConfigNewInputIrq(EFTU_SPE_Type *const pSpe, boolean bEnable)
{
if (bEnable == true)
{
pSpe->IRQ_EN |= EFTU_SPE_IRQ_EN_NIPD_EN_MASK;
}
else
{
pSpe->IRQ_EN &= ~EFTU_SPE_IRQ_EN_NIPD_EN_MASK;
}
}
LOCAL_INLINE void EFTU_SPE_ConfigDircIrq(EFTU_SPE_Type *const pSpe, boolean bEnable)
{
if (bEnable == true)
{
pSpe->IRQ_EN |= EFTU_SPE_IRQ_EN_DCHG_EN_MASK;
}
else
{
pSpe->IRQ_EN &= ~EFTU_SPE_IRQ_EN_DCHG_EN_MASK;
}
}
LOCAL_INLINE void EFTU_SPE_ConfigEipdIrq(EFTU_SPE_Type *const pSpe, boolean bEnable)
{
if (bEnable == true)
{
pSpe->IRQ_EN |= EFTU_SPE_IRQ_EN_EIPD_EN_MASK;
}
else
{
pSpe->IRQ_EN &= ~EFTU_SPE_IRQ_EN_EIPD_EN_MASK;
}
}
LOCAL_INLINE void EFTU_SPE_ConfigBieIrq(EFTU_SPE_Type *const pSpe, boolean bEnable)
{
if (bEnable == true)
{
pSpe->IRQ_EN |= EFTU_SPE_IRQ_EN_BIE_EN_MASK;
}
else
{
pSpe->IRQ_EN &= ~EFTU_SPE_IRQ_EN_BIE_EN_MASK;
}
}
LOCAL_INLINE void EFTU_SPE_ConfigRcmpIrq(EFTU_SPE_Type *const pSpe, boolean bEnable)
{
if (bEnable == true)
{
pSpe->IRQ_EN |= EFTU_SPE_IRQ_EN_RCMP_EN_MASK;
}
else
{
pSpe->IRQ_EN &= ~EFTU_SPE_IRQ_EN_RCMP_EN_MASK;
}
}
LOCAL_INLINE uint8 EFTU_SPE_GetIrqFlag(EFTU_SPE_Type *const pSpe)
{
return (uint8)((pSpe->IRQ_ST & EFTU_SPE_IRQ_ST_MASK));
}
LOCAL_INLINE uint8 EFTU_SPE_GetIrqnbleBit(EFTU_SPE_Type *const pSpe)
{
return (uint8)((pSpe->IRQ_EN & EFTU_SPE_IRQ_EN_MASK));
}
LOCAL_INLINE void EFTU_SPE_ClearIrqMask(EFTU_SPE_Type *const pSpe, uint32 u32IrqMask)
{
pSpe->IRQ_ST = u32IrqMask;
}
LOCAL_INLINE void EFTU_SPE_SetCmpcntValue(EFTU_SPE_Type *const pSpe, uint32 u32CmpValue)
{
pSpe->REV_CMP = u32CmpValue;
}
LOCAL_INLINE void EFTU_SPE_SetIputcntValue(EFTU_SPE_Type *const pSpe, uint32 u32RevValue)
{
pSpe->REV_CNT = u32RevValue;
}
LOCAL_INLINE void EFTU_SPE_SoftWareTrigger(EFTU_SPE_Type *const pSpe)
{
pSpe->CMD |= EFTU_SPE_CMD_SW_UPD_TRG_MASK;
}
LOCAL_INLINE void EFTU_SPE_SetCmd(EFTU_SPE_Type *const pSpe, EFTU_SPE_ControlCmd eControlcmd)
{
pSpe->CMD = ((pSpe->CMD & ~EFTU_SPE_CMD_CTRL_CMD_MASK) | (uint32)eControlcmd);
}
LOCAL_INLINE void EFTU_SPE_SetFastshutSrc(EFTU_SPE_Type *const pSpe, EFTU_SPE_FastShutSrc eFastShut)
{
pSpe->CTRL2 = ((pSpe->CTRL2 & ~EFTU_SPE_CTRL2_FSOI_SEL_MASK) | EFTU_SPE_CTRL2_FSOI_SEL(eFastShut));
}
LOCAL_INLINE void EFTU_SPE_SetDelayClkSrc(EFTU_SPE_Type *const pSpe, EFTU_SPE_DelayClockSrc eClockSrc)
{
pSpe->CTRL2 = ((pSpe->CTRL2 & ~EFTU_SPE_CTRL2_DTRG_CLK_SEL_MASK) |
EFTU_SPE_CTRL2_DTRG_CLK_SEL(eClockSrc));
}
LOCAL_INLINE void EFTU_SPE_SetDelaycount(EFTU_SPE_Type *const pSpe, uint8 u8cnt)
{
pSpe->CTRL2 = ((pSpe->CTRL2 & ~EFTU_SPE_CTRL2_DTRG_VAL_MASK) | EFTU_SPE_CTRL2_DTRG_VAL(u8cnt));
}
LOCAL_INLINE void EFTU_SPE_SetPatPtrBwd(EFTU_SPE_Type *const pSpe, EFTU_SPE_OutPatternType ePtrBwd)
{
pSpe->CTRL2 = ((pSpe->CTRL2 & ~EFTU_SPE_CTRL2_PTR_BWD_MASK) | EFTU_SPE_CTRL2_PTR_BWD(ePtrBwd));
}
LOCAL_INLINE void EFTU_SPE_Enable(EFTU_SPE_Type *const pSpe)
{
pSpe->CTRL |= EFTU_SPE_CTRL_EN_MASK;
}
LOCAL_INLINE void EFTU_SPE_Disable(EFTU_SPE_Type *const pSpe)
{
pSpe->CTRL &= ~EFTU_SPE_CTRL_EN_MASK;
}
LOCAL_INLINE void EFTU_SPE_EnableHallInput(EFTU_SPE_Type *const pSpe)
{
pSpe->CTRL |= EFTU_SPE_CTRL_SIE_MASK;
}
LOCAL_INLINE void EFTU_SPE_DisableHallInput(EFTU_SPE_Type *const pSpe)
{
pSpe->CTRL &= ~EFTU_SPE_CTRL_SIE_MASK;
}
LOCAL_INLINE void EFTU_SPE_SetUpdateTrigger(EFTU_SPE_Type *const pSpe,
EFTU_SPE_UpdateTriggerType eUpdateTrigger)
{
pSpe->CTRL = ((pSpe->CTRL & ~EFTU_SPE_CTRL_TRG_SEL_MASK) | EFTU_SPE_CTRL_TRG_SEL(eUpdateTrigger));
}
LOCAL_INLINE void EFTU_SPE_SetExUpdateTrigger(EFTU_SPE_Type *const pSpe,
EFTU_SPE_UpdateExTriggerType eExUpdateTrigger)
{
pSpe->CTRL = ((pSpe->CTRL & ~EFTU_SPE_CTRL_TRG_ESEL_MASK) |
EFTU_SPE_CTRL_TRG_ESEL(eExUpdateTrigger));
}
LOCAL_INLINE void EFTU_SPE_SetPatPtr(EFTU_SPE_Type *const pSpe, EFTU_SPE_OutPatternType ePtr)
{
pSpe->CTRL = ((pSpe->CTRL & ~EFTU_SPE_CTRL_PAT_PTR_MASK) | EFTU_SPE_CTRL_PAT_PTR(ePtr));
}
LOCAL_INLINE void EFTU_SPE_EnableFastShut(EFTU_SPE_Type *const pSpe)
{
pSpe->CTRL |= EFTU_SPE_CTRL_FSOM_MASK;
}
LOCAL_INLINE void EFTU_SPE_DisableFastShut(EFTU_SPE_Type *const pSpe)
{
pSpe->CTRL &= ~EFTU_SPE_CTRL_FSOM_MASK;
}
LOCAL_INLINE void EFTU_SPE_ConfigAip(EFTU_SPE_Type *const pSpe, uint8 u8Aip)
{
pSpe->CTRL = ((pSpe->CTRL & ~EFTU_SPE_CTRL_AIP_MASK) | EFTU_SPE_CTRL_AIP(u8Aip));
}
LOCAL_INLINE void EFTU_SPE_ConfigPip(EFTU_SPE_Type *const pSpe, uint8 u8Pip)
{
pSpe->CTRL = ((pSpe->CTRL & ~EFTU_SPE_CTRL_PIP_MASK) | EFTU_SPE_CTRL_PIP(u8Pip));
}
LOCAL_INLINE void EFTU_SPE_ConfigRefSel(EFTU_SPE_Type *const pSpe, EFTU_SPE_RefSelectType eRefSel)
{
pSpe->CTRL = ((pSpe->CTRL & ~EFTU_SPE_CTRL_PIP_MASK) | EFTU_SPE_CTRL_REF_SEL(eRefSel));
}
LOCAL_INLINE void EFTU_SPE_ConfigShutoffLevel(EFTU_SPE_Type *const pSpe, uint8 u8Shutlevel)
{
pSpe->CTRL = ((pSpe->CTRL & ~EFTU_SPE_CTRL_FSOL_MASK) | EFTU_SPE_CTRL_FSOL(u8Shutlevel));
}
LOCAL_INLINE uint8 EFTU_SPE_GetNip(EFTU_SPE_Type *const pSpe)
{
return (uint8)((pSpe->CTRL & EFTU_SPE_CTRL_NIP_MASK) >> EFTU_SPE_CTRL_NIP_SHIFT);
}
LOCAL_INLINE uint32 EFTU_SPE_GetHallPattern(EFTU_SPE_Type *const pSpe)
{
return pSpe->HALL_IN_PAT;
}
#endif /* (EFTU_INSTANCE_COUNT > 0U) && (EFTU_SPE_SUPPORT == STD_ON) && defined(EFTU_SPE_SUPPORT)*/
#endif /* TEMPLATE_HWA_INCLUDE_HWA_EFTU_SPE_H_ */