forked from achamaikin/CCSModuleSW30Web
if it breaks, I’m in the mountains
This commit is contained in:
@@ -16,6 +16,7 @@ typedef enum{
|
||||
RELAY3,
|
||||
RELAY_DC,
|
||||
RELAY_AC,
|
||||
RELAY_CP,
|
||||
RELAY_CC,
|
||||
RELAY_DC1,
|
||||
//
|
||||
@@ -28,7 +29,11 @@ uint8_t GBT_LockGetState();
|
||||
void GBT_Lock(uint8_t state);
|
||||
uint8_t SW_GetAddr();
|
||||
void ADC_Select_Channel(uint32_t ch);
|
||||
uint8_t ADC_TryLock(void);
|
||||
void ADC_LockBlocking(void);
|
||||
void ADC_Unlock(void);
|
||||
int16_t GBT_ReadTemp(uint8_t ch);
|
||||
int16_t CONN_ReadTemp(uint8_t ch);
|
||||
|
||||
typedef enum{
|
||||
IN_SW0 = 0,
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#define PSU_MAX_VOLTAGE 1000 //1V/bit
|
||||
#define PSU_MIN_VOLTAGE 150 //1V/bit
|
||||
#define PSU_MAX_CURRENT 100 //1A/bit
|
||||
#define PSU_MAX_CURRENT 133 //1A/bit
|
||||
#define PSU_MIN_CURRENT 1 //1A/bit
|
||||
#define PSU_MAX_POWER 30000 //1W/bit
|
||||
|
||||
|
||||
@@ -1,238 +0,0 @@
|
||||
/*
|
||||
* charger_gbt.h
|
||||
*
|
||||
* Created on: Apr 18, 2024
|
||||
* Author: colorbass
|
||||
*/
|
||||
|
||||
#ifndef INC_CHARGER_GBT_H_
|
||||
#define INC_CHARGER_GBT_H_
|
||||
|
||||
#include "main.h"
|
||||
#include "connector.h"
|
||||
#include "charger_control.h"
|
||||
|
||||
|
||||
#define GBT_CST_NO_REASON 0x0000F0F0 // Без причины
|
||||
#define GBT_CST_CONDITION_REACHED 0x0100F0F0 // Заряд завершен
|
||||
#define GBT_CST_SUSPENDS_ARTIFICIALLY 0x0400F0F0 // Искуственная остановка
|
||||
#define GBT_CST_FAULT_SUSPENSION 0x1000F0F0 // Приостановка из за неисправности
|
||||
#define GBT_CST_BMS_ACTIVELY_SUSPENDS 0x4000F0F0 // завершение по инициативе BMS
|
||||
#define GBT_CST_CONNECTOR_OVER_TEMP 0x0001F0F0 // Перегрев коннектора
|
||||
#define GBT_CST_INT_PART_OVER_TEMP 0x0010F0F0 // Перегрев внутренних частей
|
||||
#define GBT_CST_CANNOT_SUPPLY_REQ_ELQ 0x0040F0F0 // Неполучится обеспечить столько энергии
|
||||
#define GBT_CST_SUDDENSTOP 0x0000F1F0 // Внезапная остановка
|
||||
#define GBT_CST_OTHERFALUT 0x0000F4F0 // Прочая ошибка
|
||||
#define GBT_CST_CURRENT_MISMATCH 0x0000F0F1 // Неправильный ток
|
||||
#define GBT_CST_ABNORMALVOLTAGEERROR 0x0000F0F4 // Ненормальное напряжение
|
||||
|
||||
typedef enum {
|
||||
GBT_STOP_EVSE = 0,
|
||||
GBT_STOP_EV = 1,
|
||||
GBT_STOP_OCPP = 2,
|
||||
|
||||
}GBT_StopSource_t;
|
||||
|
||||
|
||||
typedef enum{
|
||||
GBT_CC_UNKNOWN,
|
||||
GBT_CC_12V,
|
||||
GBT_CC_6V,
|
||||
GBT_CC_4V,
|
||||
GBT_CC_2V,
|
||||
|
||||
}gbtCcState_t;
|
||||
|
||||
typedef enum{
|
||||
GBT_DISABLED = 0x10,
|
||||
// GBT_S0_UNCONNECTED = 0x10, //СС1 12V/6V СС2 12V
|
||||
// GBT_S1_CONNECTED = 0x11, //СС1 4V СС2 4V (6V)
|
||||
// GBT_S2_LOCKED = 0x12, //
|
||||
GBT_S3_STARTED = 0x13, // 12V AUX
|
||||
GBT_S31_WAIT_BHM = 0x14, // testing isolation, send CHM receive BHM
|
||||
GBT_S4_WAIT_PSU_READY = 0x15, // wait for PSU to be ready
|
||||
GBT_S4_WAIT_PSU_ON = 0x16, // PSU is on, wait for isolation test
|
||||
GBT_S4_ISOTEST = 0x17, // testing isolation, send CHM receive BHM
|
||||
GBT_S4_WAIT_PSU_OFF = 0x18, // PSU is off, wait for battery info
|
||||
GBT_S5_BAT_INFO = 0x19, // identifying BMS, send CRM receive BRM (long)
|
||||
GBT_S6_BAT_STAT = 0x1A, // send CRM(AA), receive BCP (long)
|
||||
GBT_S7_BMS_WAIT = 0x1B, // wait for BMS, send CTS+CML receive BRO(00), next BRO(AA)
|
||||
GBT_S8_INIT_CHARGER = 0x1C,// starting power modules, send CRO(00)
|
||||
GBT_S9_WAIT_BCL = 0x1D, // waiting for BCL (requested voltage), send CRO(00)
|
||||
GBT_S10_CHARGING = 0x1E, // charging, contactor ON, send CCS, receiving BCL+BCS+BSM
|
||||
GBT_STOP = 0x1F, // normal stop
|
||||
GBT_STOP_CSD = 0x20, // normal stop
|
||||
GBT_ERROR = 0x21, // Error
|
||||
GBT_COMPLETE = 0x22,
|
||||
|
||||
}gbtState_t;
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
typedef struct {
|
||||
uint16_t maxOutputVoltage;
|
||||
|
||||
}GBT_BHM_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t bmsIdentified;
|
||||
uint32_t chargerNumber;
|
||||
char chargerLocation[3];
|
||||
}GBT_CRM_t;
|
||||
|
||||
typedef struct {
|
||||
uint16_t maxOutputVoltage;
|
||||
uint16_t minOutputVoltage;
|
||||
uint16_t maxOutputCurrent;
|
||||
uint16_t minOutputCurrent;
|
||||
|
||||
}GBT_CML_t;
|
||||
|
||||
typedef struct{
|
||||
uint8_t version[3]; //GB/T version
|
||||
uint8_t batteryType; //battery type
|
||||
uint16_t batteryCapacity; // 0.1Ah/bit
|
||||
uint16_t batteryVoltage; // 0.1V/bit
|
||||
uint8_t batteryVendor[4]; // Battery vendor (ASCII string)
|
||||
uint32_t batterySN; // int
|
||||
uint8_t batteryManuY; // year (offset 1985)
|
||||
uint8_t batteryManuM; // month
|
||||
uint8_t batteryManuD; // day
|
||||
uint32_t batteryCycleCount:24; //uint24_t
|
||||
uint8_t ownAuto; // 0 = lizing, 1 = own auto
|
||||
uint8_t rsvd0;
|
||||
uint8_t EVIN[17]; //EVIN
|
||||
uint8_t EV_SW_VER[8];
|
||||
|
||||
}GBT_BRM_t;
|
||||
|
||||
typedef struct {
|
||||
uint16_t maxCellVoltage; // 0.01v/bit
|
||||
uint16_t maxChargingCurrent; // 0.1A/bit
|
||||
uint16_t totalEnergy; // 0.1kWh
|
||||
uint16_t maxChargingVoltage; // 0.1V/ bit
|
||||
uint8_t maxTemp; // 1C/bit, -50C offset
|
||||
uint16_t SOC; // 0.1%/bit , 0..100%
|
||||
uint16_t measVoltage; // 0.1V/bit
|
||||
}GBT_BCP_t;
|
||||
|
||||
typedef struct {
|
||||
uint16_t requestedVoltage; // 0.1V/bit
|
||||
uint16_t requestedCurrent; // 0.1A/bit
|
||||
uint8_t chargingMode; // 0x01 - CV, 0x02 - CC
|
||||
|
||||
}GBT_BCL_t;
|
||||
|
||||
typedef struct {
|
||||
uint16_t measuredChargingVoltage;
|
||||
uint16_t measuredChargingCurrent;
|
||||
uint16_t highestVoltageOfBatteryCell;
|
||||
//uint8_t groupNrOfCellWithHighestVoltage;
|
||||
uint8_t currentChargeState;
|
||||
uint16_t estimatedRemainingChargingTime;
|
||||
|
||||
}GBT_BCS_t;
|
||||
|
||||
typedef struct {
|
||||
|
||||
uint8_t singleBatteryHighestVoltageSerNo;// SINGLE_BATTERY_HIGHEST_VOLTAGE_SER_NO
|
||||
uint8_t batteryHighestTemp; //BATTERY_HIGHEST_TEMP
|
||||
uint8_t batteryHighestTempSerNo;//BATTERY_HIGHEST_TEMP_SER_NO
|
||||
uint8_t batteryLowestTemp;//BATTERY_LOWEST_TEMP
|
||||
uint8_t batteryLowestTempSerNo;//BATTERY_LOWEST_TEMP_SER_NO
|
||||
uint8_t batteryCellVoltageState;//BATTERY_CELL_VOLTAGE_STATE
|
||||
uint8_t batteryStatus;//BATTERY_STATUS[bit-mask];
|
||||
|
||||
}GBT_BSM_t;
|
||||
|
||||
typedef struct {
|
||||
|
||||
uint16_t outputVoltage;
|
||||
uint16_t outputCurrent;
|
||||
uint16_t chargingTime;
|
||||
uint16_t chargingPermissible;
|
||||
|
||||
}GBT_CCS_t;
|
||||
|
||||
typedef struct {
|
||||
uint16_t chargingTime;
|
||||
uint16_t outputEnergy;
|
||||
uint32_t chargerNumber;
|
||||
}GBT_CSD_t;
|
||||
|
||||
|
||||
/* 500 - Power Supply
|
||||
TX
|
||||
* PSU_ENABLE
|
||||
* BMS_STATUS
|
||||
* BMS_ERRORS
|
||||
* PSU_REQUESTED_VOLTAGE[2]
|
||||
* PSU_REQUESTED_CURRENT[2]
|
||||
* BMS_CHARGE_PERCENTAGE
|
||||
// BMS_MIN_CURRENT
|
||||
* CHARGE_REMAINING_TIME_MIN
|
||||
* CHARGE_REMAINING_TIME_SEC
|
||||
* CHARGE_ELAPSED_TIME[1]
|
||||
|
||||
RX
|
||||
* MEASURED_VOLTAGE[2]
|
||||
* MEASURED_CURRENT[2]
|
||||
// MAX_VOLTAGE[2]
|
||||
// MAX_CURRENT[2]
|
||||
// MAX_POWER[2]
|
||||
* PSU_STATUS
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
extern gbtState_t GBT_State;
|
||||
|
||||
extern ADC_HandleTypeDef hadc1;
|
||||
|
||||
extern GBT_BRM_t GBT_EVInfo;
|
||||
extern GBT_BCP_t GBT_BATStat;
|
||||
extern GBT_BCS_t GBT_ChargingStatus;
|
||||
extern GBT_BCL_t GBT_ReqPower;
|
||||
extern GBT_CML_t GBT_MaxLoad;
|
||||
extern GBT_CCS_t GBT_ChargerCurrentStatus;
|
||||
extern GBT_CRM_t GBT_ChargerInfo;
|
||||
extern GBT_BSM_t GBT_BatteryStatus;
|
||||
extern GBT_CSD_t GBT_ChargerStop;
|
||||
|
||||
extern uint8_t GBT_BRO;
|
||||
|
||||
extern uint8_t GBT_Charger_Enable;
|
||||
|
||||
extern GBT_StopSource_t GBT_StopSource;
|
||||
|
||||
void GBT_Init();
|
||||
void GBT_Start();
|
||||
void GBT_Reset();
|
||||
//void GBT_Stop(uint32_t causecode);
|
||||
void GBT_StopEV(uint32_t causecode);
|
||||
void GBT_StopEVSE(uint32_t causecode);
|
||||
void GBT_StopOCPP(uint32_t causecode);
|
||||
void GBT_ForceStop();
|
||||
void GBT_ChargerTask();
|
||||
void GBT_Error(uint32_t errorcode);
|
||||
|
||||
//float GBT_CC_GetAdc();
|
||||
|
||||
//uint8_t GBT_CC_GetState();
|
||||
|
||||
void GBT_SwitchState(gbtState_t state);
|
||||
void GBT_Delay(uint32_t delay);
|
||||
uint32_t GBT_StateTick();
|
||||
void J_SendPacket(uint32_t PGN, uint8_t pri, uint8_t DLC, uint8_t *data);
|
||||
|
||||
void GBT_SendCCS();
|
||||
void GBT_SendCST(uint32_t Cause);
|
||||
void GBT_SendCRO(uint8_t state);
|
||||
void GBT_SendCML();
|
||||
void GBT_SendCTS();
|
||||
void GBT_SendCHM();
|
||||
void GBT_SendCRM(uint8_t state);
|
||||
void GBT_SendCSD();
|
||||
void GBT_SendCEM(uint32_t ErrorCode);
|
||||
#endif /* INC_CHARGER_GBT_H_ */
|
||||
@@ -9,8 +9,6 @@
|
||||
#define INC_CONNECTOR_H_
|
||||
|
||||
#include "main.h"
|
||||
|
||||
#include "charger_gbt.h"
|
||||
#include "charger_control.h"
|
||||
|
||||
|
||||
@@ -19,8 +17,5 @@ extern CONN_State_t connectorState;
|
||||
void CONN_Init();
|
||||
void CONN_Task();
|
||||
void CONN_SetState(CONN_State_t state);
|
||||
uint8_t CONN_CC_GetStateRaw();
|
||||
uint8_t CONN_CC_GetState();
|
||||
float CONN_CC_GetAdc();
|
||||
|
||||
#endif /* INC_CONNECTOR_H_ */
|
||||
|
||||
27
Core/Inc/cp.h
Normal file
27
Core/Inc/cp.h
Normal file
@@ -0,0 +1,27 @@
|
||||
#ifndef __CP_H
|
||||
#define __CP_H
|
||||
|
||||
#include "main.h"
|
||||
#include <stdint.h>
|
||||
|
||||
#define DUTY_INVERT 0
|
||||
|
||||
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;
|
||||
|
||||
void CP_Init(void);
|
||||
void CP_SetDuty(uint8_t percentage);
|
||||
uint8_t CP_GetDuty(void);
|
||||
int32_t CP_GetVoltage(void);
|
||||
CP_State_t CP_GetState(void);
|
||||
void CP_Loop(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
/*
|
||||
* j1939.h
|
||||
*
|
||||
* Created on: May 3, 2024
|
||||
* Author: colorbass
|
||||
*/
|
||||
|
||||
#ifndef INC_J1939_H_
|
||||
#define INC_J1939_H_
|
||||
|
||||
#define J_ID_SE 0x56
|
||||
#define J_ID_EV 0xF4
|
||||
|
||||
#include "main.h"
|
||||
|
||||
extern CAN_HandleTypeDef hcan1;
|
||||
|
||||
typedef struct{
|
||||
uint8_t data[256]; //data array
|
||||
uint32_t PGN; //received PGN
|
||||
uint16_t size;
|
||||
uint8_t packets;
|
||||
uint8_t packet;
|
||||
uint8_t step;
|
||||
uint8_t step_cts_remain;
|
||||
uint8_t state; //(0 = standby, 1= receiving)
|
||||
uint32_t tick;
|
||||
}j_receive_t;
|
||||
|
||||
extern j_receive_t j_rx;
|
||||
|
||||
|
||||
void J_SendCTS(j_receive_t rx);
|
||||
void J_SendACK(j_receive_t rx);
|
||||
|
||||
|
||||
void GBT_CAN_ReInit();
|
||||
void GBT_CAN_FilterInit();
|
||||
|
||||
#endif /* INC_J1939_H_ */
|
||||
@@ -1,35 +0,0 @@
|
||||
/*
|
||||
* lock.h
|
||||
*
|
||||
* Created on: Jul 31, 2024
|
||||
* Author: colorbass
|
||||
*/
|
||||
|
||||
#ifndef INC_LOCK_H_
|
||||
#define INC_LOCK_H_
|
||||
|
||||
#include "main.h"
|
||||
#include "stdbool.h"
|
||||
|
||||
|
||||
void GBT_Lock(uint8_t state);
|
||||
void GBT_ManageLockSolenoid();
|
||||
void GBT_ManageLockMotor();
|
||||
uint8_t GBT_LockGetState();
|
||||
void GBT_ForceLock(uint8_t state);
|
||||
void GBT_ResetErrorTimeout();
|
||||
|
||||
typedef struct {
|
||||
// uint8_t state;
|
||||
uint8_t demand;
|
||||
uint8_t error;
|
||||
uint8_t action_requested; // 0 = unlock, 1 = lock, 255 = no action
|
||||
uint8_t motor_state; // 0 = idle, 1 = motor_on, 2 = waiting_off
|
||||
uint32_t last_action_time; // время последнего изменения состояния мотора
|
||||
uint8_t retry_count; // счетчик попыток
|
||||
uint32_t error_tick; // время установки ошибки (для таймаута сброса)
|
||||
} GBT_LockState_t;
|
||||
|
||||
extern GBT_LockState_t GBT_LockState;
|
||||
|
||||
#endif /* INC_LOCK_H_ */
|
||||
@@ -43,7 +43,7 @@ extern "C" {
|
||||
/* USER CODE BEGIN EC */
|
||||
#define FW_VERSION_MAJOR 0x01
|
||||
#define FW_VERSION_MINOR 0x00
|
||||
#define FW_VERSION_PATCH 0x01
|
||||
#define FW_VERSION_PATCH 0x02
|
||||
/* USER CODE END EC */
|
||||
|
||||
/* Exported macro ------------------------------------------------------------*/
|
||||
@@ -59,10 +59,16 @@ void Error_Handler(void);
|
||||
/* USER CODE END EFP */
|
||||
|
||||
/* Private defines -----------------------------------------------------------*/
|
||||
#define RELAY_CP_Pin GPIO_PIN_3
|
||||
#define RELAY_CP_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_ADC_Pin GPIO_PIN_4
|
||||
#define CP_ADC_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
|
||||
|
||||
127
Core/Inc/serial.h
Normal file
127
Core/Inc/serial.h
Normal file
@@ -0,0 +1,127 @@
|
||||
#ifndef __SERIAL_H
|
||||
#define __SERIAL_H
|
||||
|
||||
#include "main.h"
|
||||
#include "charger_control.h"
|
||||
#include "usart.h"
|
||||
#include "cp.h"
|
||||
|
||||
void CCS_SerialLoop(void);
|
||||
void CCS_Init(void);
|
||||
void CCS_SendEmergencyStop(void);
|
||||
void CCS_SendStart(void);
|
||||
void CCS_RxEventCallback(UART_HandleTypeDef *huart, uint16_t size);
|
||||
|
||||
typedef enum {
|
||||
CCS_DISABLED = 0,
|
||||
CCS_UNPLUGGED = 1,
|
||||
CCS_AUTH_REQUIRED = 2,
|
||||
CCS_CONNECTED = 3,
|
||||
CCS_REPLUGGING = 4,
|
||||
} CCS_ConnectorState_t;
|
||||
|
||||
typedef enum {
|
||||
PSU_OFF = 0,
|
||||
PSU_ON = 1,
|
||||
PSU_PREPARE = 2,
|
||||
} EnablePSU_t;
|
||||
|
||||
typedef struct {
|
||||
uint16_t maxVoltage;
|
||||
uint16_t minVoltage;
|
||||
uint16_t maxCurrent;
|
||||
uint16_t minCurrent;
|
||||
uint32_t maxPower;
|
||||
} CCS_MaxLoad_t;
|
||||
|
||||
/* Commands Everest -> module. */
|
||||
#define CMD_E2M_PWM_DUTY 0x40
|
||||
#define CMD_E2M_ENABLE_OUTPUT 0x41
|
||||
#define CMD_E2M_RESET 0x42
|
||||
#define CMD_E2M_ENABLE 0x43
|
||||
#define CMD_E2M_REPLUG 0x44
|
||||
#define CMD_E2M_SET_OUTPUT_VOLTAGE 0x45
|
||||
#define CMD_E2M_ISOLATION_CONTROL 0x46
|
||||
#define CMD_E2M_EV_INFO 0x47
|
||||
#define CMD_E2M_EVSE_STATE 0x48
|
||||
#define CMD_E2M_KEEP_ALIVE 0x49
|
||||
|
||||
/* Commands module -> Everest. */
|
||||
#define CMD_M2E_STATE 0x50
|
||||
#define CMD_M2E_RESET 0x52
|
||||
#define CMD_M2E_ESTOP 0x53
|
||||
#define CMD_M2E_START 0x54
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint8_t pwm_duty_percent;
|
||||
} e2m_pwm_duty_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint8_t enable_output;
|
||||
} e2m_enable_output_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint8_t reset;
|
||||
} e2m_reset_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint8_t enable;
|
||||
} e2m_enable_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint8_t replug;
|
||||
} e2m_replug_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint16_t voltage_V;
|
||||
uint16_t current_0p1A;
|
||||
} e2m_set_output_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint8_t command;
|
||||
} e2m_isolation_control_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint16_t valid_mask;
|
||||
uint16_t soc;
|
||||
uint16_t present_voltage;
|
||||
uint16_t present_current;
|
||||
uint16_t target_voltage;
|
||||
uint16_t target_current;
|
||||
uint16_t max_current;
|
||||
uint16_t min_current;
|
||||
uint16_t max_voltage;
|
||||
uint32_t max_power;
|
||||
uint32_t remaining_energy;
|
||||
uint16_t battery_capacity;
|
||||
uint16_t battery_full_soc;
|
||||
uint16_t battery_bulk_soc;
|
||||
uint32_t estimated_time_full;
|
||||
uint32_t departure_time;
|
||||
uint32_t estimated_time_bulk;
|
||||
} CCS_EvInfo_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint8_t DutyCycle;
|
||||
uint8_t OutputEnabled;
|
||||
uint16_t MeasuredVoltage;
|
||||
uint16_t MeasuredCurrent;
|
||||
uint32_t Power;
|
||||
uint32_t Energy;
|
||||
uint32_t IsolationResistance;
|
||||
uint8_t IsolationValid;
|
||||
uint8_t CpState;
|
||||
uint16_t MaxVoltage;
|
||||
uint16_t MinVoltage;
|
||||
uint16_t MaxCurrent;
|
||||
uint16_t MinCurrent;
|
||||
uint32_t MaxPower;
|
||||
} CCS_State_t;
|
||||
|
||||
extern CCS_MaxLoad_t CCS_MaxLoad;
|
||||
extern CCS_EvInfo_t CCS_EvInfo;
|
||||
extern CONN_State_t CCS_EvseState;
|
||||
extern uint8_t REPLUG;
|
||||
|
||||
#endif
|
||||
|
||||
23
Core/Inc/sma_filter.h
Normal file
23
Core/Inc/sma_filter.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef SMA_FILTER_H
|
||||
#define SMA_FILTER_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
// Простая скользящая SMA (simple moving average) для целых значений.
|
||||
// Окно фиксировано и задается макросом.
|
||||
#ifndef SMA_FILTER_WINDOW
|
||||
#define SMA_FILTER_WINDOW 8
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
int32_t sum;
|
||||
uint16_t idx;
|
||||
uint16_t count;
|
||||
int32_t buffer[SMA_FILTER_WINDOW];
|
||||
} SMAFilter_t;
|
||||
|
||||
void SMAFilter_Init(SMAFilter_t* f);
|
||||
int32_t SMAFilter_Update(SMAFilter_t* f, int32_t x);
|
||||
|
||||
#endif // SMA_FILTER_H
|
||||
|
||||
@@ -56,6 +56,7 @@ void DebugMon_Handler(void);
|
||||
void PendSV_Handler(void);
|
||||
void SysTick_Handler(void);
|
||||
void CAN1_RX0_IRQHandler(void);
|
||||
void TIM3_IRQHandler(void);
|
||||
void USART1_IRQHandler(void);
|
||||
void USART2_IRQHandler(void);
|
||||
void USART3_IRQHandler(void);
|
||||
|
||||
@@ -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