📄 bldczc.h
字号:
/*******************************************************************************
* Freescale Inc.
* (c) Copyright 2005 Freescale, Inc.
* ALL RIGHTS RESERVED.
*******************************************************************************/
/*******************************************************************************
* FILE NAME : BldcZC.h
*
* DESCRIPTION : Brushless DC Zero Crossing algorithms
*******************************************************************************/
#ifndef _BLDCZC_H_
#define _BLDCZC_H_
/* DEFINITION_START */
typedef int Result;
typedef Frac16 bldczc_fU_ZC3Phase[3]; /* 3 phase voltage for Zero Crossing measuring */
/* variables definitions */
typedef struct
{
UWord16 T_Cmt0; // Time of the last commutation
UWord16 T_Next; // Time of next event, to be loaded to Event timer compare register
UWord16 T_ZCros; // Time of last Zero Cross
UWord16 T_ZCros0;
UWord16 Per_Toff;
UWord16 Per_CmtPreset;
UWord16 Per_ZCros;
UWord16 Per_ZCros0;
UWord16 Per_ZCrosFlt;
UWord16 Per_HlfCmt;
} bldczc_sTimes; /* Bldc control Time dedicated variables */
typedef struct
{
unsigned int ZC_ComputFlag; /* Zero Crossing Computed Flag */
} bldczc_uCmdComput; /* BldcZC Comput functions Commands,
Requests, Status Flags variable */
typedef struct
{
bldczc_uCmdComput Cmd_Comput; /* Comput Command variable */
Word16 Coef_CmtPrecompLShft; /* Commutation time precomputation Coeficient Range */
Frac16 Coef_CmtPrecompFrac; /* Commutation time precomputation Coeficient */
Frac16 Coef_HlfCmt; /* Half commutation Coeficient */
Frac16 Coef_Toff; /* Toff Zero Crossing Coeficient */
UWord16 Const_PerProcCmt; /* Time of motor coil reverse current */
UWord16 Max_PerCmt; /* Maximal Commutation Period */
} bldczc_sStateComput; /* Bldc Timeout state Variables */
typedef struct
{
unsigned int CmtDone_CmtServ_RqFlag; /* Commutation Done CmtServ Request*/
unsigned int Cmt_DrvRqFlag; /* Commutation Driver Request Flag */
unsigned int DIRFlag; /* Motor Direction Flag */
} bldczc_uCmdCmt; /* BldcZC Cmt functions Commands,
Requests, Status Flags variable */
typedef struct
{
bldczc_uCmdCmt Cmd_Cmt; /* Commutation Command variable */
UWord16 Step_Cmt; /* Motor Commutation Step */
} bldczc_sStateCmt; /* Bldc Commutation state Variables */
typedef struct
{
unsigned int ZCrosInt_EnblFlag; /* Zero Crossing Enable Flag */
unsigned int ZC_GetFlag; /* Zero Crossing Get Flag */
unsigned int ZC_ToffFlag; /* Zero Crossing off Time Flag */
unsigned int ZCInpSet_DrvRqFlag; /* Set ZC Input Driver Request Flag */
unsigned int Expect_ZCInp_PositivFlag;/* Expected Zero Crossing Input Positive Flag */
} bldczc_uCmdZCros; /* BldcZC Zero Crossing functions Commands,
Requests, Status Flags variable */
typedef struct
{
bldczc_uCmdZCros Cmd_ZCros; /* Zero Crossing Command variable */
Word16 Cntr_ZCrosOK; /* Counter OK Zero Crossing commutations */
Word16 Min_ZCrosOKStart; /* Minimal OK Zero Crossings to for Start mode */
Word16 Cntr_ZCrosErr; /* Counter succesive Error Zero Crossing commutations */
Word16 Max_ZCrosErr; /* Maximal Error Zero Crossing commutations */
UWord16 Index_ZC_Phase; /* Zero Crossing phase Index */
} bldczc_sStateZCros; /* Zero state Variables */
typedef struct
{
unsigned int Timer_DrvRqFlag; /* Setting Timer Driver Request Flag */
unsigned int EndStart_HndlrCmdFlag; /* End Start Mode Hndlr Command Flag*/
unsigned int StartMode_HndlrFlag; /* Start Mode Flag */
unsigned int Cmt_TimedFlag; /* Commutation Timed Flag */
unsigned int ZCToff_TimedFlag; /* Zero Crossing Time off Timed Flag */
unsigned int MaxZCErr_HndlrCmdFlag; /* Maximal successive Zero Crossing Errors >= Max_ZCrosErr Command Flag */
} bldczc_uCmdGeneral; /* BldcZC General functions Commands,
Requests, Status Flags variable */
typedef struct
{
bldczc_uCmdGeneral Cmd_General; /* General Command variable */
} bldczc_sStateGeneral; /* Bldc Timeout and Handler state Variables */
typedef struct
{
bldczc_sStateComput State_Comput;
bldczc_sStateCmt State_Cmt;
bldczc_sStateZCros State_ZCros;
bldczc_sStateGeneral State_General;
} bldczc_sStates;
typedef enum
{
BLDCZC_SET_DEFAULT,
BLDCZC_DO_NOT_EFFECT
} bldczc_eModeInit;
typedef enum
{
BLDCZC_STARTING_M,
BLDCZC_RUNNING_M
} bldczc_eStartingMode;
typedef enum
{
BLDCZC_ACB,
BLDCZC_ABC
} bldczc_eDirection;
typedef struct
{
UWord16 *pStateCmt;
} bldczc_sZCrosInit; /* Bldc Comput Init Variables */
typedef struct
{
UWord16 Const_PerProcCmt; /* Time of motor coil reverse current */
UWord16 Max_PerCmt; /* Maximal Commutation Period */
bldczc_eModeInit Mode_CoefInit; /* Set_Default / DoNotEffect Coef variables */
Frac16 Coef_CmtPrecompLShft; /* Commutation time precomputation Coeficient Range */
Frac16 Coef_CmtPrecompFrac; /* Commutation time precomputation Coeficient */
Frac16 Coef_HlfCmt; /* Half commutation Coeficient */
Frac16 Coef_Toff; /* Init Zero Crossing off time Coeficient */
bldczc_eModeInit Mode_StateComputInit; /* Set_Default/DoNotEffect State_Comput variables at initialization */
bldczc_eModeInit Mode_TimesInit; /* Set_Default variables Times from Per_CmtStart / DoNotEffect */
UWord16 Per_CmtStart; /* Start Commutation periode */
UWord16 Per_ToffStart; /* period zero crossing Toff at start */
} bldczc_sComputInit; /* Bldc Comput Init Variables */
/* Functions Declarations */
Result bldczcHndlrInit ( bldczc_sStates *pStates, bldczc_sTimes *pTimes,
UWord16 T_Actual,
UWord16 Start_PerProcCmt,
bldczc_eStartingMode Starting_Mode );
Result bldczcTimeoutIntAlg ( bldczc_sStates *pStates, bldczc_sTimes *pTimes,
UWord16 T_Actual, Frac16 U_ZCPhaseX);
Result bldczcHndlrStop ( bldczc_sStates *pStates );
Result bldczcComputInit ( bldczc_sStateComput *pState_Comput,
bldczc_sTimes *pTimes,
UWord16 T_Actual,
bldczc_sComputInit *pComputInit );
Result bldczcCmtInit ( bldczc_sStateCmt *pStateCmt,
UWord16 Start_Step_Cmt,
bldczc_eDirection Direction );
Result bldczcCmtServ ( bldczc_sStateCmt *pStateCmt );
Result bldczcZCrosInit ( bldczc_sStateZCros *pState_ZCros,
bldczc_sStateCmt *pStateCmt,
Word16 Min_ZCrosOKStart_Ini,
Word16 Max_ZCrosErr_Ini );
Result bldczcZCrosEdgeIntAlg ( bldczc_sStates *pStates, bldczc_sTimes *pTimes, UWord16 T_ZCSample );
/* DEFINITION_END */
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -