
/************************ (C) COPYRIGHT 2015 FT *******************************
* File Name          : 
* Author             : Application Team  Tom.wang 
* Version            : V2.0.0
* Date               : 06/15/2015
* Description        : 警告：禁止修改,删除 结构体定义 否则会导致未知错误
********************************************************************************
/*******************************************************************************
* All Rights Reserved
*******************************************************************************/

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __MC_MOTORDRIVER_LAYER_H
#define __MC_MOTORDRIVER_LAYER_H
#include <fu681x_Dmc.h>
/* Includes ------------------------------------------------------------------*/
/* Exported types ------------------------------------------------------------*/
typedef struct 
{ 
//s16 VmeasA;         // Output: measured Ib (Q15)   
//s16 VmeasB;         // Output: measured Ib (Q15)   
//s16 VmeasC;         // Output: measured Ib (Q15)         
  float Vdc;
  float VdcMeasGain;  // Parameter: gain for Vdc (Q13)  
  s16 VdcMeas;        // Output: measured Vdc (Q15)  
  s16 VdcAvgMeas;

  float Ibus;
  float IBusMeasGain; // Parameter: gain for Ia (Q13)
  s16 IBusMeasOffset; // Parameter: offset for Ia (Q15)     
  s16 ImeasBus;       // Output: measured Ia (Q15)
  s16 IBusAvgMeasOffset;  
  s16 IBusAvgMeas;    
 
  s16 Vth1Meas;       // Output: measured VthMeas (Q12) 
  s16 Vth2Meas;      // Output: measured Vth1Meas (Q12) 
  s16 Vth3Meas;      // Output: measured Vth1Meas (Q12) 
  s16 Therm1;
  s16 Therm2;
  s16 Therm3;
  s16 SrefMeas;      // Output: measured VthMeas (Q12)
  s16 SrefAvgMeas;
  s16 Sref;          

} ADC2MEAS_TypeDef; 

//CTL
typedef struct   
{
  s8  BemfSetFR;
  s8  BemfValue;                     //过零点值
  u8  BemfNum; 
  s8  BemfTabA,BemfTabB,RefNumZ,RefNumY,RefNumX;     //
  u8  BemfFR;                        //
  u8  Calcnum;                       //转速跟踪检测次数
  u8  Calcnms;                       //转速跟踪检测时间
} Stk_TypeDef;    
  
typedef struct
{
  u8  Status;                 //HALL状态 1~6
  u8  Section;                //扇区     1~6
  u8  u8ChangePhaseNum;       //换相次数         
  s16 s16AdvanceEangle;       //换相超前角度
  u8  u8ChangePhaseFlag;      //换相完成标志  0XFF 已经换相 0X7F 准备换相
} HALL_TypeDef;
  
typedef struct
{ 
  u16  DutyArr;
  s16  DutyCur;
  s16  DutyTar;
  s16  DutyIncValue;        
  s16  DutyDecValue;

  u16  DutyMax;
  u16  DutyMin;  
  u16  DutyLimitMaxRef;
  u16  DutyLimitFlag;
  u16  DutyLimitValue;
}PWM_TypeDef;
  
typedef struct
{
  ADC2MEAS_TypeDef  AdcMeas;           //ADC检测值
  PWM_TypeDef       PWM;               //PWM
  SPEED_MEAS_CAP    speed;             //速度计算
  HALL_TypeDef      Hall;              //hall
  Stk_TypeDef       Stk;
}DRV_TypeDef;

extern DRV_TypeDef xdata Drv;         //全局外部变量声明
/* Exported constants --------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */ 

/*******************************************************************************
* Function Name  : Drv_DutyRampCale 
* Description    : 计算频率，每次斩波计算一次 
* Input          : 目标DUTY  格式_IQ15 即0x7FFF
* Output         : 当先DUTY  格式_IQ15 即0x7FFF
* Return         : 1
*******************************************************************************/  
extern void Drv_DutyRampCale(void);    //开环加减速模块

/*******************************************************************************
* Function Name  : Drv_SpeedRampCale 闭环加减速曲线
* Description    : 速度闭环加减速曲线 开环无效
* Input          : 目标速度 refTar _IQ15格式
* Output         : 给定速度 refCur _IQ15格式
* Return         : 给定速度 refCur _IQ15格式
*******************************************************************************/
extern void Drv_SpeedRampCale(void);  //闭环加减速模块

/*******************************************************************************
* Function Name  : Fu68xx_PWM_Update
* Description    : PWM更新模块，每次斩波更新，实时更新
* Input          : _IQ15 格式duty
* Output         : TIM2_DR
* Return         : TIM2_DR
*******************************************************************************/
extern void Drv_PWM_Update(u16 tduty);   //PWM更新模块

/*******************************************************************************
* Function Name  : Drv_BemfTim1PDapp    
* Description    : BEMF反电势检测
* Input          : 
* Output         : None
* Return         : None
*******************************************************************************/
extern void Drv_BemfTim1PDapp(void) ;    
/*******************************************************************************
* Function Name  : DRV_EemfEventPeriodCalc    
* Description    : 失速检测
* Input          : 
* Output         : None
* Return         : None
*******************************************************************************/
extern void DRV_EemfEventCalc(void); 
extern void DRV_HallEventCalc(void);
extern void Drv_StallRestart(void);       //堵转重启
extern void Drv_DutyLimit(void);
extern void Drv_PosTrack(void);

#endif /* __HD_init_H */

/******************* (C) COPYRIGHT 2014 FT *****END OF FILE****/