?? bldcdrv.c
字號:
/*****************************************************************************
*
* bldcdrv.c - Brushless DC Motor driver implementation
*
*****************************************************************************/
#include "types.h"
#include "arch.h"
#include "mc.h"
#include "bldcdrv.h"
#include "bldc.h"
/* the following constant declarations have been moved to const.h */
/*****************************************************************************/
/** Commutation table for EMV Motor Kit and independed PWM mode **/
/*****************************************************************************/
const mc_tPWMSignalMask bldcCommutationTableInd[8] = { MC_PWM_ALL_SIGNALS,
(MC_PWM_SIGNAL_5 | MC_PWM_SIGNAL_3 | MC_PWM_SIGNAL_2 | MC_PWM_SIGNAL_0),
(MC_PWM_SIGNAL_4 | MC_PWM_SIGNAL_3 | MC_PWM_SIGNAL_1 | MC_PWM_SIGNAL_0),
(MC_PWM_SIGNAL_5 | MC_PWM_SIGNAL_4 | MC_PWM_SIGNAL_3 | MC_PWM_SIGNAL_0),
(MC_PWM_SIGNAL_5 | MC_PWM_SIGNAL_4 | MC_PWM_SIGNAL_2 | MC_PWM_SIGNAL_1),
(MC_PWM_SIGNAL_5 | MC_PWM_SIGNAL_2 | MC_PWM_SIGNAL_1 | MC_PWM_SIGNAL_0),
(MC_PWM_SIGNAL_4 | MC_PWM_SIGNAL_3 | MC_PWM_SIGNAL_2 | MC_PWM_SIGNAL_1),
MC_PWM_ALL_SIGNALS
};
#ifdef PWM_SWAP_1 //if the swap operations are allowed
/*****************************************************************************/
/** Commutation table for EMV Motor Kit and complementary PWM mode **/
/*****************************************************************************/
const pwm_sChannelControl bldcCommutationTableComp[8] = {
{ MC_PWM_ALL_SIGNALS, PWM_ZERO_MASK },
{ (MC_PWM_SIGNAL_3 | MC_PWM_SIGNAL_2), (PWM_SWAP_1 | PWM_SWAP_0) },
{ (MC_PWM_SIGNAL_1 | MC_PWM_SIGNAL_0), (PWM_SWAP_2 | PWM_SWAP_0) },
{ (MC_PWM_SIGNAL_5 | MC_PWM_SIGNAL_4), (PWM_SWAP_0) },
{ (MC_PWM_SIGNAL_5 | MC_PWM_SIGNAL_4), (PWM_SWAP_2 | PWM_SWAP_1) },
{ (MC_PWM_SIGNAL_1 | MC_PWM_SIGNAL_0), (PWM_SWAP_1) },
{ (MC_PWM_SIGNAL_3 | MC_PWM_SIGNAL_2), (PWM_SWAP_2) },
{ MC_PWM_ALL_SIGNALS, PWM_ZERO_MASK },
};
#endif
/*****************************************************************************/
/** Commutation table for sensorless control **/
/** EMV,LV,HV Motor Kits and independed PWM mode **/
/*****************************************************************************/
const mc_tPWMSignalMask BldcZC_Cmt_StepTable[] = {
(MC_PWM_SIGNAL_5 | MC_PWM_SIGNAL_4 | MC_PWM_SIGNAL_2 | MC_PWM_SIGNAL_1),
(MC_PWM_SIGNAL_5 | MC_PWM_SIGNAL_2 | MC_PWM_SIGNAL_1 | MC_PWM_SIGNAL_0),
(MC_PWM_SIGNAL_5 | MC_PWM_SIGNAL_3 | MC_PWM_SIGNAL_2 | MC_PWM_SIGNAL_0),
(MC_PWM_SIGNAL_5 | MC_PWM_SIGNAL_4 | MC_PWM_SIGNAL_3 | MC_PWM_SIGNAL_0),
(MC_PWM_SIGNAL_4 | MC_PWM_SIGNAL_3 | MC_PWM_SIGNAL_1 | MC_PWM_SIGNAL_0),
(MC_PWM_SIGNAL_4 | MC_PWM_SIGNAL_3 | MC_PWM_SIGNAL_2 | MC_PWM_SIGNAL_1)
};
#if 0 //Debug 02.11.26 begin
/*****************************************************************************/
/** Commutation table for sensorless control **/
/** EMV,LV,HV Motor Kits and complementary PWM mode **/
/*****************************************************************************/
const pwm_sChannelControl BldcZC_Cmt_StepTableComp [MAX_STEP_CMT+1] = {
{ (MC_PWM_SIGNAL_5 | MC_PWM_SIGNAL_4), (PWM_SWAP_2 | PWM_SWAP_1) },
{ (MC_PWM_SIGNAL_1 | MC_PWM_SIGNAL_0), (PWM_SWAP_1) },
{ (MC_PWM_SIGNAL_3 | MC_PWM_SIGNAL_2), (PWM_SWAP_1 | PWM_SWAP_0) },
{ (MC_PWM_SIGNAL_5 | MC_PWM_SIGNAL_4), (PWM_SWAP_0) },
{ (MC_PWM_SIGNAL_1 | MC_PWM_SIGNAL_0), (PWM_SWAP_2 | PWM_SWAP_0) },
{ (MC_PWM_SIGNAL_3 | MC_PWM_SIGNAL_2), (PWM_SWAP_2) }
#endif //Debug 02.11.26 end };
/**************************************************************************************/
/** Zero Crossing tables for sensorless Zero Crossing EMV,LV,HV Motor Kits PWM mode **/
/** for (level)Zero Crosing bldczc algorithms (used with HW comparator Zero Crossing)**/
/**************************************************************************************/
const UWord16 Mask_ZCInpTab[MAX_STEP_CMT+1] = { MASK_ZC_PHASE_C, MASK_ZC_PHASE_A, MASK_ZC_PHASE_B,\
MASK_ZC_PHASE_C, MASK_ZC_PHASE_A, MASK_ZC_PHASE_B };
const UWord16 Expect_ZCInp_Tab [ MAX_STEP_CMT+1 ] [2] = \
{ {ZCINP_PHASE_C_Lev1,ZCINP_PHASE_C_Lev0},{ZCINP_PHASE_A_Lev0,ZCINP_PHASE_A_Lev1},\
{ZCINP_PHASE_B_Lev1,ZCINP_PHASE_B_Lev0},{ZCINP_PHASE_C_Lev0,ZCINP_PHASE_C_Lev1},\
{ZCINP_PHASE_A_Lev1,ZCINP_PHASE_A_Lev0},{ZCINP_PHASE_B_Lev0,ZCINP_PHASE_B_Lev1} };
/*************************************************************************************/
/** Zero Crossing tables for sensorless Zero Crossing EMV,LV,HV Motor Kits PWM mode **/
/** for edge Zero Crosing bldczc algorithms (used with ADC Zero Crossing) **/
/*************************************************************************************/
const UWord16 SetADC_ZCInp_Tab [ MAX_STEP_CMT+1 ] [ 2 ] =
{ {ADCZC_PHASE_C_NEG_POS,ADCZC_PHASE_C_POS_NEG},{ADCZC_PHASE_A_POS_NEG,ADCZC_PHASE_A_NEG_POS},\
{ADCZC_PHASE_B_NEG_POS,ADCZC_PHASE_B_POS_NEG},{ADCZC_PHASE_C_POS_NEG,ADCZC_PHASE_C_NEG_POS},\
{ADCZC_PHASE_A_NEG_POS,ADCZC_PHASE_A_POS_NEG},{ADCZC_PHASE_B_POS_NEG,ADCZC_PHASE_B_NEG_POS} };
const Word16 ZC_Phase_Tab [] = { INDEX_ZC_PHASE_C, INDEX_ZC_PHASE_A, INDEX_ZC_PHASE_B, \
INDEX_ZC_PHASE_C, INDEX_ZC_PHASE_A, INDEX_ZC_PHASE_B };
const int Expect_ZCInpFlag_Tab [ MAX_STEP_CMT+1 ] [2] = \
{ {1,0},{0,1},\
{1,0},{0,1},\
{1,0},{0,1} };
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -