334 lines
8.5 KiB
C
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_ */
|