big refactoring: J1939, log output, state machine bug fixes
This commit is contained in:
+1
-1
@@ -17,7 +17,7 @@ typedef enum{
|
||||
RELAY_3,
|
||||
RELAY_4,
|
||||
RELAY_5,
|
||||
|
||||
RELAY_CP,
|
||||
}relay_t;
|
||||
|
||||
typedef enum{
|
||||
|
||||
@@ -222,6 +222,7 @@ extern GBT_BSM_t GBT_BatteryStatus;
|
||||
extern GBT_CSD_t GBT_ChargerStop;
|
||||
|
||||
extern uint8_t GBT_BRO;
|
||||
extern uint8_t cc_enable;
|
||||
|
||||
extern uint8_t GBT_Charger_Enable;
|
||||
|
||||
@@ -254,6 +255,7 @@ void GBT_SendBRO(uint8_t state);
|
||||
void GBT_SendBCL(void);
|
||||
void GBT_SendBCS(void);
|
||||
void GBT_SendBSM(void);
|
||||
void GBT_SendBST(uint32_t causeCode);
|
||||
void GBT_SendBSD(void);
|
||||
|
||||
|
||||
|
||||
+23
-1
@@ -75,13 +75,35 @@ typedef struct {
|
||||
uint8_t connectorType; // 0 - NONE, 1 - GBT, 2 - CCS (для EV всегда GBT)
|
||||
} CONN_t;
|
||||
|
||||
extern CONN_t CONN;
|
||||
extern CONN_t CONN[2];
|
||||
|
||||
void CONN_Init();
|
||||
void CONN_Task();
|
||||
void CONN_SetState(CONN_State_t state);
|
||||
void CONN_CC_ReadStateFiltered(void);
|
||||
uint8_t CONN_CC_GetStateRaw();
|
||||
uint8_t CONN_CC_GetState();
|
||||
float CONN_CC_GetAdc();
|
||||
|
||||
// STM32(EV) -> EVerest (EVSE)
|
||||
// uint8_t SOC; // State of charge [%] // 2
|
||||
// uint16_t RequestedVoltage; // 1V/bit
|
||||
// uint16_t RequestedCurrent; // 0.1A/bit
|
||||
// uint16_t MeasuredVoltage; // 1V/bit
|
||||
// uint16_t MeasuredCurrent; // 0.1A/bit
|
||||
// uint8_t ContactorEnabled; // 1 - enabled, 0 - disabled (команда на замыкание контактора)
|
||||
|
||||
// cp_state
|
||||
// stop ????
|
||||
|
||||
|
||||
// EVerest (EVSE) -> STM32(EV)
|
||||
// uint16_t MeasuredVoltageSE; // 1V/bit
|
||||
// uint16_t MeasuredCurrentSE; // 0.1A/bit
|
||||
// uint8_t enableLoad; // 1 - enabled, 0 - disabled (команда на включение контактора)
|
||||
|
||||
// cp_state
|
||||
// pwm_value
|
||||
|
||||
|
||||
#endif /* INC_CONNECTOR_H_ */
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
#ifndef INC_CP_H_
|
||||
#define INC_CP_H_
|
||||
|
||||
#include "main.h"
|
||||
|
||||
typedef enum {
|
||||
EV_STATE_A_IDLE = 0,
|
||||
EV_STATE_B_CONN_PREP = 1,
|
||||
EV_STATE_C_CONN_ACTIVE = 2,
|
||||
EV_STATE_D_CONN_ACT_VENT = 3,
|
||||
EV_STATE_E_NO_POWER = 4,
|
||||
EV_STATE_F_ERROR = 5,
|
||||
EV_STATE_ACQUIRING = 6,
|
||||
} CP_State_t;
|
||||
|
||||
typedef struct {
|
||||
uint32_t frequency_hz;
|
||||
uint8_t duty_percent;
|
||||
uint8_t valid;
|
||||
} CP_Measurement_t;
|
||||
|
||||
extern volatile CP_State_t cp_state;
|
||||
|
||||
void CP_Init(void);
|
||||
void CP_Task(void);
|
||||
CP_Measurement_t CP_GetMeasurement(void);
|
||||
|
||||
#endif /* INC_CP_H_ */
|
||||
+7
-3
@@ -8,9 +8,13 @@
|
||||
#ifndef SRC_DEBUG_H_
|
||||
#define SRC_DEBUG_H_
|
||||
|
||||
void debug_task();
|
||||
void debug_init();
|
||||
void debug_rx_interrupt(UART_HandleTypeDef *huart, uint16_t Size);
|
||||
#include <stdint.h>
|
||||
#include "edcan.h"
|
||||
|
||||
void debug_buffer_add(const uint8_t* data, uint16_t len);
|
||||
uint16_t debug_buffer_available(void);
|
||||
void debug_buffer_send(void);
|
||||
int log_printf(int level, const char *format, ...);
|
||||
|
||||
|
||||
#endif /* SRC_DEBUG_H_ */
|
||||
|
||||
@@ -27,11 +27,31 @@ typedef struct{
|
||||
uint32_t tick;
|
||||
}j_receive_t;
|
||||
|
||||
typedef struct{
|
||||
uint32_t ExtId;
|
||||
uint8_t DLC;
|
||||
uint8_t data[8];
|
||||
uint32_t tick;
|
||||
}j1939_rx_frame_t;
|
||||
|
||||
typedef struct{
|
||||
uint32_t ExtId;
|
||||
uint8_t DLC;
|
||||
uint8_t data[8];
|
||||
}j1939_tx_frame_t;
|
||||
|
||||
extern j_receive_t j_rx;
|
||||
|
||||
|
||||
void J_SendCTS(j_receive_t rx);
|
||||
void J_SendACK(j_receive_t rx);
|
||||
void J1939_ExchangeRxBuffer(void);
|
||||
void J1939_ExchangeTxBuffer(void);
|
||||
void J1939_InitBuffers(void);
|
||||
uint16_t J1939_GetRxBufferCount(void);
|
||||
uint16_t J1939_GetTxBufferCount(void);
|
||||
uint32_t J1939_GetRxOverflowCount(void);
|
||||
uint32_t J1939_GetTxOverflowCount(void);
|
||||
|
||||
|
||||
void GBT_CAN_ReInit();
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "main.h"
|
||||
|
||||
void LOAD_Init();
|
||||
void LOAD_Task();
|
||||
+16
-8
@@ -57,12 +57,20 @@ void Error_Handler(void);
|
||||
/* USER CODE END EFP */
|
||||
|
||||
/* Private defines -----------------------------------------------------------*/
|
||||
#define CP_STATE_F_Pin GPIO_PIN_2
|
||||
#define CP_STATE_F_GPIO_Port GPIOC
|
||||
#define CP_RELAY_Pin GPIO_PIN_3
|
||||
#define CP_RELAY_GPIO_Port GPIOC
|
||||
#define IN_SW0_Pin GPIO_PIN_1
|
||||
#define IN_SW0_GPIO_Port GPIOA
|
||||
#define IN_SW1_Pin GPIO_PIN_2
|
||||
#define IN_SW1_GPIO_Port GPIOA
|
||||
#define CP_STATE_C_Pin GPIO_PIN_5
|
||||
#define CP_STATE_C_GPIO_Port GPIOA
|
||||
#define ADC_CC1_Pin GPIO_PIN_6
|
||||
#define ADC_CC1_GPIO_Port GPIOA
|
||||
#define CP_PWM_Pin GPIO_PIN_7
|
||||
#define CP_PWM_GPIO_Port GPIOA
|
||||
#define LOCK_A_Pin GPIO_PIN_4
|
||||
#define LOCK_A_GPIO_Port GPIOC
|
||||
#define LOCK_B_Pin GPIO_PIN_5
|
||||
@@ -73,16 +81,16 @@ void Error_Handler(void);
|
||||
#define ADC_NTC2_GPIO_Port GPIOB
|
||||
#define IN0_Pin GPIO_PIN_7
|
||||
#define IN0_GPIO_Port GPIOE
|
||||
#define RELAY5_Pin GPIO_PIN_8
|
||||
#define RELAY5_GPIO_Port GPIOE
|
||||
#define RELAY4_Pin GPIO_PIN_9
|
||||
#define RELAY4_GPIO_Port GPIOE
|
||||
#define RELAY1_Pin GPIO_PIN_8
|
||||
#define RELAY1_GPIO_Port GPIOE
|
||||
#define RELAY2_Pin GPIO_PIN_9
|
||||
#define RELAY2_GPIO_Port GPIOE
|
||||
#define RELAY3_Pin GPIO_PIN_10
|
||||
#define RELAY3_GPIO_Port GPIOE
|
||||
#define RELAY2_Pin GPIO_PIN_11
|
||||
#define RELAY2_GPIO_Port GPIOE
|
||||
#define RELAY1_Pin GPIO_PIN_12
|
||||
#define RELAY1_GPIO_Port GPIOE
|
||||
#define RELAY4_Pin GPIO_PIN_11
|
||||
#define RELAY4_GPIO_Port GPIOE
|
||||
#define RELAY5_Pin GPIO_PIN_12
|
||||
#define RELAY5_GPIO_Port GPIOE
|
||||
#define AC_OK_Pin GPIO_PIN_14
|
||||
#define AC_OK_GPIO_Port GPIOE
|
||||
#define RELAY_CC_Pin GPIO_PIN_15
|
||||
|
||||
@@ -0,0 +1,130 @@
|
||||
#ifndef SERIAL_CONTROL_H
|
||||
#define SERIAL_CONTROL_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "main.h"
|
||||
#include "connector.h"
|
||||
|
||||
/* Read-only commands */
|
||||
#define CMD_GET_INFO 0x01
|
||||
#define CMD_ISOLATION_STATUS 0x01 /* UART5 isolation block packet */
|
||||
#define CMD_GET_GBT_STATUS 0x02
|
||||
#define CMD_GET_CCS_STATUS 0x03
|
||||
#define CMD_GET_LOG 0x50
|
||||
#define CMD_GET_LOG_CONTINUE 0x51
|
||||
|
||||
/* GBT control commands */
|
||||
#define CMD_GBT_CC_ENABLE 0x10
|
||||
#define CMD_GBT_STOP 0x11
|
||||
#define CMD_GBT_SET_SOC 0x12
|
||||
#define CMD_GBT_SET_REQUEST 0x13
|
||||
#define CMD_GBT_SET_VIN 0x18
|
||||
|
||||
/* CCS control commands */
|
||||
#define CMD_CCS_SET_STATE 0x20
|
||||
#define CMD_CCS_ENABLE_LOAD 0x24
|
||||
|
||||
/* Response codes */
|
||||
#define RESP_SUCCESS 0x12
|
||||
#define RESP_FAILED 0x13
|
||||
#define RESP_INVALID 0x14
|
||||
|
||||
#define MAX_TX_BUFFER_SIZE 256
|
||||
#define MAX_RX_BUFFER_SIZE 256
|
||||
#define CRC32_POLYNOMIAL ((uint32_t)0xEDB88320)
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint8_t command;
|
||||
uint8_t argument_length;
|
||||
void *argument;
|
||||
} ReceivedCommand_t;
|
||||
|
||||
typedef enum {
|
||||
SC_SOURCE_UART2 = 0,
|
||||
SC_SOURCE_UART5 = 1,
|
||||
} SC_Source_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint8_t isolationStatus;
|
||||
uint16_t isolationResistance;
|
||||
int16_t voltageHigh;
|
||||
int16_t voltageLow;
|
||||
int16_t voltageComm;
|
||||
} IsolationStatusPacket_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint16_t requestedVoltage; /* 1V/bit */
|
||||
uint16_t requestedCurrent; /* 0.1A/bit */
|
||||
} EvSetLimits_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint16_t measuredVoltage; /* 1V/bit */
|
||||
uint16_t measuredCurrent; /* 0.1A/bit */
|
||||
} EvSetMeasured_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint8_t connector_type; /* 0x01 (GBT) */
|
||||
uint16_t requestedVoltage; /* V */
|
||||
uint16_t requestedCurrent; /* 0.1A/bit */
|
||||
uint16_t measuredVoltageSE; /* V */
|
||||
uint16_t measuredCurrentSE; /* 0.1A/bit */
|
||||
uint16_t measuredVoltage; /* 1V/bit */
|
||||
uint16_t measuredCurrent; /* 0.1A/bit */
|
||||
uint8_t cc_enabled;
|
||||
uint8_t contactorEnabled;
|
||||
CONN_Error_t chargingError;
|
||||
uint8_t EvseConnected;
|
||||
uint8_t soc; /* % */
|
||||
uint8_t vin[17];
|
||||
uint8_t cc_state;
|
||||
uint8_t logs_available;
|
||||
CONN_State_t connState;
|
||||
} GBT_MonitorPacket_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint8_t connector_type; /* 0x02 (CCS) */
|
||||
uint16_t measuredVoltage; /* 1V/bit */
|
||||
uint16_t measuredCurrent; /* 0.1A/bit */
|
||||
uint8_t cp_enabled;
|
||||
uint8_t contactorEnabled;
|
||||
CONN_Error_t chargingError;
|
||||
uint8_t EvseConnected;
|
||||
uint8_t soc; /* % */
|
||||
uint8_t cp_state; /* A/B/C/D/E/... enum value */
|
||||
uint8_t cp_pwm_duty; /* % */
|
||||
CONN_State_t connState;
|
||||
} CCS_MonitorPacket_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint16_t serialNumber;
|
||||
uint8_t boardVersion;
|
||||
uint8_t stationType;
|
||||
uint16_t fw_version_major;
|
||||
uint16_t fw_version_minor;
|
||||
uint16_t fw_version_patch;
|
||||
} InfoPacket_t;
|
||||
|
||||
typedef struct SerialControl_t SerialControl_t;
|
||||
struct SerialControl_t {
|
||||
uint8_t tx_buffer[MAX_TX_BUFFER_SIZE];
|
||||
uint8_t rx_buffer[MAX_RX_BUFFER_SIZE];
|
||||
volatile ReceivedCommand_t received_command;
|
||||
volatile uint8_t command_ready;
|
||||
volatile uint8_t response_pending;
|
||||
volatile uint8_t response_code;
|
||||
volatile uint32_t tx_tick;
|
||||
};
|
||||
|
||||
void SC_Init(void);
|
||||
void SC_Task(void);
|
||||
void SC_SendPacket(const uint8_t *payload, uint16_t payload_len, uint8_t response_code);
|
||||
void SC_CommandHandler(ReceivedCommand_t *cmd);
|
||||
|
||||
extern SerialControl_t serial_control;
|
||||
extern GBT_MonitorPacket_t gbtMonitorPacket;
|
||||
extern CCS_MonitorPacket_t ccsMonitorPacket;
|
||||
extern InfoPacket_t infoPacket;
|
||||
extern IsolationStatusPacket_t ISO;
|
||||
extern volatile SC_Source_t g_sc_command_source;
|
||||
|
||||
#endif /* SERIAL_CONTROL_H */
|
||||
@@ -56,7 +56,9 @@ void DebugMon_Handler(void);
|
||||
void PendSV_Handler(void);
|
||||
void SysTick_Handler(void);
|
||||
void CAN1_RX0_IRQHandler(void);
|
||||
void TIM3_IRQHandler(void);
|
||||
void USART2_IRQHandler(void);
|
||||
void UART5_IRQHandler(void);
|
||||
void CAN2_TX_IRQHandler(void);
|
||||
void CAN2_RX1_IRQHandler(void);
|
||||
/* USER CODE BEGIN EFP */
|
||||
|
||||
@@ -32,12 +32,15 @@ extern "C" {
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
extern TIM_HandleTypeDef htim3;
|
||||
|
||||
extern TIM_HandleTypeDef htim4;
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
void MX_TIM3_Init(void);
|
||||
void MX_TIM4_Init(void);
|
||||
|
||||
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
|
||||
|
||||
Reference in New Issue
Block a user