can.h 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. /************************************************************************
  2. Project: Washing Machine Drive
  3. Filename: classB.h
  4. Partner Filename: N/A
  5. Description: Partner file of main.c
  6. Complier: IAR Embedded Workbench for ARM 8.40.2, IAR Systems.
  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 CAN_H
  20. #define CAN_H
  21. #ifdef RUN_ARCH_SIM
  22. #include "typedefine.h"
  23. #define ID_MC_BC 0x710
  24. #define ID_MC_TO_BMS 0x712
  25. #define ID_MC_TO_PBU 0x713
  26. #define ID_MC_TO_HMI 0x714
  27. #define ID_MC_TO_CDL 0x715
  28. #define ID_BMS_BC 0x720
  29. #define ID_BMS_TO_MC 0x721
  30. #define ID_BMS_TO_PBU 0x723
  31. #define ID_BMS_TO_HMI 0x724
  32. #define ID_BMS_TO_CDL 0x725
  33. #define ID_PBU_BC 0x730
  34. #define ID_PBU_TO_MC 0x731
  35. #define ID_PBU_TO_BMS 0x732
  36. #define ID_PBU_TO_CDL 0x735
  37. #define ID_HMI_BC 0x740
  38. #define ID_HMI_TO_MC 0x741
  39. #define ID_HMI_TO_BMS 0x742
  40. #define ID_HMI_TO_PBU 0x743
  41. #define ID_HMI_TO_CDL 0x745
  42. #define ID_CDL_BC 0x750
  43. #define ID_CDL_TO_MC 0x751
  44. #define ID_CDL_TO_BMS 0x752
  45. #define ID_CDL_TO_PBU 0x753
  46. #define ID_CDL_TO_HMI 0x754
  47. #define ID_TO_MC_FILTER (UWORD)0x701
  48. #define ID_TO_MC_MASK (UWORD)0x70F
  49. #define ID_BC_FILTER (UWORD)0x700
  50. #define ID_BC_MASK (UWORD)0x70F
  51. #define ID_ENVIOLO_TO_MC_1 0x7AA
  52. #define ID_ENVIOLO_TO_MC_2 0x7AB
  53. #define ID_ENVIOLO_FILTER 0x7AA
  54. #define ID_ENVIOLO_MASK 0x7FE
  55. #define FRAME_BEGIN1 0x55
  56. #define FRAME_BEGIN2 0xAA
  57. #define FRAME_END 0xF0
  58. #define MODE_READ 0x11
  59. #define MODE_WRITE 0x16
  60. #define MODE_REPORT 0x0C
  61. typedef struct
  62. {
  63. UWORD ucBufID; // ID
  64. UBYTE ucBufSize; //缓冲区数组:缓冲区大小
  65. UBYTE ucBufWrInde; //缓冲区数组:写索引
  66. UBYTE ucBufRdInde; //缓冲区数组:读索引
  67. UBYTE ucBufCnt; //缓冲区数组:数据计数
  68. UBYTE ucBufOvf; //缓冲区数组:溢出标志,注意清零
  69. UBYTE *pcBufAddr; //缓冲区数组:首地址指针变量
  70. ULONG DelayTimeCnt; //超时计时
  71. BOOL IsWaitRX_Flag; //超时等待数据标志
  72. } CAN_Buf_TypeDef;
  73. void CAN_Rx_ISR(CAN_Buf_TypeDef *ptCANRx, UBYTE ucLength);
  74. void CAN_SendData(UWORD ID, const UBYTE Data[], UWORD Length);
  75. void SendData(UWORD ID, UBYTE Mode, UWORD Command, const UBYTE *Data);
  76. UBYTE cd_ReadChar(const CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  77. void cd_DelChar(CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  78. void CAN_RxData_Process(CAN_Buf_TypeDef *ptCANRx, UWORD TimeOutCnt);
  79. void CanRx_Process(void);
  80. void DataProcess(UWORD ID, UBYTE Mode, UWORD Cmd, UBYTE Data[]);
  81. ULONG CRC32_Calculate(const UBYTE pData[], UWORD Length);
  82. #else
  83. #include "typedefine.h"
  84. #include "gd32f30x.h"
  85. /************************************************************************
  86. Compiler Directives (N/A)
  87. *************************************************************************/
  88. #ifdef _CAN_C_
  89. #define CAN_EXT
  90. #else
  91. #define CAN_EXT extern
  92. #endif
  93. /************************************************************************
  94. Definitions & Macros
  95. *************************************************************************/
  96. #define ID_MC_BC 0x710
  97. #define ID_MC_TO_BMS 0x712
  98. #define ID_MC_TO_PBU 0x713
  99. #define ID_MC_TO_HMI 0x714
  100. #define ID_MC_TO_CDL 0x715
  101. #define ID_BMS_BC 0x720
  102. #define ID_BMS_TO_MC 0x721
  103. #define ID_BMS_TO_PBU 0x723
  104. #define ID_BMS_TO_HMI 0x724
  105. #define ID_BMS_TO_CDL 0x725
  106. #define ID_PBU_BC 0x730
  107. #define ID_PBU_TO_MC 0x731
  108. #define ID_PBU_TO_BMS 0x732
  109. #define ID_PBU_TO_CDL 0x735
  110. #define ID_HMI_BC 0x740
  111. #define ID_HMI_TO_MC 0x741
  112. #define ID_HMI_TO_BMS 0x742
  113. #define ID_HMI_TO_PBU 0x743
  114. #define ID_HMI_TO_CDL 0x745
  115. #define ID_CDL_BC 0x750
  116. #define ID_CDL_TO_MC 0x751
  117. #define ID_CDL_TO_BMS 0x752
  118. #define ID_CDL_TO_PBU 0x753
  119. #define ID_CDL_TO_HMI 0x754
  120. #define ID_TO_MC_FILTER (UWORD)0x701
  121. #define ID_TO_MC_MASK (UWORD)0x70F
  122. #define ID_BC_FILTER (UWORD)0x700
  123. #define ID_BC_MASK (UWORD)0x70F
  124. #define ID_ENVIOLO_TO_MC_1 0x7AA
  125. #define ID_ENVIOLO_TO_MC_2 0x7AB
  126. #define ID_ENVIOLO_FILTER 0x7AA
  127. #define ID_ENVIOLO_MASK 0x7FE
  128. #define FRAME_BEGIN1 0x55
  129. #define FRAME_BEGIN2 0xAA
  130. #define FRAME_END 0xF0
  131. #define MODE_READ 0x11
  132. #define MODE_WRITE 0x16
  133. #define MODE_REPORT 0x0C
  134. /************************************************************************
  135. TypeDefs & Structure defines (N/A)
  136. *************************************************************************/
  137. typedef struct
  138. {
  139. UWORD ucBufID; // ID
  140. UBYTE ucBufSize; //缓冲区数组:缓冲区大小
  141. UBYTE ucBufWrInde; //缓冲区数组:写索引
  142. UBYTE ucBufRdInde; //缓冲区数组:读索引
  143. UBYTE ucBufCnt; //缓冲区数组:数据计数
  144. UBYTE ucBufOvf; //缓冲区数组:溢出标志,注意清零
  145. UBYTE *pcBufAddr; //缓冲区数组:首地址指针变量
  146. ULONG DelayTimeCnt; //超时计时
  147. BOOL IsWaitRX_Flag; //超时等待数据标志
  148. } CAN_Buf_TypeDef;
  149. /************************************************************************
  150. Exported Variables
  151. *************************************************************************/
  152. #ifdef _CAN_C_
  153. /* GD MCU */
  154. CAN_EXT can_receive_message_struct stRxMessage1;
  155. CAN_EXT can_receive_message_struct *pRxMsg = &stRxMessage1;
  156. CAN_EXT can_receive_message_struct stRxMessage2;
  157. CAN_EXT can_receive_message_struct *pRxMsg2 = &stRxMessage2;
  158. CAN_EXT can_trasnmit_message_struct stTxMessage1;
  159. CAN_EXT can_trasnmit_message_struct *pTxMsg = &stTxMessage1;
  160. CAN_EXT UBYTE can_ubMbox;
  161. CAN_EXT UBYTE CAN_RxBuf_PBU[255]; //用于接收PBU广播和发送给MC的数据
  162. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_PBU = {0, 255, 0, 0, 0, 0, CAN_RxBuf_PBU, 0, FALSE};
  163. CAN_EXT UBYTE CAN_RxBuf_BMS[255]; //用于接收BMS广播和发送给MC的数据
  164. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_BMS = {0, 255, 0, 0, 0, 0, CAN_RxBuf_BMS, 0, FALSE};
  165. CAN_EXT UBYTE CAN_RxBuf_HMI[255]; //用于接收HMI广播和发送给MC的数据
  166. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_HMI = {0, 255, 0, 0, 0, 0, CAN_RxBuf_HMI, 0, FALSE};
  167. CAN_EXT UBYTE CAN_RxBuf_CDL[255]; //用于接收CDL广播和发送给MC的数据
  168. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_CDL = {0, 255, 0, 0, 0, 0, CAN_RxBuf_CDL, 0, FALSE};
  169. #else
  170. /* GD MCU */
  171. CAN_EXT can_receive_message_struct stRxMessage1;
  172. CAN_EXT can_receive_message_struct *pRxMsg;
  173. CAN_EXT can_receive_message_struct stRxMessage2;
  174. CAN_EXT can_receive_message_struct *pRxMsg2;
  175. CAN_EXT can_trasnmit_message_struct stTxMessage1;
  176. CAN_EXT can_trasnmit_message_struct *pTxMsg;
  177. CAN_EXT UBYTE can_ubMbox;
  178. CAN_EXT UBYTE CAN_RxBuf_PBU[255]; //用于接收PBU广播和发送给MC的数据
  179. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_PBU;
  180. CAN_EXT UBYTE CAN_RxBuf_BMS[255]; //用于接收BMS广播和发送给MC的数据
  181. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_BMS;
  182. CAN_EXT UBYTE CAN_RxBuf_HMI[255]; //用于接收HMI广播和发送给MC的数据
  183. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_HMI;
  184. CAN_EXT UBYTE CAN_RxBuf_CDL[255]; //用于接收CDL广播和发送给MC的数据
  185. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_CDL;
  186. #endif
  187. /************************************************************************
  188. RAM ALLOCATION (N/A)
  189. *************************************************************************/
  190. /************************************************************************
  191. Exported Function Call Prototypes
  192. *************************************************************************/
  193. #ifdef _CAN_C_
  194. CAN_EXT void CAN_Rx_ISR(CAN_Buf_TypeDef *ptCANRx, UBYTE ucLength);
  195. CAN_EXT void CAN_SendData(UWORD ID, const UBYTE Data[], UWORD Length);
  196. CAN_EXT void SendData(UWORD ID, UBYTE Mode, UWORD Command, const UBYTE *Data);
  197. CAN_EXT UBYTE cd_ReadChar(const CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  198. CAN_EXT void cd_DelChar(CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  199. CAN_EXT void CAN_RxData_Process(CAN_Buf_TypeDef *ptCANRx, UWORD TimeOutCnt);
  200. CAN_EXT void CanRx_Process(void);
  201. CAN_EXT void DataProcess(UWORD ID, UBYTE Mode, UWORD Cmd, UBYTE Data[]);
  202. CAN_EXT ULONG CRC32_Calculate(const UBYTE pData[], UWORD Length);
  203. #else
  204. CAN_EXT void CAN_Rx_ISR(CAN_Buf_TypeDef *ptCANRx, UBYTE ucLength);
  205. CAN_EXT void CAN_SendData(UWORD ID, const UBYTE Data[], UWORD Length);
  206. CAN_EXT void SendData(UWORD ID, UBYTE Mode, UWORD Command, const UBYTE *Data);
  207. CAN_EXT UBYTE cd_ReadChar(const CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  208. CAN_EXT void cd_DelChar(CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  209. CAN_EXT void CAN_RxData_Process(CAN_Buf_TypeDef *ptCANRx, UWORD TimeOutCnt);
  210. CAN_EXT void CanRx_Process(void);
  211. CAN_EXT void DataProcess(UWORD ID, UBYTE Mode, UWORD Cmd, UBYTE Data[]);
  212. CAN_EXT ULONG CRC32_Calculate(const UBYTE pData[], UWORD Length);
  213. #endif
  214. /************************************************************************
  215. Flag Define (N/A)
  216. *************************************************************************/
  217. #endif
  218. #endif
  219. /************************************************************************
  220. Copyright (c) 2022 Welling Motor Technology(Shanghai) Co. Ltd.
  221. All rights reserved.
  222. *************************************************************************
  223. End of this File (EOF)!
  224. Do not put anything after this part!
  225. *************************************************************************/