board_gd32demo.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. #ifndef _BOARD_GD32DEMO_H__
  2. #define _BOARD_GD32DEMO_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. /* mos 参数,电流采集需要 */
  9. #define MOSDEV_DLY 550U
  10. #define MOSDRV_DT_NS 400U
  11. #define HW_DEAD_TIME_NS (MOSDEV_DLY+MOSDRV_DT_NS)
  12. #define HW_RISE_TIME_NS 500u
  13. #define HW_NOISE_TIME_NS 500u
  14. #define TDead NS_2_TCLK(HW_DEAD_TIME_NS)/* ����ʱ�� */
  15. #define TRise NS_2_TCLK(HW_RISE_TIME_NS)/* MOS ����ʱ��*/
  16. #define TNoise NS_2_TCLK(HW_NOISE_TIME_NS)/* MOS��������Ŀ�������ʱ�� */
  17. #define TADC ((uint16_t)((ADC_TRIG_CONV_LATENCY_CYCLES + ADC_SAMPLING_CYCLES) * TIM_CLOCK_MHz) / ADC_CLOCK_MHz + 1u)/* ADC ����ʱ�� */
  18. #define TSampleMIN (TDead + TRise + TADC) //采样需要的总时间
  19. #define TSampleBefore (TDead + TRise) //采样开始前需要等待的时间
  20. #define ADC_REFERENCE_VOLTAGE (3.3F)
  21. /* MOS 驱动 */
  22. #define pwm_timer TIMER0
  23. #define PWM_U_P_GROUP GPIOA
  24. #define PWM_U_P_PIN GPIO_PIN_8
  25. #define PWM_U_P_RCU RCU_GPIOA
  26. #define PWM_U_P_MODE GPIO_MODE_AF_PP
  27. #define PWM_U_N_GROUP GPIOB
  28. #define PWM_U_N_PIN GPIO_PIN_13
  29. #define PWM_U_N_RCU RCU_GPIOB
  30. #define PWM_U_N_MODE GPIO_MODE_AF_PP
  31. #define PWM_V_P_GROUP GPIOA
  32. #define PWM_V_P_PIN GPIO_PIN_9
  33. #define PWM_V_P_RCU RCU_GPIOA
  34. #define PWM_V_P_MODE GPIO_MODE_AF_PP
  35. #define PWM_V_N_GROUP GPIOB
  36. #define PWM_V_N_PIN GPIO_PIN_14
  37. #define PWM_V_N_RCU RCU_GPIOB
  38. #define PWM_V_N_MODE GPIO_MODE_AF_PP
  39. #define PWM_W_P_GROUP GPIOA
  40. #define PWM_W_P_PIN GPIO_PIN_10
  41. #define PWM_W_P_RCU RCU_GPIOA
  42. #define PWM_W_P_MODE GPIO_MODE_AF_PP
  43. #define PWM_W_N_GROUP GPIOB
  44. #define PWM_W_N_PIN GPIO_PIN_15
  45. #define PWM_W_N_RCU RCU_GPIOB
  46. #define PWM_W_N_MODE GPIO_MODE_AF_PP
  47. /* 三电阻采样 */
  48. #define SHUNT_NUM THREE_SHUNTS_SAMPLE
  49. #define U_PHASE_I_CHAN ADC_CHANNEL_1
  50. #define V_PHASE_I_CHAN ADC_CHANNEL_12
  51. #define W_PHASE_I_CHAN ADC_CHANNEL_13
  52. #define U_PHASE_ADC_GROUP GPIOA
  53. #define U_PHASE_ADC_PIN GPIO_PIN_1
  54. #define U_PHASE_ADC_RCU RCU_GPIOA
  55. #define U_PHASE_ADC_MODE GPIO_MODE_AIN
  56. #define V_PHASE_ADC_GROUP GPIOC
  57. #define V_PHASE_ADC_PIN GPIO_PIN_2
  58. #define V_PHASE_ADC_RCU RCU_GPIOC
  59. #define V_PHASE_ADC_MODE GPIO_MODE_AIN
  60. #define W_PHASE_ADC_GROUP GPIOC
  61. #define W_PHASE_ADC_PIN GPIO_PIN_3
  62. #define W_PHASE_ADC_RCU RCU_GPIOC
  63. #define W_PHASE_ADC_MODE GPIO_MODE_AIN
  64. /* 温度,母线,油门等采集*/
  65. #define MOTOR_TEMP_CHAN ADC_CHANNEL_11
  66. #define VBUS_V_CHAN ADC_CHANNEL_0
  67. #define VBUS_V_ADC_GROUP GPIOA
  68. #define VBUS_V_ADC_PIN GPIO_PIN_0
  69. #define VBUS_V_ADC_RCU RCU_GPIOA
  70. #define VBUS_V_ADC_MODE GPIO_MODE_AIN
  71. #define THROTTLE_CHAN ADC_CHANNEL_10
  72. #define THROTTLE_V_ADC_GROUP GPIOC
  73. #define THROTTLE_V_ADC_PIN GPIO_PIN_0
  74. #define THROTTLE_V_ADC_RCU RCU_GPIOC
  75. #define THROTTLE_V_ADC_MODE GPIO_MODE_AIN
  76. /* 是否有目前电流采集 */
  77. #define NO_SAMPLE_IDC //如果硬件没有采集母线电流,定义一下
  78. /* ADC 的电压系数 */
  79. #define ADC_TO_CURR_ceof (0.008f)
  80. #define VBUS_VOL_CEOF (ADC_REFERENCE_VOLTAGE*16/4096.0f)
  81. #define THROTTLE_VOL_CEOF (ADC_REFERENCE_VOLTAGE/4096.0f * 2.0f)
  82. /* 是否用编码器 */
  83. #define USE_ENCODER_ABI
  84. #define ENCODER_CC_INVERT //编码器方向和电机反向
  85. /* 编码器 */
  86. #define ENC_A_GROUP GPIOA
  87. #define ENC_A_PIN GPIO_PIN_6
  88. #define ENC_A_RCU RCU_GPIOA
  89. #define ENC_A_MODE GPIO_MODE_IN_FLOATING
  90. #define ENC_B_GROUP GPIOA
  91. #define ENC_B_PIN GPIO_PIN_7
  92. #define ENC_B_RCU RCU_GPIOA
  93. #define ENC_B_MODE GPIO_MODE_IN_FLOATING
  94. #define ENC_PWM_GROUP GPIOB
  95. #define ENC_PWM_PIN GPIO_PIN_6
  96. #define ENC_PWM_RCU RCU_GPIOB
  97. #define ENC_PWM_MODE GPIO_MODE_IN_FLOATING
  98. #define ENC_I_GROUP GPIOB /*测量编码器的ABI的I信号,360度同步一次*/
  99. #define ENC_I_PIN GPIO_PIN_0
  100. #define ENC_I_RCU RCU_GPIOB
  101. #define ENC_I_MODE GPIO_MODE_IPU
  102. #define ENC_I_IRQ EXTI0_IRQn
  103. #define ENC_I_EXTI EXTI_0
  104. #define ENC_I_EXIT_SRC_GROUP GPIO_PORT_SOURCE_GPIOB
  105. #define ENC_I_EXIT_SRC_PIN GPIO_PIN_SOURCE_0
  106. #define ENC_TIMER TIMER2 /* 测量编码器的ABI信号的AB信号 */
  107. #define ENC_TIMER_RCU RCU_TIMER2
  108. #define ENC_TIMER_IRQ TIMER2_IRQn
  109. #define ENC_TIMER_IRQHandler TIMER2_IRQHandler
  110. #define ENC_PWM_TIMER TIMER3 /* 测量绝对编码器PWM输出的占空比,获取转子angle*/
  111. #define ENC_PWM_TIMER_RCU RCU_TIMER3
  112. #define ENC_PWM_TIMER_IRQ TIMER3_IRQn
  113. #define ENC_PWM_TIMER_CHAN TIMER_CH_0
  114. #define ENC_PWM_TIMER_IRQ_CH TIMER_INT_CH0
  115. #define ENC_PWM_TIMER_INT_FLG TIMER_INT_FLAG_CH0
  116. #define ENC_PWM_IRQHandler TIMER3_IRQHandler
  117. #endif /*_BOARD_GD32DEMO_H__ */