board_mc105_v3.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434
  1. #ifndef _BOARD_MC_V3_H__
  2. #define _BOARD_MC_V3_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 125.0F
  9. #define CONFIG_MAX_DC_VOL 110.0F
  10. #define CONFIG_RATED_DC_VOL (96.0f) /* 母线最大电压 V*/
  11. #define CONFIG_MIN_DC_VOL (60.0f)
  12. #define CONFIG_MAX_VBUS_CURRENT 250.0f
  13. #define CONFIG_MAX_CHRG_CURRENT (-100.0f)
  14. #define CONFIG_MAX_MOT_RPM 9000.0f
  15. #define CONFIG_MAX_PHASE_CURR 500.0F
  16. #define CONFIG_MAX_PHASE_VOL (CONFIG_MOS_MAX_VOL - 20.0F)
  17. #define CONFIG_MAX_TORQUE CONFIG_MAX_PHASE_CURR
  18. #define CONFIG_MAX_LOCK_TORQUE 100
  19. #define CONFIG_MAX_ACTIVE_EMF 5000.0F
  20. //#define CONFIG_BEEP
  21. #define CONFIG_STALL_MAX_CURRENT 100.0f //最大堵转相电流电流
  22. #define CONFIG_STALL_MAX_TIME 3000 //ms, 超过最大堵转电流持续时间,判断堵转
  23. #define CONFIG_UNDER_VOL_RPM 1000
  24. #define CONFIG_UNDER_VOL_PHASE_CURR 100.0F
  25. #define CONFIG_UNDER_VOL_DC_CURR 15.0F
  26. #define CONFIG_CURR_LP_WC (600.0F)
  27. #define CONFIG_CURR_LP_CEOF (CONFIG_CURR_LP_WC*2*3.14F/(float)FOC_PWM_FS)
  28. #define CONFIG_96V_MODE_VOL (60.0F)
  29. //#define CONFIG_SENSORLESS_TOW_SAMPLES
  30. //#define CONFIG_SMO_OBSERVER
  31. #define CONFIG_LADRC_OBSERVER
  32. //#define CONFIG_SPEED_LADRC
  33. #define CONFIG_FORCE_96V_MODE
  34. #ifdef CONFIG_SENSORLESS_TOW_SAMPLES
  35. #define CONFIG_SENSORLESS_TS (FOC_CTRL_US/2.0f)
  36. #else
  37. #define CONFIG_SENSORLESS_TS FOC_CTRL_US
  38. #endif
  39. #define SCHED_TIMER TIMER5
  40. #define SCHED_TIMER_RCU RCU_TIMER5
  41. #define SCHED_TIMER_IRQ TIMER5_IRQn
  42. #define SCHED_TIMER_IRQHandler TIMER5_IRQHandler
  43. #define PWM_DEAD_TIME_NS 400u
  44. #define HW_DEAD_TIME_NS 210u
  45. #define HW_RISE_TIME_NS 150u
  46. #define HW_NOISE_TIME_NS 300u
  47. #define CONFIG_HW_DeadTime NS_2_TCLK(HW_DEAD_TIME_NS + PWM_DEAD_TIME_NS)/* ����ʱ�� */
  48. #define TRise NS_2_TCLK(HW_RISE_TIME_NS)/* MOS ����ʱ��*/
  49. #define TNoise NS_2_TCLK(HW_NOISE_TIME_NS)/* MOS��������Ŀ�������ʱ�� */
  50. #define TADC ((uint16_t)((ADC_TRIG_CONV_LATENCY_CYCLES + ADC_SAMPLING_CYCLES) *2 * TIM_CLOCK_MHz) / ADC_CLOCK_MHz + 1u)/* ADC ����ʱ�� */
  51. #define TSampleMIN (TDead + TRise + TADC) //采样需要的总时间
  52. #define TSampleBefore (TDead + TRise) //采样开始前需要等待的时间
  53. //#define CONFIG_START_LINE_DTC_CURRENT 5.0F /* 死区补偿开始电流,取决于电流噪声 */
  54. //#define COMFIG_END_LINE_DTC_CURRENT 15.0F
  55. #define ADC_REFERENCE_VOLTAGE (3.3F)
  56. #define ADC_FULL_MAX (4095.0F)
  57. /* MOS驱动 */
  58. #define MOS_PWM_TIMER TIMER0
  59. #define PWM_MODE TIMER_OC_MODE_PWM0
  60. #define PWM_U_P_GROUP GPIOA
  61. #define PWM_U_P_PIN GPIO_PIN_8
  62. #define PWM_U_P_RCU RCU_GPIOA
  63. #define PWM_U_P_MODE GPIO_MODE_AF_PP
  64. #define PWM_U_N_GROUP GPIOB
  65. #define PWM_U_N_PIN GPIO_PIN_13
  66. #define PWM_U_N_RCU RCU_GPIOB
  67. #define PWM_U_N_MODE GPIO_MODE_AF_PP
  68. #define PWM_V_P_GROUP GPIOA
  69. #define PWM_V_P_PIN GPIO_PIN_9
  70. #define PWM_V_P_RCU RCU_GPIOA
  71. #define PWM_V_P_MODE GPIO_MODE_AF_PP
  72. #define PWM_V_N_GROUP GPIOB
  73. #define PWM_V_N_PIN GPIO_PIN_14
  74. #define PWM_V_N_RCU RCU_GPIOB
  75. #define PWM_V_N_MODE GPIO_MODE_AF_PP
  76. #define PWM_W_P_GROUP GPIOA
  77. #define PWM_W_P_PIN GPIO_PIN_10
  78. #define PWM_W_P_RCU RCU_GPIOA
  79. #define PWM_W_P_MODE GPIO_MODE_AF_PP
  80. #define PWM_W_N_GROUP GPIOB
  81. #define PWM_W_N_PIN GPIO_PIN_15
  82. #define PWM_W_N_RCU RCU_GPIOB
  83. #define PWM_W_N_MODE GPIO_MODE_AF_PP
  84. #define PWM_BRAKE_GROUP GPIOB
  85. #define PWM_BRAKE_PIN GPIO_PIN_12
  86. #define PWM_BRAKE_RCU RCU_GPIOB
  87. #define PWM_BRAKE_MODE GPIO_MODE_IN_FLOATING
  88. #ifdef GD32F30X_CL
  89. #define PWM_BRK_IRQ TIMER0_BRK_TIMER8_IRQn
  90. #define PWM_UP_IRQ TIMER0_UP_TIMER9_IRQn
  91. #define PWM_UP_IRQHandler TIMER0_UP_TIMER9_IRQHandler
  92. #define PWM_BRK_IRQHandler TIMER0_BRK_TIMER8_IRQHandler
  93. #else
  94. #define PWM_BRK_IRQ TIMER0_BRK_IRQn
  95. #define PWM_UP_IRQ TIMER0_UP_IRQn
  96. #define PWM_UP_IRQHandler TIMER0_UP_IRQHandler
  97. #define PWM_BRK_IRQHandler TIMER0_BRK_IRQHandler
  98. #endif
  99. #define HALL_SENSOR_CEOF 0.303F
  100. /* 高边电流传感器采样 */
  101. #define HIGH_SIDE_CURRENT_SENSOR
  102. #define V_PHASE_I_CHAN ADC_CHANNEL_14
  103. #define W_PHASE_I_CHAN ADC_CHANNEL_10
  104. #define V_PHASE_ADC_GROUP GPIOC
  105. #define V_PHASE_ADC_PIN GPIO_PIN_4
  106. #define V_PHASE_ADC_RCU RCU_GPIOC
  107. #define V_PHASE_ADC_MODE GPIO_MODE_AIN
  108. #define W_PHASE_ADC_GROUP GPIOC
  109. #define W_PHASE_ADC_PIN GPIO_PIN_0
  110. #define W_PHASE_ADC_RCU RCU_GPIOC
  111. #define W_PHASE_ADC_MODE GPIO_MODE_AIN
  112. #define ADC_TO_CURR_ceof1 (HALL_SENSOR_CEOF)
  113. #define ADC_TO_CURR_ceof2 (HALL_SENSOR_CEOF)
  114. #define CONFIG_PWM_UV_SWAP 1
  115. //#define CONFIG_HW_MUTISAMPLE ADC_OVERSAMPLING_RATIO_MUL8
  116. //#define CONFIG_HW_MUTISAMPLE_SHIFT ADC_OVERSAMPLING_SHIFT_3B
  117. //#define CONFIG_SW_MUTISAMPLE 1
  118. /* 母线电压采集 */
  119. #define VBUS_V_CHAN ADC_CHANNEL_12 //adc012
  120. #define VBUS_V_ADC_GROUP GPIOC
  121. #define VBUS_V_ADC_PIN GPIO_PIN_2
  122. #define VBUS_V_ADC_RCU RCU_GPIOC
  123. #define VBUS_V_ADC_MODE GPIO_MODE_AIN
  124. #define VBUS_VOL_CEOF (ADC_REFERENCE_VOLTAGE*41/ADC_FULL_MAX)
  125. #define ACC_V_CHAN ADC_CHANNEL_11 //adc012
  126. #define ACC_V_ADC_GROUP GPIOC
  127. #define ACC_V_ADC_PIN GPIO_PIN_1
  128. #define ACC_V_ADC_RCU RCU_GPIOC
  129. #define ACC_V_ADC_MODE GPIO_MODE_AIN
  130. #define ACC_VOL_CEOF (ADC_REFERENCE_VOLTAGE*41/ADC_FULL_MAX)
  131. #define VBUS_I_CHAN ADC_CHANNEL_0 //adc012
  132. #define VBUS_I_ADC_GROUP GPIOA
  133. #define VBUS_I_ADC_PIN GPIO_PIN_0
  134. #define VBUS_I_ADC_RCU RCU_GPIOA
  135. #define VBUS_I_ADC_MODE GPIO_MODE_AIN
  136. #define VBUS_I_CEOF (0.303f)
  137. #define VBUS_I_POSITIVE 1
  138. /* MOS 温度采集 */
  139. #define MOS_TEMP_ADC_CHAN ADC_CHANNEL_8
  140. #define MOS_TEMP_ADC_GROUP GPIOB
  141. #define MOS_TEMP_ADC_PIN GPIO_PIN_0
  142. #define MOS_TEMP_ADC_RCU RCU_GPIOB
  143. #define MOS_TEMP_ADC_MODE GPIO_MODE_AIN
  144. #define MOS_TEMP_R(adc) ((adc)/ADC_FULL_MAX / ((1.0f - (adc)/ADC_FULL_MAX)/(10.0f*1000.0f)))
  145. /* 电机温度采集 */
  146. #define MOTOR_TEMP_ADC_CHAN ADC_CHANNEL_5
  147. #define MOTOR_TEMP_ADC_GROUP GPIOA
  148. #define MOTOR_TEMP_ADC_PIN GPIO_PIN_5
  149. #define MOTOR_TEMP_ADC_RCU RCU_GPIOA
  150. #define MOTOR_TEMP_ADC_MODE GPIO_MODE_AIN
  151. #define MOTOR_TEMP_R(adc) ((adc)/ADC_FULL_MAX / ((1.0f - (adc)/ADC_FULL_MAX)/2000.0f))
  152. /* 是否有母线电流采集 */
  153. //#define NO_SAMPLE_IDC //如果硬件没有采集母线电流,定义一下
  154. /* 转把信号电压采集 */
  155. #define THROTTLE_CHAN ADC_CHANNEL_4
  156. #define THROTTLE_V_ADC_GROUP GPIOA
  157. #define THROTTLE_V_ADC_PIN GPIO_PIN_4
  158. #define THROTTLE_V_ADC_RCU RCU_GPIOA
  159. #define THROTTLE_V_ADC_MODE GPIO_MODE_AIN
  160. #define THROTTLE_VOL_CEOF (ADC_REFERENCE_VOLTAGE*(15.1f/10.0f)/ADC_FULL_MAX)
  161. /* 第二路转把信号电压采集 */
  162. #define THROTTLE2_CHAN ADC_CHANNEL_7
  163. #define THROTTLE2_V_ADC_GROUP GPIOA
  164. #define THROTTLE2_V_ADC_PIN GPIO_PIN_7
  165. #define THROTTLE2_V_ADC_RCU RCU_GPIOA
  166. #define THROTTLE2_V_ADC_MODE GPIO_MODE_AIN
  167. /* 转把供电5V电压采集 */
  168. #define THROTTLE_5V_CHAN ADC_CHANNEL_6
  169. #define THROTTLE_5V_ADC_GROUP GPIOA
  170. #define THROTTLE_5V_ADC_PIN GPIO_PIN_6
  171. #define THROTTLE_5V_ADC_RCU RCU_GPIOA
  172. #define THROTTLE_5V_ADC_MODE GPIO_MODE_AIN
  173. /* 第二路供电5V电压采集 */
  174. #define THROTTLE2_5V_CHAN ADC_CHANNEL_9
  175. #define THROTTLE2_5V_ADC_GROUP GPIOB
  176. #define THROTTLE2_5V_ADC_PIN GPIO_PIN_1
  177. #define THROTTLE2_5V_ADC_RCU RCU_GPIOB
  178. #define THROTTLE2_5V_ADC_MODE GPIO_MODE_AIN
  179. /* UVW三相对地电压采集 */
  180. #define U_VOL_ADC_CHAN ADC_CHANNEL_15
  181. #define U_VOL_ADC_GROUP GPIOC
  182. #define U_VOL_ADC_PIN GPIO_PIN_5
  183. #define U_VOL_ADC_RCU RCU_GPIOC
  184. #define U_VOL_ADC_MODE GPIO_MODE_AIN
  185. #define V_VOL_ADC_CHAN ADC_CHANNEL_1 //adc012
  186. #define V_VOL_ADC_GROUP GPIOA
  187. #define V_VOL_ADC_PIN GPIO_PIN_1
  188. #define V_VOL_ADC_RCU RCU_GPIOA
  189. #define V_VOL_ADC_MODE GPIO_MODE_AIN
  190. #define W_VOL_ADC_CHAN ADC_CHANNEL_2 //adc012
  191. #define W_VOL_ADC_GROUP GPIOA
  192. #define W_VOL_ADC_PIN GPIO_PIN_2
  193. #define W_VOL_ADC_RCU RCU_GPIOA
  194. #define W_VOL_ADC_MODE GPIO_MODE_AIN
  195. #define UVW_VOL_CEOF (ADC_REFERENCE_VOLTAGE*(41.0f)/ADC_FULL_MAX)
  196. /* 模拟5v电压采集 */
  197. #define DC5V_ADC_CHAN ADC_CHANNEL_3 //adc012
  198. #define DC5V_ADC_GROUP GPIOA
  199. #define DC5V_ADC_PIN GPIO_PIN_3
  200. #define DC5V_ADC_RCU RCU_GPIOA
  201. #define DC5V_ADC_MODE GPIO_MODE_AIN
  202. /* 0v电压采集,主要是用来给上一次的采集放电 */
  203. #define ZERO_ADC_CHAN ADC_CHANNEL_13 //adc012
  204. #define ZERO_ADC_GROUP GPIOC
  205. #define ZERO_ADC_PIN GPIO_PIN_3
  206. #define ZERO_ADC_RCU RCU_GPIOC
  207. #define ZERO_ADC_MODE GPIO_MODE_AIN
  208. /* 刹车手把输入 */
  209. #define GPIO_BREAK_MODE GPIO_LOW_BRK_MODE
  210. #define GPIO_BRAKE_IN_GROUP GPIOB
  211. #define GPIO_BRAKE_IN_PIN GPIO_PIN_3
  212. #define GPIO_BRAKE_IN_RCU RCU_GPIOB
  213. #define GPIO_BRAKE_IN_MODE GPIO_MODE_IN_FLOATING
  214. #define GPIO_BRAKE_IRQ EXTI3_IRQn
  215. #define GPIO_BRAKE_EXTI EXTI_3
  216. #define GPIO_BRAKE_EXIT_SRC_GROUP GPIO_PORT_SOURCE_GPIOB
  217. #define GPIO_BRAKE_EXIT_SRC_PIN GPIO_PIN_SOURCE_3
  218. #define GPIO_BRAKE_PIN_REMAP GPIO_SWJ_SWDPENABLE_REMAP
  219. /* 锁电机线, 使用查询模式 */
  220. #define GPIO_MLOCK_IN_GROUP GPIOC
  221. #define GPIO_MLOCK_IN_PIN GPIO_PIN_13
  222. #define GPIO_MLOCK_IN_RCU RCU_GPIOC
  223. #define GPIO_MLOCK_IN_MODE GPIO_MODE_IN_FLOATING
  224. /* 触发U相检测 */
  225. #define GPIO_UDEC_OUT_GROUP GPIOB
  226. #define GPIO_UDEC_OUT_PIN GPIO_PIN_7
  227. #define GPIO_UDEC_OUT_RCU RCU_GPIOB
  228. #define GPIO_UDEC_OUT_MODE GPIO_MODE_OUT_PP
  229. /* 风扇 PWM */
  230. #define GPIO_FAN_OUT_GROUP GPIOC
  231. #define GPIO_FAN_OUT_PIN GPIO_PIN_8
  232. #define GPIO_FAN_OUT_RCU RCU_GPIOC
  233. #define GPIO_FAN_OUT_MODE GPIO_MODE_AF_PP
  234. #define FAN_PWM_TIMER TIMER7
  235. #define FAN_PWM_CHAN TIMER_CH_2
  236. #define FAN_TIMER_RCU RCU_TIMER7
  237. /* 风扇1检测 */
  238. #define GPIO_FAN1_IN_GROUP GPIOC
  239. #define GPIO_FAN1_IN_PIN GPIO_PIN_11
  240. #define GPIO_FAN1_IN_RCU RCU_GPIOC
  241. #define GPIO_FAN1_IN_MODE GPIO_MODE_IN_FLOATING
  242. #define GPIO_FAN1_IRQ EXTI10_15_IRQn
  243. #define GPIO_FAN1_EXTI EXTI_11
  244. #define GPIO_FAN1_EXIT_SRC_GROUP GPIO_PORT_SOURCE_GPIOC
  245. #define GPIO_FAN1_EXIT_SRC_PIN GPIO_PIN_SOURCE_11
  246. /* LED 灯控制 */
  247. #define GPIO_LED_OUT_GROUP GPIOC
  248. #define GPIO_LED_OUT_PIN GPIO_PIN_14
  249. #define GPIO_LED_OUT_RCU RCU_GPIOC
  250. #define GPIO_LED_OUT_MODE GPIO_MODE_OUT_PP
  251. /* 刹车灯控制,能量回收的时候需要电量刹车灯 */
  252. #define GPIO_BRAKE_LIGHT_OUT_GROUP GPIOD
  253. #define GPIO_BRAKE_LIGHT_OUT_PIN GPIO_PIN_2
  254. #define GPIO_BRAKE_LIGHT_OUT_RCU RCU_GPIOD
  255. #define GPIO_BRAKE_LIGHT_OUT_MODE GPIO_MODE_OUT_PP
  256. /* 一键修复,低电平有效 */
  257. #define REPEAR_IN_GROUP GPIOC
  258. #define REPEAR_IN_PIN GPIO_PIN_10
  259. #define REPEAR_IN_RCU RCU_GPIOC
  260. #define REPEAR_IN_MODE GPIO_MODE_IN_FLOATING
  261. /* CAN 定义 */
  262. #define CAN_TX_GROUP GPIOB
  263. #define CAN_TX_PIN GPIO_PIN_9
  264. #define CAN_RX_GROUP GPIOB
  265. #define CAN_RX_PIN GPIO_PIN_8
  266. #define CAN_PIN_RCU RCU_GPIOB
  267. #ifdef GD32F30X_CL
  268. #define CAN_REMAP GPIO_CAN0_PARTIAL_REMAP
  269. #define CAN_IRQ0 CAN0_RX0_IRQn
  270. #define CAN_RX0_IRQHandler CAN0_RX0_IRQHandler
  271. #else
  272. #define CAN_REMAP GPIO_CAN_PARTIAL_REMAP
  273. #define CAN_IRQ0 USBD_LP_CAN0_RX0_IRQn
  274. #define CAN_RX0_IRQHandler USBD_LP_CAN0_RX0_IRQHandler
  275. #endif
  276. /* 是否用编码器 */
  277. #define USE_ENCODER_ABI
  278. #define ENCODER_TYPE ENCODER_MT
  279. /* 编码器 */
  280. #define ENC_A_GROUP GPIOB
  281. #define ENC_A_PIN GPIO_PIN_4
  282. #define ENC_A_RCU RCU_GPIOB
  283. #define ENC_A_MODE GPIO_MODE_IN_FLOATING
  284. #define ENC_B_GROUP GPIOB
  285. #define ENC_B_PIN GPIO_PIN_5
  286. #define ENC_B_RCU RCU_GPIOB
  287. #define ENC_B_MODE GPIO_MODE_IN_FLOATING
  288. #define TIMER2_PB4_PB5_REMAP GPIO_TIMER2_PARTIAL_REMAP
  289. #define ENC_PWM_GROUP GPIOA
  290. #define ENC_PWM_PIN GPIO_PIN_15
  291. #define ENC_PWM_RCU RCU_GPIOA
  292. #define ENC_PWM_MODE GPIO_MODE_IN_FLOATING
  293. #define TIMER1_PA15_REMAP GPIO_TIMER1_PARTIAL_REMAP0
  294. #define ENC_I_GROUP GPIOB /*测量编码器的ABI的I信号,360度同步一次*/
  295. #define ENC_I_PIN GPIO_PIN_6
  296. #define ENC_I_RCU RCU_GPIOB
  297. #if 0
  298. #define ENC_I_MODE GPIO_MODE_IPU
  299. #define ENC_I_IRQ EXTI5_9_IRQn
  300. #define ENC_I_EXTI EXTI_6
  301. #define ENC_I_EXIT_SRC_GROUP GPIO_PORT_SOURCE_GPIOB
  302. #define ENC_I_EXIT_SRC_PIN GPIO_PIN_SOURCE_6
  303. #else
  304. #define ENC_I_MODE GPIO_MODE_IN_FLOATING
  305. #define ENC_I_TIMER TIMER3 /* 测量绝对编码器PWM输出的占空比,获取转子angle*/
  306. #define ENC_I_TIMER_RCU RCU_TIMER3
  307. #define ENC_I_TIMER_IRQ TIMER3_IRQn
  308. #define ENC_I_TIMER_CHAN TIMER_CH_0
  309. #define ENC_I_TIMER_IRQ_CH TIMER_INT_CH0
  310. #define ENC_I_TIMER_INT_FLG TIMER_INT_FLAG_CH0
  311. #define ENC_I_IRQHandler TIMER3_IRQHandler
  312. #endif
  313. #define ENC_TIMER TIMER2 /* 测量编码器的ABI信号的AB信号 */
  314. #define ENC_TIMER_RCU RCU_TIMER2
  315. #define ENC_TIMER_IRQ TIMER2_IRQn
  316. #define ENC_TIMER_IRQHandler TIMER2_IRQHandler
  317. #define ENC_PWM_TIMER TIMER1 /* 测量绝对编码器PWM输出的占空比,获取转子angle*/
  318. #define ENC_PWM_TIMER_RCU RCU_TIMER1
  319. #define ENC_PWM_TIMER_IRQ TIMER1_IRQn
  320. #define ENC_PWM_TIMER_CHAN TIMER_CH_0
  321. #define ENC_PWM_TIMER_IRQ_CH TIMER_INT_CH0
  322. #define ENC_PWM_TIMER_INT_FLG TIMER_INT_FLAG_CH0
  323. #define ENC_PWM_IRQHandler TIMER1_IRQHandler
  324. /* board id, 0x01=>v3, 0x02=>v4 */
  325. #define BOOT_PIN_0_GROUP GPIOC
  326. #define BOOT_PIN_0_PIN GPIO_PIN_6
  327. #define BOOT_PIN_1_GROUP GPIOC
  328. #define BOOT_PIN_1_PIN GPIO_PIN_7
  329. #define BOARD_105_VERSION_3 2
  330. #define BOARD_105_VERSION_4 1
  331. #define ENC_MAX_interpolation 1.0F
  332. #define CONFIG_ENC_FILTER_NR 12 //1100: fSAMP=fDTS/16, N=8,采样率 120M/16 = 7.5M
  333. #define CONFIG_PWM_FILTER_NR 12
  334. #ifdef CONFIG_PWM_UV_SWAP
  335. #define ENCODER_CC_INVERT 1
  336. #endif
  337. /* 编码器参数 */
  338. #define ENC_MAX_RES 4096.0f
  339. #define ENC_Duty_2_Pluse_Nr(duty) (duty * ENC_MAX_RES) //通过占空比计算有几个脉冲
  340. #define ENC_Pluse_Nr_2_angle(Nr) (360.0f/(float)ENC_MAX_RES * (Nr))
  341. #define ENC_PWM_Min_P 0.0f//(1.0f/(131.0f + 1.0f))
  342. #define ENC_PWM_Max_P 1.0f
  343. #if ENCODER_TYPE==ENCODER_MPS
  344. #define ENC_Duty(d, t) ((1.0f/128.0f) * (130.0f * (d)/(t) - 1.0f))
  345. #elif ENCODER_TYPE==ENCODER_MT
  346. /*min. 994 hz*/
  347. #define ENC_PWM_MAX_RES 4119.0F
  348. #define ENC_PWM_INIT_WIDTH 16.0F //PWM 起始宽度
  349. #define ENC_PWM_END_WIDTH 8.0F
  350. //#define ENC_PWM_Min_P (ENC_PWM_INIT_WIDTH/(ENC_PWM_MAX_RES + 1.0f))
  351. //#define ENC_PWM_Max_P ((ENC_PWM_MAX_RES-ENC_PWM_END_WIDTH)/(ENC_PWM_MAX_RES - 1.0f))
  352. #define PWM_Duty(d, t) ((d)/(t))
  353. #define ENC_Duty(d, t) ((PWM_Duty(d, t)*ENC_PWM_MAX_RES - ENC_PWM_INIT_WIDTH)/(ENC_PWM_MAX_RES - ENC_PWM_END_WIDTH - ENC_PWM_INIT_WIDTH))
  354. #else
  355. #error "Postion sensor ERROR"
  356. #endif
  357. #define DEBUG_PORT_UART2
  358. #ifndef CONFIG_MOT_TYPE
  359. #define CONFIG_MOT_TYPE MOTOR_BLUESHARK_A1
  360. #endif
  361. //#define CONFIG_DQ_STEP_RESPONSE
  362. #endif /*_BOARD_MC_V3_H__ */