hwsetup.h 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. /************************************************************************
  2. Project: Welling Motor Control Paltform
  3. Filename: hwsetup.h
  4. Partner Filename: hwsetup.c
  5. Description: The header file of hwsetup.c
  6. Complier: IAR Embedded Workbench for ARM 8.40.2
  7. CPU TYPE : GD32F30x
  8. *************************************************************************
  9. Copyright (c) 2022 Welling Motor Technology(Shanghai) Co. Ltd.
  10. All rights reserved.
  11. *************************************************************************
  12. *************************************************************************
  13. Revising History (ECL of this file):
  14. ************************************************************************/
  15. /************************************************************************
  16. Beginning of File, do not put anything above here except notes
  17. Compiler Directives:
  18. ************************************************************************/
  19. #ifndef HWSETUP_H
  20. #define HWSETUP_H
  21. #ifndef RUN_ARCH_SIM
  22. #include "gd32f30x_libopt.h"
  23. #endif
  24. #include "STLmain.h"
  25. #include "syspar.h"
  26. #ifdef __cplusplus
  27. extern "C" {
  28. #endif // __cplusplus
  29. /************************************************************************
  30. Compiler Directives (N/A)
  31. ************************************************************************/
  32. #ifdef _HWSETUP_C_
  33. #define _HWSETUP_EXT
  34. #else
  35. #define _HWSETUP_EXT extern
  36. #endif
  37. /************************************************************************
  38. Definitions & Macros
  39. ************************************************************************/
  40. /* Frequency & time setting define */
  41. #define CORECLK_KHZ CLK_CORE_KHZ // Internal Clock
  42. #define AHBCLK_KHZ CLK_AHB_KHZ // AHB Clock
  43. #define APB1CLK_KHZ CLK_APB1_KHZ // APB1 Clock
  44. #define APB2CLK_KHZ CLK_APB2_KHZ // APB2 Clock
  45. #define TIM0CLK_KHZ CLK_TIM0_KHZ // TIM0 Clock
  46. #define TIM1CLK_KHZ (CLK_TIM0_KHZ /100)
  47. #define TIM2CLK_KHZ CLK_TIM0_KHZ
  48. #define TIM5CLK_KHZ (CLK_TIM0_KHZ / 2 )
  49. /* Timer2 for switchhall */
  50. #define TIM2CNTCLK_KHZ 72 // not use
  51. /* Time task base use TIMER5 */
  52. #define HW_1MS_PERIOD TIM5CLK_KHZ
  53. /* PWM period define */
  54. #define HW_PWM_PERIOD (TIM0CLK_KHZ * 1000 / FPWM_HZ)
  55. #define HW_HPWM_PERIOD (HW_PWM_PERIOD / 2)
  56. #define HW_HHPWM_PERIOD (HW_HPWM_PERIOD / 2)
  57. #define HW_HHHPWM_PERIOD (HW_HHPWM_PERIOD / 2)
  58. #define HW_PWM_PERIOD_INV (((ULONG)1 << 21) / HW_PWM_PERIOD) // Q21
  59. /* ADC trigger time */
  60. #define HW_ADC_TRI_TIME_US 10 /* unit: 0.1us */
  61. /* Timer0 DMA number */
  62. #define TIM1_DMA_NUM 6
  63. /* ADC DMA number */
  64. #define ADC0_DMA_NUM 8
  65. #define ADC1_DMA_NUM 1
  66. #define ADC2_DMA_NUM 7
  67. /* Interrupt ON/OFF define */
  68. #define ENABLE_IRQ stl_voEnableIrq()
  69. #define DISABLE_IRQ stl_voDisableIrq()
  70. /* IPM fault flag define */
  71. #define MCU_BRKIN_FLG (TIMER_INTF(TIMER0) & 0x0080)
  72. #define MCU_BRKIN_FLG_CLR (TIMER_INTF(TIMER0) &= ~0x0080)
  73. #define MCU_POEN_FLG_EN (TIMER_CCHP(TIMER0) |= 0x00008000)
  74. /* SPI CS enable */
  75. #define IO_SPI2_NSS_DISABLE (GPIO_OCTL(GPIOD)|= 0x0004)
  76. #define IO_SPI2_NSS_ENABLE (GPIO_OCTL(GPIOD)&= ~0x0004)
  77. /* I2C Write2EE enable */
  78. #define IO_WRITE2EE_DISABLE (GPIO_OCTL(GPIOC)|= 0x1000)
  79. #define IO_WRITE2EE_ENABLE (GPIO_OCTL(GPIOC) &= ~0x1000)
  80. /* Bike brake state */
  81. #define IO_BIKEBRAKE_STATE (GPIO_ISTAT(GPIOC) & 0x4000)
  82. #define IO_CANDANCEDIR_STATE (GPIO_ISTAT(GPIOB) & 0x0004)
  83. /* Bike light on/off */
  84. #define IO_BIKELIGHT_FRONT_ON (GPIO_OCTL(GPIOC) |= 0x8000)
  85. #define IO_BIKELIGHT_FRONT_OFF (GPIO_OCTL(GPIOC) &= ~0x8000)
  86. #define IO_BIKELIGHT_FRONT_12V_ENABLE (GPIO_OCTL(GPIOC) |= 0x2000)
  87. #define IO_BIKELIGHT_FRONT_12V_DISABLE (GPIO_OCTL(GPIOC) &= ~0x2000)
  88. #define IO_BIKELIGHT_REAR_ON (GPIO_OCTL(GPIOC) |= 0x0100)
  89. #define IO_BIKELIGHT_REAR_OFF (GPIO_OCTL(GPIOC) &= ~0x0100)
  90. #define IO_BIKELIGHT_REAR_12V_ENABLE (GPIO_OCTL(GPIOC) |= 0x0080)
  91. #define IO_BIKELIGHT_REAR_12V_DISABLE (GPIO_OCTL(GPIOC) &= ~0x0080)
  92. /* Power lock on/off */
  93. #define IO_POWERLOCK_ON (GPIO_OCTL(GPIOC) |= 0x0002)
  94. #define IO_POWERLOCK_OFF (GPIO_OCTL(GPIOC) &= ~0x0002)
  95. #define IO_POWER_STATE (GPIO_ISTAT(GPIOC) & 0x0001)
  96. /* TIMER1 capture value */
  97. #define TIMER1_CAP_BIKESPD TIMER_CH3CV(TIMER1)
  98. #define TIMER1_CAP_CANDANCE TIMER_CH2CV(TIMER1)
  99. /************************************************************************
  100. TypeDefs & Structure defines (N/A)
  101. ************************************************************************/
  102. /************************************************************************
  103. Constant Table
  104. *************************************************************************/
  105. /************************************************************************
  106. Exported Variables
  107. ************************************************************************/
  108. #ifdef _HWSETUP_C_
  109. _HWSETUP_EXT BOOL hw_blPWMOnFlg = FALSE;
  110. _HWSETUP_EXT BOOL hw_blChrgOvrFlg = FALSE;
  111. _HWSETUP_EXT UWORD hw_uwChrgCt = 0;
  112. _HWSETUP_EXT UWORD hw_uwPWMCmpr[TIM1_DMA_NUM];
  113. _HWSETUP_EXT UWORD hw_uwADC0[ADC0_DMA_NUM];
  114. _HWSETUP_EXT UWORD hw_uwADC1[ADC1_DMA_NUM];
  115. _HWSETUP_EXT UWORD hw_uwADC2[ADC2_DMA_NUM];
  116. #else
  117. _HWSETUP_EXT BOOL hw_blPWMOnFlg;
  118. _HWSETUP_EXT BOOL hw_blChrgOvrFlg;
  119. _HWSETUP_EXT UWORD hw_uwChrgCt;
  120. _HWSETUP_EXT UWORD hw_uwPWMCmpr[TIM1_DMA_NUM];
  121. _HWSETUP_EXT UWORD hw_uwADC0[ADC0_DMA_NUM];
  122. _HWSETUP_EXT UWORD hw_uwADC1[ADC1_DMA_NUM];
  123. _HWSETUP_EXT UWORD hw_uwADC2[ADC2_DMA_NUM];
  124. #endif
  125. /************************************************************************
  126. RAM ALLOCATION (N/A)
  127. ************************************************************************/
  128. /************************************************************************
  129. Exported Function Call Prototypes
  130. ************************************************************************/
  131. #ifdef _HWSETUP_C_
  132. _HWSETUP_EXT void hw_voHardwareSetup1(void);
  133. _HWSETUP_EXT void hw_voHardwareSetup2(void);
  134. _HWSETUP_EXT void hw_voInitSysCtrl(void);
  135. _HWSETUP_EXT void hw_voInitInt(void);
  136. _HWSETUP_EXT void hw_voInitPeri(void);
  137. _HWSETUP_EXT void hw_voInitGPIO(void);
  138. _HWSETUP_EXT void hw_voEnInt(void);
  139. _HWSETUP_EXT void hw_voTimEn(void);
  140. _HWSETUP_EXT void hw_voInitDMA(void);
  141. _HWSETUP_EXT void hw_voInitADC(void);
  142. _HWSETUP_EXT void hw_voInitTim0(void);
  143. _HWSETUP_EXT void hw_voInitTim1(void);
  144. _HWSETUP_EXT void hw_voInitTim2(void);
  145. _HWSETUP_EXT void hw_voInitTim3(void);
  146. _HWSETUP_EXT void hw_voInitTim5(void);
  147. _HWSETUP_EXT void hw_voInitTim6(void);
  148. _HWSETUP_EXT void hw_voInitUART3(void);
  149. _HWSETUP_EXT void hw_voInitSPI2(void);
  150. _HWSETUP_EXT void hw_voInitI2C0(void);
  151. _HWSETUP_EXT void hw_voInitSysTick(void);
  152. _HWSETUP_EXT void hw_voInitCAN(void);
  153. _HWSETUP_EXT void hw_voPWMInit(void);
  154. _HWSETUP_EXT void hw_voPWMOn(void);
  155. _HWSETUP_EXT void hw_voPWMOff(void);
  156. _HWSETUP_EXT void hw_voCharge(void);
  157. _HWSETUP_EXT void hw_voThrPhsShrt(void);
  158. _HWSETUP_EXT void hw_voIWDGInit(UWORD prer, UWORD rlr);
  159. _HWSETUP_EXT void hw_voInitEXTI(void);
  160. #else
  161. _HWSETUP_EXT void hw_voHardwareSetup1(void);
  162. _HWSETUP_EXT void hw_voHardwareSetup2(void);
  163. _HWSETUP_EXT void hw_voEnInt(void);
  164. _HWSETUP_EXT void hw_voTimEn(void);
  165. _HWSETUP_EXT void hw_voPWMInit(void);
  166. _HWSETUP_EXT void hw_voPWMOn(void);
  167. _HWSETUP_EXT void hw_voPWMOff(void);
  168. _HWSETUP_EXT void hw_voCharge(void);
  169. _HWSETUP_EXT void hw_voThrPhsShrt(void);
  170. _HWSETUP_EXT void hw_voIWDGInit(UWORD prer, UWORD rlr);
  171. #endif
  172. /************************************************************************
  173. Flag Define (N/A)
  174. ************************************************************************/
  175. #ifdef __cplusplus
  176. }
  177. #endif // __cplusplus
  178. #endif
  179. /************************************************************************
  180. Copyright (c) 2022 Welling Motor Technology(Shanghai) Co. Ltd.
  181. All rights reserved.
  182. *************************************************************************
  183. End of this File (EOF)!
  184. Do not put anything after this part!
  185. ************************************************************************/