/* * Can_Driver.h * * Created on: 2021. 8. 3. * Author: Kim-JeongWoo */ #ifndef MAIN_RESOURCE_CAN_DRIVER_H_ #define MAIN_RESOURCE_CAN_DRIVER_H_ #ifdef __cplusplus extern "C" { #endif struct sCanData32bit { uint32_t Low; uint32_t High; }; struct sCanData16bit { uint16_t Word[4]; }; struct sCanData8bit { uint64_t Byte0 :8; uint64_t Byte1 :8; uint64_t Byte2 :8; uint64_t Byte3 :8; uint64_t Byte4 :8; uint64_t Byte5 :8; uint64_t Byte6 :8; uint64_t Byte7 :8; }; union uCANDATA_TYPE { uint64_t all; struct sCanData16bit U16; struct sCanData32bit U32; struct sCanData8bit U8; }; struct sCANRXDATA { unsigned int Id; CAN_MsgFrameType *frameType; uint16_t Data[8]; }; struct sCanMsg { union uCANDATA_TYPE Data; //Data uint32_t Id; //Id ext 모드일 경우 최대 29bit CAN_MsgFrameType *frameType; //Std or Ext uint16_t Lenth; //Lenth uint16_t Cnt; //Lenth }; #define CANCHADEMO_RX_MBOX_START 1 #define CANCHADEMO_RX_MBOX_END 31 //#define CANME_RX_MBOX_START 1 //#define CANME_RX_MBOX_END 31 #pragma SET_DATA_SECTION(".CanLib") extern unsigned int TerminalResSet; extern sCanMsg CanaRxMbox[32]; extern sCanMsg CanaTxMbox; //extern sCanMsg CanaTxMbox2; //extern sCanMsg CanbRxMbox[32]; //extern sCanMsg CanbTxMbox; extern int FlagCanReset; #pragma SET_DATA_SECTION() extern void CanErrorReset(); extern void InitCan(); #pragma SET_CODE_SECTION(".TI.ramfunc") extern void CanTxMsg(uint32_t base, uint32_t objID, sCanMsg *Msg); extern bool CanRxMsg(uint32_t base, uint32_t objID, sCanMsg *Msg); #pragma SET_CODE_SECTION() #ifdef __cplusplus } #endif /* extern "C" */ #endif /* MAIN_RESOURCE_CAN_DRIVER_H_ */