⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bldczc.h

📁 菲斯卡尔无传感器无刷控制方案。具体说明文档和程序都在压缩包内。
💻 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 + -