board_at32_mc.h 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. #ifndef _BOARD_AT32_MC_H__
  2. #define _BOARD_AT32_MC_H__
  3. #define CONFIG_HW_MAX_DC_CURRENT 10.0f
  4. #define CONFIG_HW_MAX_CHRG_CURRENT (-10.0f)
  5. #define CONFIG_HW_MAX_MOTOR_RPM 9000.0f
  6. #define CONFIG_HW_MAX_PHASE_CURR 45.0F
  7. #define CONFIG_HW_MAX_PHASE_VOL 50.0f
  8. #define CONFIG_MAX_TORQUE CONFIG_HW_MAX_PHASE_CURR
  9. #define CONFIG_MAX_LOCK_TORQUE 30
  10. #define CONFIG_MAX_ACTIVE_EMF 5000.0F
  11. #define CONFIG_STALL_MAX_CURRENT 40.0f //最大堵转相电流电流
  12. #define CONFIG_STALL_MAX_TIME 3000 //ms, 超过最大堵转电流持续时间,判断堵转
  13. #define CONFIG_LADRC_OBSERVER
  14. #ifdef CONFIG_SENSORLESS_TOW_SAMPLES
  15. #define CONFIG_SENSORLESS_TS (FOC_CTRL_US/2.0f)
  16. #else
  17. #define CONFIG_SENSORLESS_TS FOC_CTRL_US
  18. #endif
  19. #define CONFIG_FORCE_HIGH_VOL_MODE 1
  20. #define SCHED_TIMER TMR5
  21. #define SCHED_TIMER_RCU CRM_TMR5_PERIPH_CLOCK
  22. #define SCHED_TIMER_IRQ TMR5_GLOBAL_IRQn
  23. #define SCHED_TIMER_IRQHandler TMR5_GLOBAL_IRQHandler
  24. //#define CONFIG_THREE_SHUNT
  25. #define CONFIG_MAX_MODULATION 0.95F
  26. #define PWM_DEAD_TIME_NS 300u
  27. #define PWM_TOFF_DELAY_MAX 240u
  28. #define PWM_TON_DELAY_MIN 200u
  29. #define HW_DEAD_TIME_NS 210u
  30. #define HW_RISE_TIME_NS 150u
  31. #define HW_NOISE_TIME_NS 300u
  32. #define CONFIG_HW_DeadTime NS_2_TCLK(HW_DEAD_TIME_NS + PWM_DEAD_TIME_NS + (PWM_TOFF_DELAY_MAX - PWM_TON_DELAY_MIN))/* ����ʱ�� */
  33. #define TDead NS_2_TCLK(HW_DEAD_TIME_NS + PWM_DEAD_TIME_NS)/* ����ʱ�� */
  34. #define TRise NS_2_TCLK(HW_RISE_TIME_NS)/* MOS ����ʱ��*/
  35. #define TNoise NS_2_TCLK(HW_NOISE_TIME_NS)/* MOS��������Ŀ�������ʱ�� */
  36. #define TADC ((uint16_t)((ADC_TRIG_CONV_LATENCY_CYCLES + ADC_SAMPLING_CYCLES) *2 * TIM_CLOCK_MHz) / ADC_CLOCK_MHz + 1u)/* ADC ����ʱ�� */
  37. #define TSampleMIN (TDead + TRise + TADC) //采样需要的总时间
  38. #define TSampleBefore (TDead + TRise) //采样开始前需要等待的时间
  39. #define ADC_REFERENCE_VOLTAGE (3.3F)
  40. #define ADC_FULL_MAX (4095.0F)
  41. /* MOS驱动 */
  42. #define MOS_PWM_TIMER TMR1
  43. #define PWM_MODE TMR_OUTPUT_CONTROL_PWM_MODE_A
  44. #define PWM_CRM_CLK CRM_TMR1_PERIPH_CLOCK
  45. #define PWM_U_P_GROUP GPIOA
  46. #define PWM_U_P_PIN GPIO_PINS_8
  47. #define PWM_U_P_RCU CRM_GPIOA_PERIPH_CLOCK
  48. #define PWM_U_P_MODE GPIO_MODE_MUX
  49. #define PWM_U_N_GROUP GPIOB
  50. #define PWM_U_N_PIN GPIO_PINS_13
  51. #define PWM_U_N_RCU CRM_GPIOB_PERIPH_CLOCK
  52. #define PWM_U_N_MODE GPIO_MODE_MUX
  53. #define PWM_V_P_GROUP GPIOA
  54. #define PWM_V_P_PIN GPIO_PINS_9
  55. #define PWM_V_P_RCU CRM_GPIOA_PERIPH_CLOCK
  56. #define PWM_V_P_MODE GPIO_MODE_MUX
  57. #define PWM_V_N_GROUP GPIOB
  58. #define PWM_V_N_PIN GPIO_PINS_14
  59. #define PWM_V_N_RCU CRM_GPIOB_PERIPH_CLOCK
  60. #define PWM_V_N_MODE GPIO_MODE_MUX
  61. #define PWM_W_P_GROUP GPIOA
  62. #define PWM_W_P_PIN GPIO_PINS_10
  63. #define PWM_W_P_RCU CRM_GPIOA_PERIPH_CLOCK
  64. #define PWM_W_P_MODE GPIO_MODE_MUX
  65. #define PWM_W_N_GROUP GPIOB
  66. #define PWM_W_N_PIN GPIO_PINS_15
  67. #define PWM_W_N_RCU CRM_GPIOB_PERIPH_CLOCK
  68. #define PWM_W_N_MODE GPIO_MODE_MUX
  69. #define PWM_BRAKE_GROUP GPIOB
  70. #define PWM_BRAKE_PIN GPIO_PINS_12
  71. #define PWM_BRAKE_RCU CRM_GPIOB_PERIPH_CLOCK
  72. #define PWM_BRAKE_MODE GPIO_MODE_INPUT
  73. #define CONFIG_CURRENT_SENSOR_CEOF (ADC_REFERENCE_VOLTAGE/ADC_FULL_MAX/16.5F/0.002F) ///(3.3/4095/16.5/0.002)
  74. #define U_PHASE_I_CHAN ADC_CHANNEL_0
  75. #define V_PHASE_I_CHAN ADC_CHANNEL_1
  76. #define W_PHASE_I_CHAN ADC_CHANNEL_2
  77. #define U_PHASE_ADC_GROUP GPIOA
  78. #define U_PHASE_ADC_PIN GPIO_PINS_0
  79. #define U_PHASE_ADC_RCU CRM_GPIOA_PERIPH_CLOCK
  80. #define U_PHASE_ADC_MODE GPIO_MODE_ANALOG
  81. #define V_PHASE_ADC_GROUP GPIOA
  82. #define V_PHASE_ADC_PIN GPIO_PINS_1
  83. #define V_PHASE_ADC_RCU CRM_GPIOA_PERIPH_CLOCK
  84. #define V_PHASE_ADC_MODE GPIO_MODE_ANALOG
  85. #define W_PHASE_ADC_GROUP GPIOA
  86. #define W_PHASE_ADC_PIN GPIO_PINS_2
  87. #define W_PHASE_ADC_RCU CRM_GPIOA_PERIPH_CLOCK
  88. #define W_PHASE_ADC_MODE GPIO_MODE_ANALOG
  89. #define ADC_TO_CURR_ceof (CONFIG_CURRENT_SENSOR_CEOF)
  90. /* 母线电压采集 */
  91. #define VBUS_V_CHAN ADC_CHANNEL_7 //adc012
  92. #define VBUS_V_ADC_GROUP GPIOA
  93. #define VBUS_V_ADC_PIN GPIO_PINS_7
  94. #define VBUS_V_ADC_RCU CRM_GPIOA_PERIPH_CLOCK
  95. #define VBUS_V_ADC_MODE GPIO_MODE_ANALOG
  96. #define VBUS_VOL_CEOF (ADC_REFERENCE_VOLTAGE*(1.39F + 18.0F)/ADC_FULL_MAX)
  97. #define VBUS_I_CHAN ADC_CHANNEL_3 //adc012
  98. #define VBUS_I_ADC_GROUP GPIOA
  99. #define VBUS_I_ADC_PIN GPIO_PINS_3
  100. #define VBUS_I_ADC_RCU CRM_GPIOA_PERIPH_CLOCK
  101. #define VBUS_I_ADC_MODE GPIO_MODE_ANALOG
  102. #define VBUS_I_CEOF (ADC_REFERENCE_VOLTAGE/ADC_FULL_MAX/9.85F/0.005F)
  103. #define CONFIG_VBUS_I_POSITIVE 1
  104. /* MOS 温度采集 */
  105. #define MOS_TEMP_ADC_CHAN ADC_CHANNEL_9
  106. #define MOS_TEMP_ADC_GROUP GPIOB
  107. #define MOS_TEMP_ADC_PIN GPIO_PINS_1
  108. #define MOS_TEMP_ADC_RCU CRM_GPIOB_PERIPH_CLOCK
  109. #define MOS_TEMP_ADC_MODE GPIO_MODE_ANALOG
  110. #define MOS_TEMP_R(adc) ((adc)/ADC_FULL_MAX / ((1.0f - (adc)/ADC_FULL_MAX)/(10.0f*1000.0f)))
  111. /* 是否有母线电流采集 */
  112. //#define NO_SAMPLE_IDC //如果硬件没有采集母线电流,定义一下
  113. /* 转把信号电压采集 */
  114. #define THROTTLE_CHAN ADC_CHANNEL_10
  115. #define THROTTLE_V_ADC_GROUP GPIOC
  116. #define THROTTLE_V_ADC_PIN GPIO_PINS_0
  117. #define THROTTLE_V_ADC_RCU CRM_GPIOC_PERIPH_CLOCK
  118. #define THROTTLE_V_ADC_MODE GPIO_MODE_ANALOG
  119. #define THROTTLE_VOL_CEOF (ADC_REFERENCE_VOLTAGE/ADC_FULL_MAX)
  120. /* UVW三相对地电压采集 */
  121. #define U_VOL_ADC_CHAN ADC_CHANNEL_4
  122. #define U_VOL_ADC_GROUP GPIOA
  123. #define U_VOL_ADC_PIN GPIO_PINS_5
  124. #define U_VOL_ADC_RCU CRM_GPIOA_PERIPH_CLOCK
  125. #define U_VOL_ADC_MODE GPIO_MODE_ANALOG
  126. #define V_VOL_ADC_CHAN ADC_CHANNEL_5 //adc012
  127. #define V_VOL_ADC_GROUP GPIOA
  128. #define V_VOL_ADC_PIN GPIO_PINS_1
  129. #define V_VOL_ADC_RCU CRM_GPIOA_PERIPH_CLOCK
  130. #define V_VOL_ADC_MODE GPIO_MODE_ANALOG
  131. #define W_VOL_ADC_CHAN ADC_CHANNEL_6 //adc012
  132. #define W_VOL_ADC_GROUP GPIOA
  133. #define W_VOL_ADC_PIN GPIO_PINS_2
  134. #define W_VOL_ADC_RCU CRM_GPIOA_PERIPH_CLOCK
  135. #define W_VOL_ADC_MODE GPIO_MODE_ANALOG
  136. #define UVW_VOL_CEOF (ADC_REFERENCE_VOLTAGE*((37.4F + 3.9F)/3.9F)/ADC_FULL_MAX)
  137. #define PHASE_VOL_R (37.4f*1000.0f)
  138. #define PHASE_VOL_R1 (3.9f*1000.0f)
  139. #define PHASE_VOL_C1 (10e-9f) //10nF
  140. #define PHASE_VOL_Gain ((PHASE_VOL_R + PHASE_VOL_R1)/PHASE_VOL_R1)
  141. #define Phase_Vol_LPF_R ((PHASE_VOL_R * PHASE_VOL_R1)/(PHASE_VOL_R + PHASE_VOL_R1))
  142. #define PHASE_VOL_LPF_BAND (1/(2*3.14F*Phase_Vol_LPF_R*PHASE_VOL_C1))
  143. /* 霍尔3线 */
  144. #define HALL_A_PIN GPIO_PINS_4
  145. #define HALL_B_PIN GPIO_PINS_5
  146. #define HALL_C_PIN GPIO_PINS_0
  147. #define HALL_A_GROUP GPIOB
  148. #define HALL_B_GROUP GPIOB
  149. #define HALL_C_GROUP GPIOB
  150. #define HALL_A_RCU CRM_GPIOB_PERIPH_CLOCK
  151. #define HALL_B_RCU CRM_GPIOB_PERIPH_CLOCK
  152. #define HALL_C_RCU CRM_GPIOB_PERIPH_CLOCK
  153. #define HALL_TIMER TMR3
  154. #define HALL_TIMER_RCU CRM_TMR3_PERIPH_CLOCK
  155. #define HALL_CAPTURE_IOMUX TMR3_GMUX_0010
  156. #define HALL_TMR_IRQHandler TMR3_GLOBAL_IRQHandler
  157. #define HALL_TMR_IRQn TMR3_GLOBAL_IRQn
  158. #define STATUS3_LED_GPIO_CRM_CLK CRM_GPIOC_PERIPH_CLOCK
  159. #define STATUS3_LED_PORT GPIOC
  160. #define STATUS3_LED_GPIO_PIN GPIO_PINS_15
  161. #define CONFIG_BOARD_COM_UART
  162. //#define CONFIG_DQ_STEP_RESPONSE
  163. #endif /*_BOARD_AT32_MC_H__ */