definition.h 5.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #ifndef __DEFINITION_H_
  2. #define __DEFINITION_H_
  3. #define _Q7(A) (int8) ((A) * 0x7f) ///< Q7 format
  4. #define _Q8(A) (int16)((A) * 0xff) ///< Q8 format
  5. #define _Q9(A) (int16)((A) * 0x1ff) ///< Q9 format
  6. #define _Q10(A) (int16)((A) * 0x3ff) ///< Q10 format
  7. #define _Q11(A) (int16)((A) * 0x07ff) ///< Q11 format
  8. #define _Q12(A) (int16)((A) * 0x0fff) ///< Q12 format
  9. #define _Q13(A) (int16)((A) * 0x1fff) ///< Q13 format
  10. #define _Q14(A) (int16)((A) * 0x3fff) ///< Q14 format
  11. #define _Q15(A) (int16)((A) * 0x7fff) ///< Q15 format
  12. #define _Q16 (65535.0) ///< Q16 format value
  13. #define _2PI (3.1415926 * 2) ///< 2 PI value
  14. #define I_ValueX(Xn0) (Xn0 * HW_RSHUNT * HW_AMPGAIN / (HW_ADC_REF))
  15. #define I_Value(Xn0) _Q15(I_ValueX(Xn0))
  16. #define S_Value(Xn0) _Q15((float)(Xn0) / MOTOR_SPEED_BASE)
  17. #define A_Value(Xn0) _Q15((float)(Xn0) / 180.0)
  18. #define UDC_Value(Xn0) _Q15((Xn0)/ HW_BOARD_VOLT_MAX)
  19. #define TEMPER_VALUE(Xn0) _Q15(5.0*Xn0/(10+Xn0)/HW_ADC_REF)
  20. #define Disable (0)
  21. #define Enable (1)
  22. // 转向定义
  23. #define CW (0) ///<正转
  24. #define CCW (1) ///<反转
  25. // ADC参考电压配置
  26. #define VREF3_0 (0xA0) ///< 0XA0 远离实际值 减少直接填写数值导致错误,其他同理
  27. #define VREF4_0 (0xB0)
  28. #define VREF4_5 (0xC0)
  29. #define VREF5_0 (0xD0)
  30. // 运放模式选择
  31. #define AMP_NOMAL (0xA0) ///< 外部放大
  32. #define AMP_PGA_DUAL (0xB0) ///< 内部PGA 双端差分输入
  33. // 内部PGA放大倍数选择
  34. #define AMP2x (2)
  35. #define AMP4x (4)
  36. #define AMP8x (8)
  37. #define AMP16x (16)
  38. // 驱动电平设置
  39. #define HIGH_LEVEL (0xA0) ///< 驱动高电平有效
  40. #define LOW_LEVEL (0xB0) ///< 驱动低电平有效
  41. #define UP_H_DOWN_L (0xC0) ///< 上桥臂高电平有效,下桥臂低电平有效
  42. #define UP_L_DOWN_H (0xD0) ///< 上桥臂低电平有效,下桥臂高电平有效
  43. #define BASE_FREQ ((MOTOR_SPEED_BASE / 60) * Pole_Pairs)
  44. #define SVPWM_5_Segment (0xA0) ///< 五段式SVPWM
  45. #define SVPWM_7_Segment (0xB0) ///< 七段式SVPWM
  46. #define DouRes_1_Cycle (0xA0) ///< 1 周期采样完 ia, ib
  47. #define DouRes_2_Cycle (0xB0) ///< 交替采用ia, ib, 2周期采样完成
  48. #define ALIGN_DSIABLE (0xA0) ///< 禁止
  49. #define ALIGN_NOMAL (0xB0) ///< 正常预定位
  50. #define ALIGN_TEST (0xC0) ///< 测试模式,可用于手动测试电机极对数
  51. #define NONEMODE (0xA0) ///< 直接给定值,不调速
  52. #define PWMMODE (0xB0) ///< PWM调速
  53. #define SREFMODE (0xC0) ///< 模拟调速
  54. #define STARTTEST (0xD0)
  55. #define SMO (0xA0) ///< SMO ,滑膜估算
  56. #define PLL (0xB0) ///< PLL ,锁相环
  57. #define AO (0xC0) ///< AO,自适应估算器
  58. #define Open_Start (0xA0) ///< 开环强拖启动
  59. #define Omega_Start (0xB0) ///< Omega启动
  60. #define Open_Omega_Start (0xC0) ///< 先开环启,后Omega启动
  61. #define Single_Resistor (0xA0) ///< 单电阻电流采样模式
  62. #define Double_Resistor (0xB0) ///< 双电阻电流采样模式
  63. #define Three_Resistor (0xC0) ///< 三电阻电流采样模式
  64. #define Long_Inject (0) ///< 脉冲注入时间长于2ms,若时间长于4ms,则要修改定时器分频
  65. #define Short_Inject (1) ///< 脉冲注入时间低于2ms
  66. // FOC__POW转换实际功率公式
  67. // P = FOC__POW/32767*HW_BOARD_VOLT_MAX*HW_BOARD_CURR_MAX 732 6.25
  68. #define OVER_POWER_VAL ((float)(32767/HW_BOARD_VOLT_MAX/HW_BOARD_CURR_MAX*OVER_POWER_VALUE))
  69. #define LPF_FC(Xn0) _Q15(_2PI / 1000 * Xn0)
  70. #define S_Value(Xn0) _Q15(Xn0/MOTOR_SPEED_BASE)
  71. #endif