/************************************************************************ Project: Washing Machine Drive Filename: classB.h Partner Filename: N/A Description: Partner file of main.c Complier: IAR Embedded Workbench for ARM 8.40.2, IAR Systems. CPU TYPE : GD32F30x ************************************************************************* Copyright (c) 2022 Welling Motor Technology(Shanghai) Co. Ltd. All rights reserved. ************************************************************************* ************************************************************************* Revising History (ECL of this file): ************************************************************************/ /************************************************************************ Beginning of File, do not put anything above here except notes Compiler Directives: *************************************************************************/ #ifndef CAN_H #define CAN_H #include "typedefine.h" #include "gd32f30x.h" /************************************************************************ Compiler Directives (N/A) *************************************************************************/ #ifdef _CAN_C_ #define CAN_EXT #else #define CAN_EXT extern #endif /************************************************************************ Definitions & Macros *************************************************************************/ #define CAN_MC_ALARMCODE_DEFAULT \ { \ 0x00000000 \ } #define ID_MC_BC 0x710 #define ID_MC_TO_BMS 0x712 #define ID_MC_TO_PBU 0x713 #define ID_MC_TO_HMI 0x714 #define ID_MC_TO_CDL 0x715 #define ID_BMS_BC 0x720 #define ID_BMS_TO_MC 0x721 #define ID_BMS_TO_PBU 0x723 #define ID_BMS_TO_HMI 0x724 #define ID_BMS_TO_CDL 0x725 #define ID_PBU_BC 0x730 #define ID_PBU_TO_MC 0x731 #define ID_PBU_TO_BMS 0x732 #define ID_PBU_TO_CDL 0x735 #define ID_HMI_BC 0x740 #define ID_HMI_TO_MC 0x741 #define ID_HMI_TO_BMS 0x742 #define ID_HMI_TO_PBU 0x743 #define ID_HMI_TO_CDL 0x745 #define ID_CDL_BC 0x750 #define ID_CDL_TO_MC 0x751 #define ID_CDL_TO_BMS 0x752 #define ID_CDL_TO_PBU 0x753 #define ID_CDL_TO_HMI 0x754 #define ID_TO_MC_FILTER (UWORD)0x701 #define ID_TO_MC_MASK (UWORD)0x70F #define ID_BC_FILTER (UWORD)0x700 #define ID_BC_MASK (UWORD)0x70F #define FRAME_BEGIN1 0x55 #define FRAME_BEGIN2 0xAA #define FRAME_END 0xF0 #define MODE_READ 0x11 #define MODE_WRITE 0x16 #define MODE_REPORT 0x0C /************************************************************************ TypeDefs & Structure defines (N/A) *************************************************************************/ typedef struct { UWORD ucBufID; // ID UBYTE ucBufSize; //缓冲区数组:缓冲区大小 UBYTE ucBufWrInde; //缓冲区数组:写索引 UBYTE ucBufRdInde; //缓冲区数组:读索引 UBYTE ucBufCnt; //缓冲区数组:数据计数 UBYTE ucBufOvf; //缓冲区数组:溢出标志,注意清零 UBYTE *pcBufAddr; //缓冲区数组:首地址指针变量 ULONG DelayTimeCnt; //超时计时 BOOL IsWaitRX_Flag; //超时等待数据标志 } CAN_Buf_TypeDef; /************************************************************************ Exported Variables *************************************************************************/ #ifdef _CAN_C_ /* GD MCU */ CAN_EXT can_receive_message_struct stRxMessage1; CAN_EXT can_receive_message_struct *pRxMsg = &stRxMessage1; CAN_EXT can_trasnmit_message_struct stTxMessage1; CAN_EXT can_trasnmit_message_struct *pTxMsg = &stTxMessage1; CAN_EXT UBYTE can_ubMbox; CAN_EXT UBYTE CAN_RxBuf_PBU[255]; //用于接收PBU广播和发送给MC的数据 CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_PBU = {0, 255, 0, 0, 0, 0, CAN_RxBuf_PBU, 0, FALSE}; CAN_EXT UBYTE CAN_RxBuf_BMS[255]; //用于接收BMS广播和发送给MC的数据 CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_BMS = {0, 255, 0, 0, 0, 0, CAN_RxBuf_BMS, 0, FALSE}; CAN_EXT UBYTE CAN_RxBuf_HMI[255]; //用于接收HMI广播和发送给MC的数据 CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_HMI = {0, 255, 0, 0, 0, 0, CAN_RxBuf_HMI, 0, FALSE}; CAN_EXT UBYTE CAN_RxBuf_CDL[255]; //用于接收CDL广播和发送给MC的数据 CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_CDL = {0, 255, 0, 0, 0, 0, CAN_RxBuf_CDL, 0, FALSE}; #else /* GD MCU */ CAN_EXT can_receive_message_struct stRxMessage1; CAN_EXT can_receive_message_struct *pRxMsg; CAN_EXT can_trasnmit_message_struct stTxMessage1; CAN_EXT can_trasnmit_message_struct *pTxMsg; CAN_EXT UBYTE can_ubMbox; CAN_EXT UBYTE CAN_RxBuf_PBU[255]; //用于接收PBU广播和发送给MC的数据 CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_PBU; CAN_EXT UBYTE CAN_RxBuf_BMS[255]; //用于接收BMS广播和发送给MC的数据 CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_BMS; CAN_EXT UBYTE CAN_RxBuf_HMI[255]; //用于接收HMI广播和发送给MC的数据 CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_HMI; CAN_EXT UBYTE CAN_RxBuf_CDL[255]; //用于接收CDL广播和发送给MC的数据 CAN_EXT CAN_Buf_TypeDef CAN_RxBuf_Struct_CDL; #endif /************************************************************************ RAM ALLOCATION (N/A) *************************************************************************/ /************************************************************************ Exported Function Call Prototypes *************************************************************************/ #ifdef _CAN_C_ CAN_EXT void CAN_Rx_ISR(CAN_Buf_TypeDef *ptCANRx, UBYTE ucLength); CAN_EXT void CAN_SendData(UWORD ID, const UBYTE Data[], UWORD Length); CAN_EXT void SendData(UWORD ID, UBYTE Mode, UWORD Command, const UBYTE *Data); CAN_EXT UBYTE cd_ReadChar(const CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum); CAN_EXT void cd_DelChar(CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum); CAN_EXT void CAN_RxData_Process(CAN_Buf_TypeDef *ptCANRx, UWORD TimeOutCnt); CAN_EXT void CanRx_Process(void); CAN_EXT void DataProcess(UWORD ID, UBYTE Mode, UWORD Cmd, UBYTE Data[]); CAN_EXT ULONG CRC32_Calculate(const UBYTE pData[], UWORD Length); #else CAN_EXT void CAN_Rx_ISR(CAN_Buf_TypeDef *ptCANRx, UBYTE ucLength); CAN_EXT void CAN_SendData(UWORD ID, const UBYTE Data[], UWORD Length); CAN_EXT void SendData(UWORD ID, UBYTE Mode, UWORD Command, const UBYTE *Data); CAN_EXT UBYTE cd_ReadChar(const CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum); CAN_EXT void cd_DelChar(CAN_Buf_TypeDef *ptCANRx, UBYTE ucNum); CAN_EXT void CAN_RxData_Process(CAN_Buf_TypeDef *ptCANRx, UWORD TimeOutCnt); CAN_EXT void CanRx_Process(void); CAN_EXT void DataProcess(UWORD ID, UBYTE Mode, UWORD Cmd, UBYTE Data[]); CAN_EXT ULONG CRC32_Calculate(const UBYTE pData[], UWORD Length); #endif /************************************************************************ Flag Define (N/A) *************************************************************************/ #endif /************************************************************************ Copyright (c) 2022 Welling Motor Technology(Shanghai) Co. Ltd. All rights reserved. ************************************************************************* End of this File (EOF)! Do not put anything after this part! *************************************************************************/