board_yuanqu.h 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. #ifndef _BOARD_MC_V1_H__
  2. #define _BOARD_MC_V1_H__
  3. #if defined (GD32F30X_HD) || defined (GD32F30X_XD) || defined (GD32F30X_CL)
  4. #include "gd32f30x.h"
  5. #elif defined GD32E10x
  6. #include "gd32e10x.h"
  7. #endif
  8. #define CONFIG_MOS_MAX_VOL 145.0F
  9. #define CONFIG_MAX_DC_VOL 120.0F
  10. #define CONFIG_RATED_DC_VOL (96.0f) /* 母线最大电压 V*/
  11. #define CONFIG_MIN_DC_VOL (36.0f)
  12. #define CONFIG_MAX_VBUS_CURRENT 200.0f
  13. #define CONFIG_MAX_MOT_RPM 9000.0f
  14. #define CONFIG_MAX_PHASE_CURR 400.0F
  15. #define CONFIG_MAX_PHASE_VOL (CONFIG_MOS_MAX_VOL - 20.0F)
  16. #define CONFIG_MAX_TORQUE 50.0F
  17. #define CONFIG_CURRENT_BANDWITH 1000.0f /* 电流环带宽 */
  18. #define CONFIG_BEEP
  19. #define CONFIG_STALL_MAX_CURRENT 100.0f //最大堵转相电流电流
  20. #define CONFIG_STALL_MAX_TIME 3000 //ms, 超过最大堵转电流持续时间,判断堵转
  21. #define CONFIG_UNDER_VOL_RPM 1000
  22. #define CONFIG_UNDER_VOL_PHASE_CURR 100.0F
  23. #define CONFIG_UNDER_VOL_DC_CURR 15.0F
  24. #define CONFIG_MAX_FW_D_CURR 100.0F //d轴最大的退磁电流
  25. #define CONFIG_CURR_LP_CUT_FREQ (2500.0F)
  26. #define CONFIG_CURR_LP_PARAM (CONFIG_CURR_LP_CUT_FREQ*2*3.14F/(float)FOC_PWM_FS)
  27. #define CONFIG_96V_MODE_VOL (55.0F)
  28. #define SCHED_TIMER TIMER5
  29. #define SCHED_TIMER_RCU RCU_TIMER5
  30. #define SCHED_TIMER_IRQ TIMER5_IRQn
  31. #define SCHED_TIMER_IRQHandler TIMER5_IRQHandler
  32. #define PWM_DEAD_TIME_NS 400u
  33. #define HW_DEAD_TIME_NS 200u
  34. #define HW_RISE_TIME_NS 500u
  35. #define HW_NOISE_TIME_NS 300u
  36. #define TDead NS_2_TCLK(HW_DEAD_TIME_NS + PWM_DEAD_TIME_NS)/* ����ʱ�� */
  37. #define TRise NS_2_TCLK(HW_RISE_TIME_NS)/* MOS ����ʱ��*/
  38. #define TNoise NS_2_TCLK(HW_NOISE_TIME_NS)/* MOS��������Ŀ�������ʱ�� */
  39. #define TADC ((uint16_t)((ADC_TRIG_CONV_LATENCY_CYCLES + ADC_SAMPLING_CYCLES) *2 * TIM_CLOCK_MHz) / ADC_CLOCK_MHz + 1u)/* ADC ����ʱ�� */
  40. #define TSampleMIN (TDead + TRise + TADC) //采样需要的总时间
  41. #define TSampleBefore (TDead + TRise) //采样开始前需要等待的时间
  42. #define ADC_REFERENCE_VOLTAGE (3.3F)
  43. #define ADC_FULL_MAX (4096.0F)
  44. /* MOS驱动 */
  45. #define pwm_timer TIMER0
  46. #define PWM_MODE TIMER_OC_MODE_PWM0
  47. #define PWM_U_P_GROUP GPIOA
  48. #define PWM_U_P_PIN GPIO_PIN_8
  49. #define PWM_U_P_RCU RCU_GPIOA
  50. #define PWM_U_P_MODE GPIO_MODE_AF_PP
  51. #define PWM_U_N_GROUP GPIOB
  52. #define PWM_U_N_PIN GPIO_PIN_13
  53. #define PWM_U_N_RCU RCU_GPIOB
  54. #define PWM_U_N_MODE GPIO_MODE_AF_PP
  55. #define PWM_V_P_GROUP GPIOA
  56. #define PWM_V_P_PIN GPIO_PIN_9
  57. #define PWM_V_P_RCU RCU_GPIOA
  58. #define PWM_V_P_MODE GPIO_MODE_AF_PP
  59. #define PWM_V_N_GROUP GPIOB
  60. #define PWM_V_N_PIN GPIO_PIN_14
  61. #define PWM_V_N_RCU RCU_GPIOB
  62. #define PWM_V_N_MODE GPIO_MODE_AF_PP
  63. #define PWM_W_P_GROUP GPIOA
  64. #define PWM_W_P_PIN GPIO_PIN_10
  65. #define PWM_W_P_RCU RCU_GPIOA
  66. #define PWM_W_P_MODE GPIO_MODE_AF_PP
  67. #define PWM_W_N_GROUP GPIOB
  68. #define PWM_W_N_PIN GPIO_PIN_15
  69. #define PWM_W_N_RCU RCU_GPIOB
  70. #define PWM_W_N_MODE GPIO_MODE_AF_PP
  71. #define PWM_BRAKE_GROUP GPIOB
  72. #define PWM_BRAKE_PIN GPIO_PIN_12
  73. #define PWM_BRAKE_RCU RCU_GPIOB
  74. #define PWM_BRAKE_MODE GPIO_MODE_IN_FLOATING
  75. /* 高边电流传感器采样 */
  76. #define HIGH_SIDE_CURRENT_SENSOR
  77. #define V_PHASE_I_CHAN ADC_CHANNEL_5
  78. #define W_PHASE_I_CHAN ADC_CHANNEL_6
  79. #define V_PHASE_ADC_GROUP GPIOA
  80. #define V_PHASE_ADC_PIN GPIO_PIN_5
  81. #define V_PHASE_ADC_RCU RCU_GPIOA
  82. #define V_PHASE_ADC_MODE GPIO_MODE_AIN
  83. #define W_PHASE_ADC_GROUP GPIOA
  84. #define W_PHASE_ADC_PIN GPIO_PIN_6
  85. #define W_PHASE_ADC_RCU RCU_GPIOA
  86. #define W_PHASE_ADC_MODE GPIO_MODE_AIN
  87. #define ADC_TO_CURR_ceof1 (0.3362f)
  88. #define ADC_TO_CURR_ceof2 (0.3404f)
  89. #define CONFIG_HW_MUTISAMPLE ADC_OVERSAMPLING_RATIO_MUL2
  90. #define CONFIG_HW_MUTISAMPLE_SHIFT ADC_OVERSAMPLING_SHIFT_1B
  91. /* 母线电压采集 */
  92. #define VBUS_V_CHAN ADC_CHANNEL_4
  93. #define VBUS_V_ADC_GROUP GPIOA
  94. #define VBUS_V_ADC_PIN GPIO_PIN_4
  95. #define VBUS_V_ADC_RCU RCU_GPIOA
  96. #define VBUS_V_ADC_MODE GPIO_MODE_AIN
  97. #define VBUS_VOL_CEOF (ADC_REFERENCE_VOLTAGE*41/ADC_FULL_MAX)
  98. /* MOS 温度采集 */
  99. #define MOS_TEMP_ADC_CHAN ADC_CHANNEL_3
  100. #define MOS_TEMP_ADC_GROUP GPIOA
  101. #define MOS_TEMP_ADC_PIN GPIO_PIN_3
  102. #define MOS_TEMP_ADC_RCU RCU_GPIOA
  103. #define MOS_TEMP_ADC_MODE GPIO_MODE_AIN
  104. #define MOS_TEMP_R(adc) ((adc)/ADC_FULL_MAX / ((1.0f - (adc)/ADC_FULL_MAX)/(10.0f*1000.0f)))
  105. /* 电机温度采集 */
  106. #define MOTOR_TEMP_ADC_CHAN ADC_CHANNEL_0
  107. #define MOTOR_TEMP_ADC_GROUP GPIOA
  108. #define MOTOR_TEMP_ADC_PIN GPIO_PIN_0
  109. #define MOTOR_TEMP_ADC_RCU RCU_GPIOA
  110. #define MOTOR_TEMP_ADC_MODE GPIO_MODE_AIN
  111. #define MOTOR_TEMP_R(adc) ((adc)/ADC_FULL_MAX / ((1.0f - (adc)/ADC_FULL_MAX)/2000.0f))
  112. /* 是否有母线电流采集 */
  113. #define NO_SAMPLE_IDC //如果硬件没有采集母线电流,定义一下
  114. /* 转把电压采集 */
  115. #define THROTTLE_CHAN ADC_CHANNEL_1 //转把信号
  116. #define THROTTLE_V_ADC_GROUP GPIOA
  117. #define THROTTLE_V_ADC_PIN GPIO_PIN_1
  118. #define THROTTLE_V_ADC_RCU RCU_GPIOA
  119. #define THROTTLE_V_ADC_MODE GPIO_MODE_AIN
  120. #define THROTTLE_VOL_CEOF (ADC_REFERENCE_VOLTAGE*(15.1f/10.0f)/ADC_FULL_MAX)
  121. /* UVW三相对地电压采集 */
  122. #define U_VOL_ADC_CHAN ADC_CHANNEL_9
  123. #define U_VOL_ADC_GROUP GPIOB
  124. #define U_VOL_ADC_PIN GPIO_PIN_1
  125. #define U_VOL_ADC_RCU RCU_GPIOB
  126. #define U_VOL_ADC_MODE GPIO_MODE_AIN
  127. #define V_VOL_ADC_CHAN ADC_CHANNEL_8
  128. #define V_VOL_ADC_GROUP GPIOB
  129. #define V_VOL_ADC_PIN GPIO_PIN_0
  130. #define V_VOL_ADC_RCU RCU_GPIOB
  131. #define V_VOL_ADC_MODE GPIO_MODE_AIN
  132. #define W_VOL_ADC_CHAN ADC_CHANNEL_7
  133. #define W_VOL_ADC_GROUP GPIOA
  134. #define W_VOL_ADC_PIN GPIO_PIN_7
  135. #define W_VOL_ADC_RCU RCU_GPIOA
  136. #define W_VOL_ADC_MODE GPIO_MODE_AIN
  137. #define UVW_VOL_CEOF (ADC_REFERENCE_VOLTAGE*(41.0f)/ADC_FULL_MAX)
  138. /* 刹车手把输入 */
  139. #define GPIO_BRAKE_IN_GROUP GPIOB
  140. #define GPIO_BRAKE_IN_PIN GPIO_PIN_3
  141. #define GPIO_BRAKE_IN_RCU RCU_GPIOB
  142. #define GPIO_BRAKE_IN_MODE GPIO_MODE_IN_FLOATING
  143. #define GPIO_BRAKE_IRQ EXTI3_IRQn
  144. #define GPIO_BRAKE_EXTI EXTI_3
  145. #define GPIO_BRAKE_EXIT_SRC_GROUP GPIO_PORT_SOURCE_GPIOB
  146. #define GPIO_BRAKE_EXIT_SRC_PIN GPIO_PIN_SOURCE_3
  147. #define GPIO_BREAK_MODE GPIO_LOW_BRK_MODE
  148. /* 触发U相检测 */
  149. #define GPIO_UDEC_OUT_GROUP GPIOA
  150. #define GPIO_UDEC_OUT_PIN GPIO_PIN_14
  151. #define GPIO_UDEC_OUT_RCU RCU_GPIOA
  152. #define GPIO_UDEC_OUT_MODE GPIO_MODE_OUT_PP
  153. #define GPIO_UDEC_OUT_REMAP_DISABLE GPIO_SWJ_DISABLE_REMAP
  154. #define GPIO_UDEC_OUT_REMAP_ENABLE GPIO_SWJ_SWDPENABLE_REMAP
  155. /* 是否用编码器 */
  156. #define USE_ENCODER_ABI
  157. #define ENCODER_TYPE ENCODER_MPS
  158. /* 编码器 */
  159. #define ENC_A_GROUP GPIOB
  160. #define ENC_A_PIN GPIO_PIN_4
  161. #define ENC_A_RCU RCU_GPIOB
  162. #define ENC_A_MODE GPIO_MODE_IN_FLOATING
  163. #define ENC_B_GROUP GPIOB
  164. #define ENC_B_PIN GPIO_PIN_5
  165. #define ENC_B_RCU RCU_GPIOB
  166. #define ENC_B_MODE GPIO_MODE_IN_FLOATING
  167. #define TIMER2_PB4_PB5_REMAP GPIO_TIMER2_PARTIAL_REMAP
  168. #define ENC_PWM_GROUP GPIOA
  169. #define ENC_PWM_PIN GPIO_PIN_15
  170. #define ENC_PWM_RCU RCU_GPIOA
  171. #define ENC_PWM_MODE GPIO_MODE_IN_FLOATING
  172. #define TIMER1_PA15_REMAP GPIO_TIMER1_PARTIAL_REMAP0
  173. #define ENC_I_GROUP GPIOB /*测量编码器的ABI的I信号,360度同步一次*/
  174. #define ENC_I_PIN GPIO_PIN_8
  175. #define ENC_I_RCU RCU_GPIOB
  176. #define ENC_I_MODE GPIO_MODE_IPU
  177. #define ENC_I_IRQ EXTI5_9_IRQn
  178. #define ENC_I_EXTI EXTI_8
  179. #define ENC_I_EXIT_SRC_GROUP GPIO_PORT_SOURCE_GPIOB
  180. #define ENC_I_EXIT_SRC_PIN GPIO_PIN_SOURCE_8
  181. #define ENC_TIMER TIMER2 /* 测量编码器的ABI信号的AB信号 */
  182. #define ENC_TIMER_RCU RCU_TIMER2
  183. #define ENC_TIMER_IRQ TIMER2_IRQn
  184. #define ENC_TIMER_IRQHandler TIMER2_IRQHandler
  185. #define ENC_PWM_TIMER TIMER1 /* 测量绝对编码器PWM输出的占空比,获取转子angle*/
  186. #define ENC_PWM_TIMER_RCU RCU_TIMER1
  187. #define ENC_PWM_TIMER_IRQ TIMER1_IRQn
  188. #define ENC_PWM_TIMER_CHAN TIMER_CH_0
  189. #define ENC_PWM_TIMER_IRQ_CH TIMER_INT_CH0
  190. #define ENC_PWM_TIMER_INT_FLG TIMER_INT_FLAG_CH0
  191. #define ENC_PWM_IRQHandler TIMER1_IRQHandler
  192. #define ENC_MAX_interpolation 4.0F
  193. #define ENC_FILTER_NR 15
  194. /* 编码器参数 */
  195. #define ENC_MAX_RES 1024
  196. #define ENC_PWM_Min_P (0.0f)
  197. #define ENC_PWM_Max_P 1.0f
  198. #define ENC_Duty_2_Pluse_Nr(duty) (duty * ENC_MAX_RES) //通过占空比计算有几个脉冲
  199. #define ENC_Pluse_Nr_2_angle(Nr) (360.0f/(float)ENC_MAX_RES * (Nr))
  200. #define ENC_Duty(d, t) ((1.0f/128.0f) * (130.0f * (d)/(t) - 1.0f))
  201. #define DEBUG_PORT_UART2
  202. #define CONFIG_MOT_TYPE MOTOR_BLUESHARK_ZD_100
  203. //#define CONFIG_DQ_STEP_RESPONSE
  204. #endif /*_BOARD_MC_V1_H__ */