can.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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 <stdbool.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 (uint16_t)0x701
  63. #define ID_TO_MC_MASK (uint16_t)0x70F
  64. #define ID_BC_FILTER (uint16_t)0x700
  65. #define ID_BC_MASK (uint16_t)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. uint16_t ucBufID; // ID
  78. uint8_t ucBufSize; //缓冲区数组:缓冲区大小
  79. uint8_t ucBufWrInde; //缓冲区数组:写索引
  80. uint8_t ucBufRdInde; //缓冲区数组:读索引
  81. uint8_t ucBufCnt; //缓冲区数组:数据计数
  82. uint8_t ucBufOvf; //缓冲区数组:溢出标志,注意清零
  83. uint8_t *pcBufAddr; //缓冲区数组:首地址指针变量
  84. uint32_t 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 uint8_t can_ubMbox;
  97. #else
  98. /* GD MCU */
  99. CAN_EXT can_receive_message_struct stRxMessage1;
  100. CAN_EXT can_receive_message_struct *pRxMsg;
  101. CAN_EXT can_trasnmit_message_struct stTxMessage1;
  102. CAN_EXT can_trasnmit_message_struct *pTxMsg;
  103. CAN_EXT uint8_t can_ubMbox;
  104. #endif
  105. /************************************************************************
  106. RAM ALLOCATION (N/A)
  107. *************************************************************************/
  108. /************************************************************************
  109. Exported Function Call Prototypes
  110. *************************************************************************/
  111. #ifdef _CAN_C_
  112. CAN_EXT void CAN_Rx_ISR(CAN_Buf_TypeDef *ptCANRx, uint8_t ucLength);
  113. CAN_EXT uint8_t cd_ReadChar(CAN_Buf_TypeDef *ptCANRx, uint8_t ucNum);
  114. CAN_EXT void cd_DelChar(CAN_Buf_TypeDef *ptCANRx, uint8_t ucNum);
  115. CAN_EXT uint32_t CRC32_Calculate(uint8_t *pData, uint16_t Length);
  116. #else
  117. CAN_EXT void CAN_Rx_ISR(CAN_Buf_TypeDef *ptCANRx, uint8_t ucLength);
  118. CAN_EXT void CAN_SendData(uint16_t ID, uint8_t *Data, uint16_t Length);
  119. CAN_EXT void SendData(uint16_t ID, uint8_t Mode, uint16_t Command, uint8_t *Data);
  120. CAN_EXT uint8_t cd_ReadChar(CAN_Buf_TypeDef *ptCANRx, uint8_t ucNum);
  121. CAN_EXT void cd_DelChar(CAN_Buf_TypeDef *ptCANRx, uint8_t ucNum);
  122. CAN_EXT void CAN_RxData_Process(CAN_Buf_TypeDef *ptCANRx, uint16_t TimeOutCnt);
  123. CAN_EXT void CanRx_Process(void);
  124. CAN_EXT void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t *Data);
  125. CAN_EXT uint32_t CRC32_Calculate(uint8_t *pData, uint16_t Length);
  126. #endif
  127. void Can_voInitMC_Run();
  128. /************************************************************************
  129. Flag Define (N/A)
  130. *************************************************************************/
  131. #endif
  132. /************************************************************************
  133. Copyright (c) 2022 Welling Motor Technology(Shanghai) Co. Ltd.
  134. All rights reserved.
  135. *************************************************************************
  136. End of this File (EOF)!
  137. Do not put anything after this part!
  138. *************************************************************************/