definition.h 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. /**
  2. * @copyright (C) COPYRIGHT 2022 Fortiortech Shenzhen
  3. * @file definition.h
  4. * @author Marcel He
  5. * @note Last modify author is Marcel He
  6. * @since 2022-07-14
  7. * @date 2022-07-14
  8. * @brief
  9. */
  10. #ifndef __DEFINITION_H_
  11. #define __DEFINITION_H_
  12. /* Q format define ---------------------------------------------------------------------------------*/
  13. #define _Q7(A) (int8) ((A) * 0x7f) ///< Q7 format
  14. #define _Q8(A) (int16)((A) * 0xff) ///< Q8 format
  15. #define _Q9(A) (int16)((A) * 0x1ff) ///< Q9 format
  16. #define _Q10(A) (int16)((A) * 0x3ff) ///< Q10 format
  17. #define _Q11(A) (int16)((A) * 0x07ff) ///< Q11 format
  18. #define _Q12(A) (int16)((A) * 0x0fff) ///< Q12 format
  19. #define _Q13(A) (int16)((A) * 0x1fff) ///< Q13 format
  20. #define _Q14(A) (int16)((A) * 0x3fff) ///< Q14 format
  21. #define _Q15(A) (int16)((A) * 0x7fff) ///< Q15 format
  22. #define _Q16 (65535.0) ///< Q16 format value
  23. #define _2PI (3.1415926 * 2) ///< 2 PI value
  24. #define I_ValueX(Curr_Value) (Curr_Value * HW_RSHUNT * HW_AMPGAIN / (HW_ADC_REF))
  25. #define I_Value(Curr_Value) _Q15(I_ValueX(Curr_Value))
  26. #define S_Value(SpeedValue) _Q15((float)(SpeedValue) / MOTOR_SPEED_BASE)
  27. #define A_Value(Angle) _Q15((float)(Angle) / 180.0)
  28. #define UDC_Value(val) _Q15((val)/ HW_BOARD_VOLT_MAX)
  29. #define TIM2_Fre (187500.0) ///< 定时器频率
  30. /* 使能定义 */
  31. #define Disable (0)
  32. #define Enable (1)
  33. /* 转向定义 */
  34. #define CW (0) ///<正转
  35. #define CCW (1) ///<反转
  36. /* ADC参考电压配置 */
  37. #define VREF3_0 (0xA0) ///< 0XA0 远离实际值 减少直接填写数值导致错误,其他同理
  38. #define VREF4_0 (0xB0)
  39. #define VREF4_5 (0xC0)
  40. #define VREF5_0 (0xD0)
  41. /* VHALF系数 */
  42. #define VHALF1_8 (0xA0) ///< 0XA0 远离实际值 减少直接填写数值导致错误,其他同理
  43. #define VHALF1_4 (0xB0)
  44. #define VHALF25_64 (0xC0)
  45. #define VHALF1_2 (0xD0)
  46. /* 运放模式选择 */
  47. #define AMP_NOMAL (0xA0) ///< 外部放大
  48. #define AMP_PGA_DUAL (0xB0) ///< 内部PGA 双端差分输入
  49. /* 内部PGA放大倍数选择 */
  50. #define AMP2x (2)
  51. #define AMP4x (4)
  52. #define AMP8x (8)
  53. #define AMP16x (16)
  54. /* --驱动电平设置-- */
  55. #define HIGH_LEVEL (0xA0) ///< 驱动高电平有效
  56. #define LOW_LEVEL (0xB0) ///< 驱动低电平有效
  57. #define UP_H_DOWN_L (0xC0) ///< 上桥臂高电平有效,下桥臂低电平有效
  58. #define UP_L_DOWN_H (0xD0) ///< 上桥臂低电平有效,下桥臂高电平有效
  59. /***正PWMduty or 负PWMduty Choose***/
  60. #define PosiPWMDUTY (0xA0) // 正PWMduty
  61. #define NegaPWMDUTY (0xB0) // 负PWMduty
  62. #define SPEED_K ((float)(MOTOR_SPEED_MAX_RPM-MOTOR_SPEED_MIN_RPM)/(float)(MAXPWMDuty-MINPWMDuty))
  63. /* SVPWM mode */
  64. #define SVPWM_5_Segment (0xA0) ///< 五段式SVPWM
  65. #define SVPWM_7_Segment (0xB0) ///< 七段式SVPWM
  66. /* double resistor sample mode */
  67. #define DouRes_1_Cycle (0xA0) ///< 1 周期采样完 ia, ib
  68. #define DouRes_2_Cycle (0xB0) ///< 交替采用ia, ib, 2周期采样完成
  69. /* 闭环模式 */
  70. #define CURRENT_LOOP_CONTROL (0xA0) ///< 电流环
  71. #define POWER_LOOP_CONTROL (0xB0) ///< 恒功率
  72. #define SPEED_LOOP_CONTROL (0xC0) ///< 恒转速
  73. #define UQ_LOOP_CONTROL (0xD0) ///< UQ闭环
  74. #define OTHERS_LOOP_CONTROL (0xE0) ///< 其他环路,自定义
  75. #define ALIGN_DSIABLE (0xA0) ///< 禁止
  76. #define ALIGN_NOMAL (0xB0) ///< 正常预定位
  77. #define ALIGN_TEST (0xC0) ///< 测试模式,可用于手动测试电机极对数
  78. /* 调速模式 */
  79. #define NONEMODE (0xA0) ///< 直接给定值,不调速
  80. #define PWMMODE (0xB0) ///< PWM调速
  81. #define SREFMODE (0xC0) ///< 模拟调速
  82. #define KEYSCANMODE (0xD0) ///< 按键调速
  83. #define ONOFFTEST (0xE0) ///< 启停测试工具
  84. #define OTHERS (0xF0) ///< 其他调速方式
  85. /* 估算器模式选择 */
  86. #define SMO (0xA0) ///< SMO ,滑膜估算
  87. #define PLL (0xB0) ///< PLL ,锁相环
  88. #define AO (0xC0) ///< AO,自适应估算器
  89. /* 顺逆风判断设置 */
  90. #define NoTailWind (0xA0) ///< 无逆风顺风判断
  91. #define RSDMethod (0xB0) ///< RSD比较器方法
  92. #define BEMFMethod (0xD0) ///< BEMF比较器方法
  93. #define FOCMethod (0xC0) ///< FOC计算方法
  94. /* 启动模式 */
  95. #define STATIC_START (0xA0) ///< 静止启动
  96. #define TAILWIND_START (0xB0) ///< 顺风启动
  97. #define HEADWIND_START (0xC0) ///< 逆风启动
  98. #define TAILWIND_DECT (0xD0) ///< 顺逆风检测中
  99. /* 静止启动 强拖模式选择 */
  100. #define Open_Start (0xA0) ///< 开环强拖启动
  101. #define Omega_Start (0xB0) ///< Omega启动
  102. #define Open_Omega_Start (0xC0) ///< 先开环启,后Omega启动
  103. /* 电流采样模式 */
  104. #define Single_Resistor (0xA0) ///< 单电阻电流采样模式
  105. #define Double_Resistor (0xB0) ///< 双电阻电流采样模式
  106. #define Three_Resistor (0xC0) ///< 三电阻电流采样模式
  107. #define Long_Inject (0) ///< 脉冲注入时间长于2ms,若时间长于4ms,则要修改定时器分频
  108. #define Short_Inject (1) ///< 脉冲注入时间低于2ms
  109. #endif