2022-07-03 17:33:09 +02:00
|
|
|
/*
|
|
|
|
* CAN_Communication.h
|
|
|
|
*
|
|
|
|
* Created on: Apr 26, 2022
|
|
|
|
* Author: max
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef INC_CAN_COMMUNICATION_H_
|
|
|
|
#define INC_CAN_COMMUNICATION_H_
|
|
|
|
|
|
|
|
#include "stm32g4xx_hal.h"
|
|
|
|
#include "stm32g4xx_hal_fdcan.h"
|
|
|
|
|
|
|
|
#define CANFRAMEBUFFERSIZE 256
|
|
|
|
|
|
|
|
// Shunt Message IDs
|
|
|
|
#define SHUNT_CURRENT 0x521
|
|
|
|
#define SHUNT_VOLTAGE_1 0x522
|
|
|
|
#define SHUNT_VOLTAGE_2 0x523
|
|
|
|
#define SHUNT_VOLTAGE_3 0x524
|
|
|
|
#define SHUNT_BUSBAR_TEMP 0x525
|
|
|
|
#define SHUNT_POWER 0x526
|
|
|
|
#define SHUNT_AMPERE_SECONDS 0x527
|
|
|
|
#define SHUNT_ENERGY 0x528
|
|
|
|
|
|
|
|
// Autobox->Master IDS
|
|
|
|
#define AUTOBOX_INFO 0x0B
|
|
|
|
|
|
|
|
// Master->Autobox IDs
|
|
|
|
#define AMS_STATUS_ID 0x0A
|
|
|
|
#define AMS_PANIC_ID 0x42
|
|
|
|
#define AMS_LOGGING_ID 0x500
|
|
|
|
|
2022-07-18 16:56:38 +02:00
|
|
|
#define AMS_LOGGING_NUM_FRAMES 6
|
2022-07-20 12:43:57 +02:00
|
|
|
#define AMS_LOGGING_FRAMES_PER_LOOP 1
|
2022-07-18 16:56:38 +02:00
|
|
|
|
|
|
|
// Charger->Master IDs
|
|
|
|
#define CHARGER_START_CHARGING 0x446
|
|
|
|
|
2022-07-03 17:33:09 +02:00
|
|
|
#define BATTERY_VOLTAGE_TYPE 1
|
|
|
|
#define BATTERY_TEMP_TYPE 2
|
|
|
|
#define LOG_BAT_LOW_VOLTAGE 32768
|
|
|
|
#define LOG_TEMP_LOW_VOLTAGE
|
|
|
|
|
|
|
|
// External Variables to Communicate with other parts of the Program
|
|
|
|
extern int32_t shuntcurrent;
|
|
|
|
extern int32_t shuntvoltage1;
|
|
|
|
extern int32_t shuntvoltage2;
|
|
|
|
extern int32_t shuntvoltage3;
|
|
|
|
extern int32_t shuntbusbartemp;
|
|
|
|
extern int32_t shuntpower;
|
|
|
|
extern int32_t shuntampereseconds;
|
|
|
|
extern int32_t shuntenergy;
|
|
|
|
|
|
|
|
extern uint32_t shuntlastmessage;
|
|
|
|
|
|
|
|
extern uint8_t currentlap;
|
|
|
|
extern uint8_t TSTargetState;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
int16_t FrameID;
|
|
|
|
uint8_t data[8];
|
|
|
|
uint8_t length;
|
|
|
|
uint32_t timestamp;
|
|
|
|
uint8_t error;
|
|
|
|
|
|
|
|
} canFrame;
|
|
|
|
|
|
|
|
extern canFrame framebuffer[CANFRAMEBUFFERSIZE];
|
|
|
|
|
|
|
|
void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef* handle,
|
|
|
|
uint32_t interrupt_flags);
|
|
|
|
void HAL_FDCAN_ErrorCallback(FDCAN_HandleTypeDef* hcan);
|
|
|
|
|
|
|
|
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);
|
2022-07-25 18:48:26 +02:00
|
|
|
typedef struct ErrorFlagHandlerStruct ErrorFlagHandler;
|
|
|
|
void CAN_SendAMSPanic(FDCAN_HandleTypeDef* hcan, ErrorFlagHandler* errorflags);
|
2022-07-03 17:33:09 +02:00
|
|
|
void CAN_SendLoggingFrame(FDCAN_HandleTypeDef* hcan);
|
|
|
|
uint8_t CAN_convert_logval(uint16_t value, uint8_t type);
|
|
|
|
|
|
|
|
#endif /* INC_CAN_COMMUNICATION_H_ */
|