can.h 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  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 FRAME_BEGIN1 0x55
  52. #define FRAME_BEGIN2 0xAA
  53. #define FRAME_END 0xF0
  54. #define MODE_READ 0x11
  55. #define MODE_WRITE 0x16
  56. #define MODE_REPORT 0x0C
  57. typedef struct
  58. {
  59. UWORD ucBufID; // ID
  60. UBYTE ucBufSize; //缓冲区数组:缓冲区大小
  61. UBYTE ucBufWrInde; //缓冲区数组:写索引
  62. UBYTE ucBufRdInde; //缓冲区数组:读索引
  63. UBYTE ucBufCnt; //缓冲区数组:数据计数
  64. UBYTE ucBufOvf; //缓冲区数组:溢出标志,注意清零
  65. UBYTE *pcBufAddr; //缓冲区数组:首地址指针变量
  66. ULONG DelayTimeCnt; //超时计时
  67. BOOL IsWaitRX_Flag; //超时等待数据标志
  68. } CAN_Buf_TypeDef;
  69. void CAN_Rx_ISR(CAN_Buf_TypeDef *ptCANRx, UBYTE ucLength);
  70. void CAN_SendData(UWORD ID, const UBYTE Data[], UWORD Length);
  71. void SendData(UWORD ID, UBYTE Mode, UWORD Command, const UBYTE *Data);
  72. UBYTE cd_ReadChar(const CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  73. void cd_DelChar(CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  74. void CAN_RxData_Process(CAN_Buf_TypeDef *ptCANRx, UWORD TimeOutCnt);
  75. void CanRx_Process(void);
  76. void DataProcess(UWORD ID, UBYTE Mode, UWORD Cmd, UBYTE Data[]);
  77. ULONG CRC32_Calculate(const UBYTE pData[], UWORD Length);
  78. #else
  79. #include "typedefine.h"
  80. #include "gd32f30x.h"
  81. /************************************************************************
  82. Compiler Directives (N/A)
  83. *************************************************************************/
  84. #ifdef _CAN_C_
  85. #define CAN_EXT
  86. #else
  87. #define CAN_EXT extern
  88. #endif
  89. /************************************************************************
  90. Definitions & Macros
  91. *************************************************************************/
  92. #define CAN_MC_ALARMCODE_DEFAULT \
  93. { \
  94. 0x00000000 \
  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 FRAME_BEGIN1 0x55
  125. #define FRAME_BEGIN2 0xAA
  126. #define FRAME_END 0xF0
  127. #define MODE_READ 0x11
  128. #define MODE_WRITE 0x16
  129. #define MODE_REPORT 0x0C
  130. /************************************************************************
  131. TypeDefs & Structure defines (N/A)
  132. *************************************************************************/
  133. typedef struct
  134. {
  135. UWORD ucBufID; // ID
  136. UBYTE ucBufSize; //缓冲区数组:缓冲区大小
  137. UBYTE ucBufWrInde; //缓冲区数组:写索引
  138. UBYTE ucBufRdInde; //缓冲区数组:读索引
  139. UBYTE ucBufCnt; //缓冲区数组:数据计数
  140. UBYTE ucBufOvf; //缓冲区数组:溢出标志,注意清零
  141. UBYTE *pcBufAddr; //缓冲区数组:首地址指针变量
  142. ULONG DelayTimeCnt; //超时计时
  143. BOOL IsWaitRX_Flag; //超时等待数据标志
  144. } CAN_Buf_TypeDef;
  145. /************************************************************************
  146. Exported Variables
  147. *************************************************************************/
  148. #ifdef _CAN_C_
  149. /* GD MCU */
  150. CAN_EXT can_receive_message_struct stRxMessage1;
  151. CAN_EXT can_receive_message_struct *pRxMsg = &stRxMessage1;
  152. CAN_EXT can_trasnmit_message_struct stTxMessage1;
  153. CAN_EXT can_trasnmit_message_struct *pTxMsg = &stTxMessage1;
  154. CAN_EXT UBYTE can_ubMbox;
  155. CAN_EXT UBYTE CAN_RxBuf_PBU[255]; //用于接收PBU广播和发送给MC的数据
  156. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_PBU = {0, 255, 0, 0, 0, 0, CAN_RxBuf_PBU, 0, FALSE};
  157. CAN_EXT UBYTE CAN_RxBuf_BMS[255]; //用于接收BMS广播和发送给MC的数据
  158. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_BMS = {0, 255, 0, 0, 0, 0, CAN_RxBuf_BMS, 0, FALSE};
  159. CAN_EXT UBYTE CAN_RxBuf_HMI[255]; //用于接收HMI广播和发送给MC的数据
  160. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_HMI = {0, 255, 0, 0, 0, 0, CAN_RxBuf_HMI, 0, FALSE};
  161. CAN_EXT UBYTE CAN_RxBuf_CDL[255]; //用于接收CDL广播和发送给MC的数据
  162. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_CDL = {0, 255, 0, 0, 0, 0, CAN_RxBuf_CDL, 0, FALSE};
  163. #else
  164. /* GD MCU */
  165. CAN_EXT can_receive_message_struct stRxMessage1;
  166. CAN_EXT can_receive_message_struct *pRxMsg;
  167. CAN_EXT can_trasnmit_message_struct stTxMessage1;
  168. CAN_EXT can_trasnmit_message_struct *pTxMsg;
  169. CAN_EXT UBYTE can_ubMbox;
  170. CAN_EXT UBYTE CAN_RxBuf_PBU[255]; //用于接收PBU广播和发送给MC的数据
  171. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_PBU;
  172. CAN_EXT UBYTE CAN_RxBuf_BMS[255]; //用于接收BMS广播和发送给MC的数据
  173. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_BMS;
  174. CAN_EXT UBYTE CAN_RxBuf_HMI[255]; //用于接收HMI广播和发送给MC的数据
  175. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_HMI;
  176. CAN_EXT UBYTE CAN_RxBuf_CDL[255]; //用于接收CDL广播和发送给MC的数据
  177. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_CDL;
  178. #endif
  179. /************************************************************************
  180. RAM ALLOCATION (N/A)
  181. *************************************************************************/
  182. /************************************************************************
  183. Exported Function Call Prototypes
  184. *************************************************************************/
  185. #ifdef _CAN_C_
  186. CAN_EXT void CAN_Rx_ISR(CAN_Buf_TypeDef *ptCANRx, UBYTE ucLength);
  187. CAN_EXT void CAN_SendData(UWORD ID, const UBYTE Data[], UWORD Length);
  188. CAN_EXT void SendData(UWORD ID, UBYTE Mode, UWORD Command, const UBYTE *Data);
  189. CAN_EXT UBYTE cd_ReadChar(const CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  190. CAN_EXT void cd_DelChar(CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  191. CAN_EXT void CAN_RxData_Process(CAN_Buf_TypeDef *ptCANRx, UWORD TimeOutCnt);
  192. CAN_EXT void CanRx_Process(void);
  193. CAN_EXT void DataProcess(UWORD ID, UBYTE Mode, UWORD Cmd, UBYTE Data[]);
  194. CAN_EXT ULONG CRC32_Calculate(const UBYTE pData[], UWORD Length);
  195. #else
  196. CAN_EXT void CAN_Rx_ISR(CAN_Buf_TypeDef *ptCANRx, UBYTE ucLength);
  197. CAN_EXT void CAN_SendData(UWORD ID, const UBYTE Data[], UWORD Length);
  198. CAN_EXT void SendData(UWORD ID, UBYTE Mode, UWORD Command, const UBYTE *Data);
  199. CAN_EXT UBYTE cd_ReadChar(const CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  200. CAN_EXT void cd_DelChar(CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  201. CAN_EXT void CAN_RxData_Process(CAN_Buf_TypeDef *ptCANRx, UWORD TimeOutCnt);
  202. CAN_EXT void CanRx_Process(void);
  203. CAN_EXT void DataProcess(UWORD ID, UBYTE Mode, UWORD Cmd, UBYTE Data[]);
  204. CAN_EXT ULONG CRC32_Calculate(const UBYTE pData[], UWORD Length);
  205. #endif
  206. /************************************************************************
  207. Flag Define (N/A)
  208. *************************************************************************/
  209. #endif
  210. #endif
  211. /************************************************************************
  212. Copyright (c) 2022 Welling Motor Technology(Shanghai) Co. Ltd.
  213. All rights reserved.
  214. *************************************************************************
  215. End of this File (EOF)!
  216. Do not put anything after this part!
  217. *************************************************************************/