Declaration.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. /**
  2. * @copyright None
  3. * @file Declaration.h
  4. * @author Comment Vivre
  5. * @date 2024-08-26
  6. * @brief None
  7. */
  8. #ifndef __DECLARATION_H_
  9. #define __DECLARATION_H_
  10. #include <VaribleDef.h>
  11. /**
  12. @brief 状态处理函数
  13. */
  14. void MC_Control(void);
  15. uint8 Drv_SectionCheak(void);
  16. void VariablesPreInit(void);
  17. void GetCurrentOffset(void);
  18. void Motor_Ready (void);
  19. void Motor_Init (void);
  20. void FOC_Init(void);
  21. void Motor_Charge(void);
  22. void MC_Stop(void);
  23. void MC_Break(void);
  24. void Motor_Static_Open(void);
  25. void Motor_FocTailWind_Open(void);
  26. void Motor_Align(void);
  27. void Motor_TailWind(void);
  28. void McTailWindDealwith(void);
  29. void TailWindDealwith(void);
  30. void TargetRef_Process(void);
  31. void Speed_response(void);
  32. int16 Motor_Ramp(int16 ref);
  33. void VSPSample(void);
  34. void ONOFF_Starttest(void);
  35. void ATORamp(void);
  36. void TickCycle_1ms(void);
  37. void PWMInputCapture(void);
  38. void FGOutput(void);
  39. void Fault_GetCurrentOffset(void);
  40. uint32 Abs_F32(int32 value);
  41. void SinCal(int16 Ref, int16 Theta, int16 * Sin, int16 * Cos);
  42. uint16 SqrtUDQ(int16 sqrtUd, int16 sqrtUq);
  43. void LedDisplay(uint8 uLedMask);
  44. void zeroLoss(void);
  45. // 保护相关
  46. void Fault_Detection(void);
  47. void Fault_OverCurrent(void);
  48. void Fault_Temperature(void);
  49. void Fault_Voltage(void);
  50. void Fault_Stall(void);
  51. void Fault_PhaseLoss(void);
  52. void UnderProcess(void);
  53. void Fault_Power(void);
  54. // 硬件初始化声明
  55. void AMP_Init(void);
  56. void ADC_Init(void);
  57. void CMP0_Init(void);
  58. void CMP3_Init(void);
  59. void CMP3_Interrupt_Init(void);
  60. unsigned short CRC_Check(unsigned char start_sector , unsigned char offset_sector);
  61. void Driver_Init(void);
  62. void GPIO_Init(void);
  63. void GPIO_Default_Init(void);
  64. void SPI_Init(void);
  65. void TSD_Init(void);
  66. void TEMP_Check(void);
  67. void PI_Init(void);
  68. void PI2_Init(void);
  69. void PI3_Init(void);
  70. void UART1_Init(void);
  71. void UART2_Init(void);
  72. void put_char(unsigned char c);
  73. void put_string(unsigned char *str);
  74. /**
  75. @brief DMA相关
  76. */
  77. typedef enum
  78. {
  79. UART_DRAM = 0,
  80. DRAM_UART = DMACFG0,
  81. I2C_DRAM = DMACFG1,
  82. DRAM_I2C = DMACFG1 | DMACFG0,
  83. SPI_DRAM = DMACFG2,
  84. DRAM_SPI = DMACFG2 | DMACFG0,
  85. UART2_DRAM = DMACFG2 | DMACFG1,
  86. DRAM_UART2 = DMACFG2 | DMACFG1 | DMACFG0
  87. }eType_DMA_PIPE;
  88. typedef enum
  89. {
  90. DMA_IRQ_L1 = 0,
  91. DMA_IRQ_L2 = 0x40,
  92. DMA_IRQ_L3 = 0x80,
  93. DMA_IRQ_L4 = 0xc0
  94. }eType_DMA_IRQ;
  95. typedef enum
  96. {
  97. BIG_ENDIAN = 0,
  98. LITTLE_ENDIAN = ENDIAN
  99. }eType_DMA_Endian;
  100. typedef enum
  101. {
  102. DMA_BSY = DMABSY,
  103. DMA_IRQ = DMAIF
  104. }eType_DMA_Statu;
  105. void SetPipe_DMA0(eType_DMA_PIPE ePipe);
  106. void SetPipe_DMA1(eType_DMA_PIPE ePipe);
  107. void SetDataPackage_DMA0(unsigned short ulAddr, char cLen);
  108. void SetDataPackage_DMA1(unsigned short ulAddr, char cLen);
  109. void EnableRun_DMA0(void);
  110. void EnableRun_DMA1(void);
  111. bool GetStatus_DMA0(eType_DMA_Statu eStatu);
  112. bool GetStatus_DMA1(eType_DMA_Statu eStatu);
  113. void SetEndian_DMA(eType_DMA_Endian eEndian);
  114. void SetIRQ_DMA(ebool eIRQ, eType_DMA_IRQ eIP);
  115. void SetDbgMod_DMA(void);
  116. void SetDbgData_DMA(unsigned short ulAddr);
  117. void Set_DBG_DMA(uint16 DMAAddr);
  118. /**
  119. @brief 过零点检测
  120. */
  121. void ZeroCrossing_Init(void);
  122. /**
  123. @brief 定时器
  124. */
  125. #define TIM3_Fre (750000.0) // TIM0计数频率750KHz
  126. #define TIM4_Fre (6000.0) // TIM0计数频率6KHz
  127. void Timer1_Init(void);
  128. void Timer2_Init(void);
  129. void Timer3_Init(void);
  130. void Timer4_Init(void);
  131. void TIM4_Init_RF(void);
  132. /* ------------------------------------------- 功能 ------------------------------------------------------------- */
  133. /**
  134. @brief RSD顺逆风
  135. */
  136. void RsdProcess(void);
  137. void RSDTailWindStart(void);
  138. void RSDDetectInit(void);
  139. MotStateType RSDStartProcess(void);
  140. /**
  141. @brief FOC顺逆风
  142. */
  143. void FocDetectInit(void);
  144. void FOCCloseLoopStart(void);
  145. void FOC_TailWindDealwith(void);
  146. /**
  147. @brief 弱磁
  148. */
  149. void FiledWeakenInit(void);
  150. void FileWeakenControl(void);
  151. /**
  152. @brief BMEF顺逆风
  153. */
  154. void BEMFDetectInit(void);
  155. void BemfProcess(void);
  156. void BEMFFOCCloseLoopStart(void);
  157. MotStateType Bemf_Start_Process(void);
  158. /**
  159. @brief 电压补偿
  160. */
  161. void VoltageCompensation(uint8 VCCtrlMode, uint16 VCmcDcbusFlt);
  162. void BusAverageVoltage(void);
  163. typedef struct
  164. {
  165. uint8 CheckCount; //
  166. uint8 TSD_Enable_Flag; // 温度检测使能标志位
  167. uint8 TSD_Trigger_Flag; // 温度检测触发标志位
  168. uint8 ActualTemper; //
  169. uint16 Trigger_Value; //
  170. uint16 TSD_Dec_Time; // 温度检测时间计数
  171. }MCUTemperature;
  172. extern MCUTemperature xdata TSDTemperature;
  173. typedef struct
  174. {
  175. uint8 ScrOnAngleTimeDatum; //期望给定 导通延迟时间 单位为 1/载波频率
  176. uint8 ScrOnAngleTime; //实际给定 导通延迟时间 单位为 1/载波频率
  177. uint8 ScrOnPeriod; //控制周期
  178. uint16 Temperature; //温度值
  179. uint16 TemperatureDatum[3]; //温度期望值
  180. uint16 TPCtrlDealy; // 发热丝导通延时计数
  181. uint8 ScrOnZeroFlag; //控制周期
  182. uint16 ScrOnZeroCnt;
  183. } USER_TYPEDEF;
  184. extern USER_TYPEDEF User;
  185. typedef struct
  186. {
  187. uint16 LEDCnt;
  188. uint8 FlagLED;
  189. // uint8 FlagStepTime;
  190. // uint16 LEDTimeCnt;
  191. } LEDCtl_TypeDef;
  192. extern LEDCtl_TypeDef LEDCtl;
  193. #define LED1_MASK ((uint8)(1 << 0))
  194. #define LED2_MASK ((uint8)(1 << 1))
  195. #define LED3_MASK ((uint8)(1 << 2))
  196. #define LED4_MASK ((uint8)(1 << 3))
  197. #define LED5_MASK ((uint8)(1 << 4))
  198. #define LED6_MASK ((uint8)(1 << 5))
  199. void LedDisplay(uint8 uLedMask);
  200. /**
  201. @brief 按键函数声明
  202. */
  203. #define SW3 GP33
  204. #define SW1 GP33
  205. #define SW2 GP26
  206. void KeyInit(void);
  207. int KeyValue(void);
  208. int KeyValue1(void);
  209. void KeyScan(void);
  210. #endif