can.h 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  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. #include "typedefine.h"
  22. #include "gd32f30x.h"
  23. /************************************************************************
  24. Compiler Directives (N/A)
  25. *************************************************************************/
  26. #ifdef _CAN_C_
  27. #define CAN_EXT
  28. #else
  29. #define CAN_EXT extern
  30. #endif
  31. /************************************************************************
  32. Definitions & Macros
  33. *************************************************************************/
  34. #define CAN_MC_ALARMCODE_DEFAULT \
  35. { \
  36. 0x00000000 \
  37. }
  38. #define ID_MC_BC 0x710
  39. #define ID_MC_TO_BMS 0x712
  40. #define ID_MC_TO_PBU 0x713
  41. #define ID_MC_TO_HMI 0x714
  42. #define ID_MC_TO_CDL 0x715
  43. #define ID_BMS_BC 0x720
  44. #define ID_BMS_TO_MC 0x721
  45. #define ID_BMS_TO_PBU 0x723
  46. #define ID_BMS_TO_HMI 0x724
  47. #define ID_BMS_TO_CDL 0x725
  48. #define ID_PBU_BC 0x730
  49. #define ID_PBU_TO_MC 0x731
  50. #define ID_PBU_TO_BMS 0x732
  51. #define ID_PBU_TO_CDL 0x735
  52. #define ID_HMI_BC 0x740
  53. #define ID_HMI_TO_MC 0x741
  54. #define ID_HMI_TO_BMS 0x742
  55. #define ID_HMI_TO_PBU 0x743
  56. #define ID_HMI_TO_CDL 0x745
  57. #define ID_CDL_BC 0x750
  58. #define ID_CDL_TO_MC 0x751
  59. #define ID_CDL_TO_BMS 0x752
  60. #define ID_CDL_TO_PBU 0x753
  61. #define ID_CDL_TO_HMI 0x754
  62. #define ID_TO_MC_FILTER (UWORD)0x701
  63. #define ID_TO_MC_MASK (UWORD)0x70F
  64. #define ID_BC_FILTER (UWORD)0x700
  65. #define ID_BC_MASK (UWORD)0x70F
  66. #define FRAME_BEGIN1 0x55
  67. #define FRAME_BEGIN2 0xAA
  68. #define FRAME_END 0xF0
  69. #define MODE_READ 0x11
  70. #define MODE_WRITE 0x16
  71. #define MODE_REPORT 0x0C
  72. /************************************************************************
  73. TypeDefs & Structure defines (N/A)
  74. *************************************************************************/
  75. typedef struct
  76. {
  77. UWORD ucBufID; // ID
  78. UBYTE ucBufSize; //缓冲区数组:缓冲区大小
  79. UBYTE ucBufWrInde; //缓冲区数组:写索引
  80. UBYTE ucBufRdInde; //缓冲区数组:读索引
  81. UBYTE ucBufCnt; //缓冲区数组:数据计数
  82. UBYTE ucBufOvf; //缓冲区数组:溢出标志,注意清零
  83. UBYTE *pcBufAddr; //缓冲区数组:首地址指针变量
  84. ULONG DelayTimeCnt; //超时计时
  85. BOOL IsWaitRX_Flag; //超时等待数据标志
  86. } CAN_Buf_TypeDef;
  87. /************************************************************************
  88. Exported Variables
  89. *************************************************************************/
  90. #ifdef _CAN_C_
  91. /* GD MCU */
  92. CAN_EXT can_receive_message_struct stRxMessage1;
  93. CAN_EXT can_receive_message_struct *pRxMsg = &stRxMessage1;
  94. CAN_EXT can_trasnmit_message_struct stTxMessage1;
  95. CAN_EXT can_trasnmit_message_struct *pTxMsg = &stTxMessage1;
  96. CAN_EXT UBYTE can_ubMbox;
  97. CAN_EXT UBYTE CAN_RxBuf_PBU[255]; //用于接收PBU广播和发送给MC的数据
  98. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_PBU = {0, 255, 0, 0, 0, 0, CAN_RxBuf_PBU, 0, FALSE};
  99. CAN_EXT UBYTE CAN_RxBuf_BMS[255]; //用于接收BMS广播和发送给MC的数据
  100. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_BMS = {0, 255, 0, 0, 0, 0, CAN_RxBuf_BMS, 0, FALSE};
  101. CAN_EXT UBYTE CAN_RxBuf_HMI[255]; //用于接收HMI广播和发送给MC的数据
  102. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_HMI = {0, 255, 0, 0, 0, 0, CAN_RxBuf_HMI, 0, FALSE};
  103. CAN_EXT UBYTE CAN_RxBuf_CDL[255]; //用于接收CDL广播和发送给MC的数据
  104. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_CDL = {0, 255, 0, 0, 0, 0, CAN_RxBuf_CDL, 0, FALSE};
  105. #else
  106. /* GD MCU */
  107. CAN_EXT can_receive_message_struct stRxMessage1;
  108. CAN_EXT can_receive_message_struct *pRxMsg;
  109. CAN_EXT can_trasnmit_message_struct stTxMessage1;
  110. CAN_EXT can_trasnmit_message_struct *pTxMsg;
  111. CAN_EXT UBYTE can_ubMbox;
  112. CAN_EXT UBYTE CAN_RxBuf_PBU[255]; //用于接收PBU广播和发送给MC的数据
  113. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_PBU;
  114. CAN_EXT UBYTE CAN_RxBuf_BMS[255]; //用于接收BMS广播和发送给MC的数据
  115. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_BMS;
  116. CAN_EXT UBYTE CAN_RxBuf_HMI[255]; //用于接收HMI广播和发送给MC的数据
  117. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_HMI;
  118. CAN_EXT UBYTE CAN_RxBuf_CDL[255]; //用于接收CDL广播和发送给MC的数据
  119. CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_CDL;
  120. #endif
  121. /************************************************************************
  122. RAM ALLOCATION (N/A)
  123. *************************************************************************/
  124. /************************************************************************
  125. Exported Function Call Prototypes
  126. *************************************************************************/
  127. #ifdef _CAN_C_
  128. CAN_EXT void CAN_Rx_ISR(CAN_Buf_TypeDef *ptCANRx, UBYTE ucLength);
  129. CAN_EXT void CAN_SendData(UWORD ID, const UBYTE Data[], UWORD Length);
  130. CAN_EXT void SendData(UWORD ID, UBYTE Mode, UWORD Command, const UBYTE *Data);
  131. CAN_EXT UBYTE cd_ReadChar(const CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  132. CAN_EXT void cd_DelChar(CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  133. CAN_EXT void CAN_RxData_Process(CAN_Buf_TypeDef *ptCANRx, UWORD TimeOutCnt);
  134. CAN_EXT void CanRx_Process(void);
  135. CAN_EXT void DataProcess(UWORD ID, UBYTE Mode, UWORD Cmd, UBYTE Data[]);
  136. CAN_EXT ULONG CRC32_Calculate(const UBYTE pData[], UWORD Length);
  137. #else
  138. CAN_EXT void CAN_Rx_ISR(CAN_Buf_TypeDef *ptCANRx, UBYTE ucLength);
  139. CAN_EXT void CAN_SendData(UWORD ID, const UBYTE Data[], UWORD Length);
  140. CAN_EXT void SendData(UWORD ID, UBYTE Mode, UWORD Command, const UBYTE *Data);
  141. CAN_EXT UBYTE cd_ReadChar(const CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  142. CAN_EXT void cd_DelChar(CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum);
  143. CAN_EXT void CAN_RxData_Process(CAN_Buf_TypeDef *ptCANRx, UWORD TimeOutCnt);
  144. CAN_EXT void CanRx_Process(void);
  145. CAN_EXT void DataProcess(UWORD ID, UBYTE Mode, UWORD Cmd, UBYTE Data[]);
  146. CAN_EXT ULONG CRC32_Calculate(const UBYTE pData[], UWORD Length);
  147. #endif
  148. /************************************************************************
  149. Flag Define (N/A)
  150. *************************************************************************/
  151. #endif
  152. /************************************************************************
  153. Copyright (c) 2022 Welling Motor Technology(Shanghai) Co. Ltd.
  154. All rights reserved.
  155. *************************************************************************
  156. End of this File (EOF)!
  157. Do not put anything after this part!
  158. *************************************************************************/