76 lines
2.0 KiB
C
76 lines
2.0 KiB
C
/*
|
|
* CAN_Communication.h
|
|
*
|
|
* Created on: Apr 26, 2022
|
|
* Author: max
|
|
*/
|
|
|
|
#ifndef INC_CAN_COMMUNICATION_H_
|
|
#define INC_CAN_COMMUNICATION_H_
|
|
|
|
#include "AMS_Errorcodes.h"
|
|
#include "Slave_Monitoring.h"
|
|
#include "main.h"
|
|
|
|
#include "stm32g4xx_hal.h"
|
|
#include "stm32g4xx_hal_fdcan.h"
|
|
|
|
#define CANFRAMEBUFFERSIZE 512
|
|
|
|
#define CAN_ID_SLAVE_EMERGENCY 0x001
|
|
#define CAN_ID_CLOCK_SYNC 0x002
|
|
#define CAN_ID_AMS_STATUS 0x0A
|
|
#define CAN_ID_AUTOBOX_INFO 0x0B
|
|
#define CAN_ID_MASTER_HEARTBEAT 0x010
|
|
#define CAN_ID_SLAVE_EEPROM_WRITE 0x020
|
|
#define CAN_ID_AMS_PANIC 0x42
|
|
|
|
#define CAN_ID_START_CHARGING 0x446
|
|
|
|
#define CAN_ID_SHUNT_BASE 0x520
|
|
#define CAN_MASK_SHUNT 0xFF0
|
|
#define CAN_ID_SHUNT_CURRENT 0x521
|
|
#define CAN_ID_SHUNT_VOLTAGE_1 0x522
|
|
#define CAN_ID_SHUNT_VOLTAGE_2 0x523
|
|
#define CAN_ID_SHUNT_VOLTAGE_3 0x524
|
|
#define CAN_ID_SHUNT_BUSBAR_TEMP 0x525
|
|
#define CAN_ID_SHUNT_POWER 0x526
|
|
#define CAN_ID_SHUNT_AMPERE_SECONDS 0x527
|
|
#define CAN_ID_SHUNT_ENERGY 0x528
|
|
|
|
// Frame ID = Base Address + Slave ID + MessageNr.
|
|
#define CAN_ID_SLAVE_STATUS_BASE 0x600
|
|
#define CAN_MASK_SLAVE_STATUS 0xF00
|
|
|
|
typedef struct {
|
|
int16_t FrameID;
|
|
uint8_t data[8];
|
|
uint8_t length;
|
|
uint32_t timestamp;
|
|
uint8_t error;
|
|
|
|
} canFrame;
|
|
|
|
extern canFrame framebuffer[CANFRAMEBUFFERSIZE];
|
|
|
|
extern uint32_t framebufferwritepointer;
|
|
extern uint32_t framebufferreadpointer;
|
|
extern uint32_t frames_read;
|
|
|
|
void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef* handle,
|
|
uint32_t interrupt_flags);
|
|
|
|
void CAN_Init(FDCAN_HandleTypeDef* hcan);
|
|
uint8_t CAN_Receive(FDCAN_HandleTypeDef* hcan);
|
|
uint8_t CAN_Transmit(FDCAN_HandleTypeDef* hcan, uint16_t frameid,
|
|
uint8_t* buffer, uint8_t datalen);
|
|
|
|
void CAN_SendAbxStatus(FDCAN_HandleTypeDef* hcan);
|
|
void CAN_SendAMSPanic(FDCAN_HandleTypeDef* hcan, AMSErrorHandle* error);
|
|
|
|
void CAN_HandleShuntMsg(canFrame* rxFrame);
|
|
void CAN_HandleSlaveStatus(canFrame* rxFrame);
|
|
void CAN_HandleSlaveEmergency(canFrame* rxFrame);
|
|
|
|
#endif /* INC_CAN_COMMUNICATION_H_ */
|