Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 01c43840a5 | |||
|
|
f8daf17c6f | ||
|
|
68903fe860 | ||
|
|
878d425417 | ||
|
|
fad2a8ba18 | ||
|
|
317e418111 |
50
.mxproject
50
.mxproject
File diff suppressed because one or more lines are too long
BIN
Core/.DS_Store
vendored
BIN
Core/.DS_Store
vendored
Binary file not shown.
@@ -43,7 +43,7 @@ extern "C" {
|
||||
/* USER CODE BEGIN EC */
|
||||
#define FW_VERSION_MAJOR 0x01
|
||||
#define FW_VERSION_MINOR 0x00
|
||||
#define FW_VERSION_PATCH 0x02
|
||||
#define FW_VERSION_PATCH 10
|
||||
/* USER CODE END EC */
|
||||
|
||||
/* Exported macro ------------------------------------------------------------*/
|
||||
|
||||
BIN
Core/Src/.DS_Store
vendored
BIN
Core/Src/.DS_Store
vendored
Binary file not shown.
@@ -7,6 +7,7 @@
|
||||
|
||||
ChargingConnector_t CONN;
|
||||
CONN_State_t connectorState;
|
||||
extern uint8_t config_initialized;
|
||||
|
||||
void CONN_Init(){
|
||||
|
||||
@@ -47,7 +48,7 @@ void CONN_Task(){
|
||||
return;
|
||||
}
|
||||
|
||||
if (connectorState == Unknown) {
|
||||
if (connectorState == Unknown && config_initialized) {
|
||||
CONN_SetState(Unplugged);
|
||||
} else if (connectorState == Disabled && CONN.chargingError == CONN_NO_ERROR) {
|
||||
CONN_SetState(Unplugged);
|
||||
|
||||
125
Core/Src/cp.c
125
Core/Src/cp.c
@@ -2,13 +2,50 @@
|
||||
#include "adc.h"
|
||||
#include "board.h"
|
||||
#include "tim.h"
|
||||
#include "debug.h"
|
||||
#include <stdint.h>
|
||||
|
||||
#define MAX_DUTY 450
|
||||
#define CP_EMA_ALPHA_Q8 38
|
||||
#define CP_DEBOUNCE_MS_DEFAULT 10
|
||||
#define CP_DEBOUNCE_MS_F 60
|
||||
#define CP_DEBOUNCE_MS_F_LOW_DUTY 100
|
||||
#define CP_LOW_DUTY_THRESHOLD_PERCENT 10
|
||||
|
||||
#define CP_A_ENTER_MV 11000
|
||||
#define CP_A_EXIT_MV 10000
|
||||
|
||||
#define CP_B_ENTER_LOW_MV 8000
|
||||
#define CP_B_ENTER_HIGH_MV 10000
|
||||
#define CP_B_EXIT_LOW_MV 7500
|
||||
#define CP_B_EXIT_HIGH_MV 10500
|
||||
|
||||
#define CP_C_ENTER_LOW_MV 5000
|
||||
#define CP_C_ENTER_HIGH_MV 7000
|
||||
#define CP_C_EXIT_LOW_MV 4500
|
||||
#define CP_C_EXIT_HIGH_MV 7500
|
||||
|
||||
#define CP_D_ENTER_LOW_MV 2000
|
||||
#define CP_D_ENTER_HIGH_MV 4000
|
||||
#define CP_D_EXIT_LOW_MV 1500
|
||||
#define CP_D_EXIT_HIGH_MV 4500
|
||||
|
||||
#define CP_E_ENTER_LOW_MV -1000
|
||||
#define CP_E_ENTER_HIGH_MV 2000
|
||||
#define CP_E_EXIT_LOW_MV -1500
|
||||
#define CP_E_EXIT_HIGH_MV 2500
|
||||
|
||||
#define CP_F_ENTER_MV -11500
|
||||
#define CP_F_EXIT_MV -10500
|
||||
|
||||
static int32_t cp_voltage_mv = 0;
|
||||
static int32_t cp_voltage_filt_mv = 0;
|
||||
static uint8_t cp_filter_initialized = 0;
|
||||
static uint8_t cp_duty = 0;
|
||||
CP_State_t fake_cp_state = EV_STATE_ACQUIRING;
|
||||
static CP_State_t cp_stable_state = EV_STATE_ACQUIRING;
|
||||
static CP_State_t cp_candidate_state = EV_STATE_ACQUIRING;
|
||||
static uint32_t cp_candidate_since_ms = 0;
|
||||
|
||||
static uint32_t CP_ReadAdcChannel(uint32_t ch) {
|
||||
uint32_t adc = 0;
|
||||
@@ -23,6 +60,64 @@ static uint32_t CP_ReadAdcChannel(uint32_t ch) {
|
||||
}
|
||||
#define VREFINT_CAL_ADDR ((uint16_t*)0x1FFFF7BA) // для STM32F1!
|
||||
|
||||
static uint8_t CP_IsInRange(int32_t v, int32_t lo, int32_t hi) {
|
||||
return (v >= lo && v <= hi) ? 1u : 0u;
|
||||
}
|
||||
|
||||
static int32_t CP_ApplyEma(int32_t raw_mv) {
|
||||
if (!cp_filter_initialized) {
|
||||
cp_voltage_filt_mv = raw_mv;
|
||||
cp_filter_initialized = 1;
|
||||
return cp_voltage_filt_mv;
|
||||
}
|
||||
|
||||
cp_voltage_filt_mv += ((raw_mv - cp_voltage_filt_mv) * CP_EMA_ALPHA_Q8) / 256;
|
||||
return cp_voltage_filt_mv;
|
||||
}
|
||||
|
||||
static CP_State_t CP_ClassifyWithHysteresis(int32_t v, CP_State_t prev) {
|
||||
switch (prev) {
|
||||
case EV_STATE_A_IDLE:
|
||||
if (v >= CP_A_EXIT_MV) return EV_STATE_A_IDLE;
|
||||
break;
|
||||
case EV_STATE_B_CONN_PREP:
|
||||
if (CP_IsInRange(v, CP_B_EXIT_LOW_MV, CP_B_EXIT_HIGH_MV)) return EV_STATE_B_CONN_PREP;
|
||||
break;
|
||||
case EV_STATE_C_CONN_ACTIVE:
|
||||
if (CP_IsInRange(v, CP_C_EXIT_LOW_MV, CP_C_EXIT_HIGH_MV)) return EV_STATE_C_CONN_ACTIVE;
|
||||
break;
|
||||
case EV_STATE_D_CONN_ACT_VENT:
|
||||
if (CP_IsInRange(v, CP_D_EXIT_LOW_MV, CP_D_EXIT_HIGH_MV)) return EV_STATE_D_CONN_ACT_VENT;
|
||||
break;
|
||||
case EV_STATE_E_NO_POWER:
|
||||
if (CP_IsInRange(v, CP_E_EXIT_LOW_MV, CP_E_EXIT_HIGH_MV)) return EV_STATE_E_NO_POWER;
|
||||
break;
|
||||
case EV_STATE_F_ERROR:
|
||||
if (v <= CP_F_EXIT_MV) return EV_STATE_F_ERROR;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (v >= CP_A_ENTER_MV) return EV_STATE_A_IDLE;
|
||||
if (CP_IsInRange(v, CP_B_ENTER_LOW_MV, CP_B_ENTER_HIGH_MV)) return EV_STATE_B_CONN_PREP;
|
||||
if (CP_IsInRange(v, CP_C_ENTER_LOW_MV, CP_C_ENTER_HIGH_MV)) return EV_STATE_C_CONN_ACTIVE;
|
||||
if (CP_IsInRange(v, CP_D_ENTER_LOW_MV, CP_D_ENTER_HIGH_MV)) return EV_STATE_D_CONN_ACT_VENT;
|
||||
if (CP_IsInRange(v, CP_E_ENTER_LOW_MV, CP_E_ENTER_HIGH_MV)) return EV_STATE_E_NO_POWER;
|
||||
if (v <= CP_F_ENTER_MV) return EV_STATE_F_ERROR;
|
||||
return EV_STATE_ACQUIRING;
|
||||
}
|
||||
|
||||
static uint32_t CP_GetDebounceMs(CP_State_t next_state) {
|
||||
if (next_state == EV_STATE_F_ERROR) {
|
||||
if (cp_duty <= CP_LOW_DUTY_THRESHOLD_PERCENT) {
|
||||
return CP_DEBOUNCE_MS_F_LOW_DUTY;
|
||||
}
|
||||
return CP_DEBOUNCE_MS_F;
|
||||
}
|
||||
return CP_DEBOUNCE_MS_DEFAULT;
|
||||
}
|
||||
|
||||
static int32_t CP_ReadVoltageMv(void)
|
||||
{
|
||||
uint32_t adc = 0;
|
||||
@@ -75,27 +170,28 @@ int32_t CP_GetVoltage(void) {
|
||||
}
|
||||
|
||||
CP_State_t CP_GetState(void) {
|
||||
int32_t voltage_real = cp_voltage_mv;
|
||||
int32_t voltage_real = cp_voltage_filt_mv;
|
||||
uint32_t now = HAL_GetTick();
|
||||
|
||||
if(fake_cp_state != EV_STATE_ACQUIRING) {
|
||||
return fake_cp_state;
|
||||
}
|
||||
|
||||
if (voltage_real >= (12000-1000)) {
|
||||
return EV_STATE_A_IDLE;
|
||||
} else if (voltage_real >= (9000-1000) && voltage_real <= (9000+1000)) {
|
||||
return EV_STATE_B_CONN_PREP;
|
||||
} else if (voltage_real >= (6000-1000) && voltage_real <= (6000+1000)) {
|
||||
return EV_STATE_C_CONN_ACTIVE;
|
||||
} else if (voltage_real >= (3000-1000) && voltage_real <= (3000 + 1000)) {
|
||||
return EV_STATE_D_CONN_ACT_VENT;
|
||||
} else if (voltage_real >= (0-1000) && voltage_real <= (0+2000)){
|
||||
return EV_STATE_E_NO_POWER;
|
||||
} else if (voltage_real <= (-12000+1000)) {
|
||||
return EV_STATE_F_ERROR;
|
||||
CP_State_t instant_state = CP_ClassifyWithHysteresis(voltage_real, cp_stable_state);
|
||||
|
||||
if (instant_state == cp_stable_state) {
|
||||
cp_candidate_state = cp_stable_state;
|
||||
cp_candidate_since_ms = now;
|
||||
} else {
|
||||
return EV_STATE_ACQUIRING;
|
||||
if (cp_candidate_state != instant_state) {
|
||||
cp_candidate_state = instant_state;
|
||||
cp_candidate_since_ms = now;
|
||||
} else if ((now - cp_candidate_since_ms) >= CP_GetDebounceMs(cp_candidate_state)) {
|
||||
cp_stable_state = cp_candidate_state;
|
||||
}
|
||||
}
|
||||
|
||||
return cp_stable_state;
|
||||
}
|
||||
|
||||
void CP_Loop(void) {
|
||||
@@ -109,6 +205,7 @@ void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
|
||||
return;
|
||||
}
|
||||
cp_voltage_mv = CP_ReadVoltageMv();
|
||||
(void)CP_ApplyEma(cp_voltage_mv);
|
||||
ADC_Unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -261,9 +261,12 @@ void PSU_ReadWrite(){
|
||||
}
|
||||
CONN.RequestedPower = CONN.RequestedCurrent * CONN.RequestedVoltage / 10;
|
||||
|
||||
|
||||
if(PSU0.ready){
|
||||
PSU_SetVoltageCurrent(0, CONN.RequestedVoltage, CONN.RequestedCurrent); // Normal mode
|
||||
if (CONN.RequestedVoltage == 500) { // fake
|
||||
PSU_SetVoltageCurrent(0, 300, 10); // Normal mode
|
||||
}else{
|
||||
PSU_SetVoltageCurrent(0, CONN.RequestedVoltage, CONN.RequestedCurrent); // Normal mode
|
||||
}
|
||||
ED_Delay(CAN_DELAY);
|
||||
if(CONN.MeasuredVoltage>490) PSU0.hv_mode = 1;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "psu_control.h"
|
||||
|
||||
extern UART_HandleTypeDef huart3;
|
||||
extern uint8_t config_initialized;
|
||||
|
||||
static void send_state(void);
|
||||
static void CCS_SendResetReason(void);
|
||||
@@ -27,10 +28,10 @@ uint8_t ev_enable_output = 0;
|
||||
#define CMD_INTERVAL 10
|
||||
#define MAX_TX_BUFFER_SIZE 256
|
||||
#define MAX_RX_BUFFER_SIZE 256
|
||||
#define EVEREST_TIMEOUT_MS 2000
|
||||
|
||||
static uint8_t rx_buffer[MAX_RX_BUFFER_SIZE];
|
||||
static uint8_t tx_buffer[MAX_TX_BUFFER_SIZE];
|
||||
static uint8_t rx_armed = 0;
|
||||
|
||||
uint8_t ESTOP = 0;
|
||||
uint8_t REPLUG = 0;
|
||||
@@ -39,6 +40,8 @@ static uint8_t enabled = 0;
|
||||
static uint8_t pwm_duty_percent = 100;
|
||||
uint8_t isolation_enable = 0;
|
||||
static uint32_t last_host_seen = 0;
|
||||
static uint8_t everest_timed_out = 0;
|
||||
static uint32_t last_everest_timeout_log_tick = 0;
|
||||
static CP_State_t cp_state_buffer = EV_STATE_ACQUIRING;
|
||||
|
||||
CCS_State_t CCS_State;
|
||||
@@ -52,7 +55,6 @@ void CCS_RxEventCallback(UART_HandleTypeDef *huart, uint16_t size) {
|
||||
if (huart != &huart3) {
|
||||
return;
|
||||
}
|
||||
rx_armed = 0;
|
||||
if (size > 0 && size <= sizeof(rx_buffer)) {
|
||||
process_received_packet(rx_buffer, size);
|
||||
}
|
||||
@@ -64,10 +66,8 @@ void CCS_SerialLoop(void) {
|
||||
static uint32_t replug_watchdog1_tick = 0;
|
||||
static uint32_t last_state_sent = 0;
|
||||
|
||||
if (!rx_armed && HAL_UART_GetState(&huart3) == HAL_UART_STATE_READY) {
|
||||
if (HAL_UARTEx_ReceiveToIdle_IT(&huart3, rx_buffer, sizeof(rx_buffer)) == HAL_OK) {
|
||||
rx_armed = 1;
|
||||
}
|
||||
if (HAL_UART_GetState(&huart3) == HAL_UART_STATE_READY) {
|
||||
(void)HAL_UARTEx_ReceiveToIdle_IT(&huart3, rx_buffer, sizeof(rx_buffer));
|
||||
}
|
||||
|
||||
/* Read CP once per loop and use buffered value below. */
|
||||
@@ -108,81 +108,102 @@ void CCS_SerialLoop(void) {
|
||||
(void)replug_watchdog_tick;
|
||||
(void)replug_watchdog1_tick;
|
||||
|
||||
switch(CCS_ConnectorState){
|
||||
case CCS_DISABLED:
|
||||
RELAY_Write(RELAY_CP, 0);
|
||||
CONN_SetState(Disabled);
|
||||
if (CONN.chargingError == CONN_NO_ERROR){
|
||||
CCS_ConnectorState = CCS_UNPLUGGED;
|
||||
}
|
||||
break;
|
||||
case CCS_UNPLUGGED:
|
||||
RELAY_Write(RELAY_CP, 1);
|
||||
CONN_SetState(Unplugged);
|
||||
if ((cp_state_buffer == EV_STATE_B_CONN_PREP) || (cp_state_buffer == EV_STATE_C_CONN_ACTIVE)){
|
||||
CCS_ConnectorState = CCS_AUTH_REQUIRED;
|
||||
}
|
||||
if (CONN.chargingError != CONN_NO_ERROR){
|
||||
log_printf(LOG_ERR, "Charging error %d, state -> disabled\n", CONN.chargingError);
|
||||
CCS_ConnectorState = CCS_DISABLED;
|
||||
}
|
||||
|
||||
break;
|
||||
case CCS_AUTH_REQUIRED:
|
||||
RELAY_Write(RELAY_CP, 1);
|
||||
CONN_SetState(AuthRequired);
|
||||
if(CONN.connControl == CMD_START){
|
||||
log_printf(LOG_INFO, "Charging permitted, start charging\n");
|
||||
CCS_ConnectorState = CCS_CONNECTED;
|
||||
}
|
||||
if (cp_state_buffer == EV_STATE_A_IDLE){
|
||||
log_printf(LOG_INFO, "Car unplugged\n");
|
||||
CCS_ConnectorState = CCS_UNPLUGGED;
|
||||
}
|
||||
break;
|
||||
case CCS_CONNECTED:
|
||||
RELAY_Write(RELAY_CP, 1);
|
||||
if(CCS_EvseState < Preparing) {
|
||||
CONN_SetState(Preparing);
|
||||
} else {
|
||||
CONN_SetState(CCS_EvseState);
|
||||
}
|
||||
if (cp_state_buffer == EV_STATE_A_IDLE){
|
||||
log_printf(LOG_INFO, "Car unplugged\n");
|
||||
CCS_ConnectorState = CCS_UNPLUGGED;
|
||||
}
|
||||
if(REPLUG > 0){
|
||||
log_printf(LOG_INFO, "Replugging...\n");
|
||||
CCS_ConnectorState = CCS_REPLUGGING;
|
||||
}
|
||||
break;
|
||||
case CCS_REPLUGGING:
|
||||
RELAY_Write(RELAY_CP, 0);
|
||||
CONN_SetState(Replugging);
|
||||
if((HAL_GetTick() - replug_tick) > 1000){
|
||||
replug_tick = HAL_GetTick();
|
||||
if(REPLUG > 0){
|
||||
if (REPLUG != 0xFF) REPLUG--;
|
||||
} else {
|
||||
log_printf(LOG_INFO, "Replugging finished, but car unplugged\n");
|
||||
if (!config_initialized) {
|
||||
// Keep connector in Unknown until host sends valid SET_CONFIG.
|
||||
RELAY_Write(RELAY_CP, 1);
|
||||
CONN_SetState(Unknown);
|
||||
} else {
|
||||
switch(CCS_ConnectorState){
|
||||
case CCS_DISABLED:
|
||||
RELAY_Write(RELAY_CP, 0);
|
||||
CONN_SetState(Disabled);
|
||||
if (CONN.chargingError == CONN_NO_ERROR){
|
||||
CCS_ConnectorState = CCS_UNPLUGGED;
|
||||
}
|
||||
}
|
||||
|
||||
if(REPLUG == 0){
|
||||
if(cp_state_buffer == EV_STATE_B_CONN_PREP){
|
||||
log_printf(LOG_INFO, "Replugging finished, car plugged, state -> auth required\n");
|
||||
break;
|
||||
case CCS_UNPLUGGED:
|
||||
RELAY_Write(RELAY_CP, 1);
|
||||
CONN_SetState(Unplugged);
|
||||
if ((cp_state_buffer == EV_STATE_B_CONN_PREP) || (cp_state_buffer == EV_STATE_C_CONN_ACTIVE)){
|
||||
CCS_ConnectorState = CCS_AUTH_REQUIRED;
|
||||
}
|
||||
}
|
||||
break;
|
||||
if (CONN.chargingError != CONN_NO_ERROR){
|
||||
log_printf(LOG_ERR, "Charging error %d, state -> disabled\n", CONN.chargingError);
|
||||
CCS_ConnectorState = CCS_DISABLED;
|
||||
}
|
||||
|
||||
break;
|
||||
case CCS_AUTH_REQUIRED:
|
||||
RELAY_Write(RELAY_CP, 1);
|
||||
CONN_SetState(AuthRequired);
|
||||
if(CONN.connControl == CMD_START){
|
||||
log_printf(LOG_INFO, "Charging permitted, start charging\n");
|
||||
CCS_ConnectorState = CCS_CONNECTED;
|
||||
}
|
||||
if (cp_state_buffer == EV_STATE_A_IDLE){
|
||||
log_printf(LOG_INFO, "Car unplugged\n");
|
||||
CCS_ConnectorState = CCS_UNPLUGGED;
|
||||
}
|
||||
break;
|
||||
case CCS_CONNECTED:
|
||||
RELAY_Write(RELAY_CP, 1);
|
||||
if(CCS_EvseState < Preparing) {
|
||||
CONN_SetState(Preparing);
|
||||
} else {
|
||||
CONN_SetState(CCS_EvseState);
|
||||
}
|
||||
if (cp_state_buffer == EV_STATE_A_IDLE){
|
||||
log_printf(LOG_INFO, "Car unplugged\n");
|
||||
CCS_ConnectorState = CCS_UNPLUGGED;
|
||||
}
|
||||
if(REPLUG > 0){
|
||||
log_printf(LOG_INFO, "Replugging...\n");
|
||||
CCS_ConnectorState = CCS_REPLUGGING;
|
||||
}
|
||||
break;
|
||||
case CCS_REPLUGGING:
|
||||
RELAY_Write(RELAY_CP, 0);
|
||||
CONN_SetState(Replugging);
|
||||
if((HAL_GetTick() - replug_tick) > 1000){
|
||||
replug_tick = HAL_GetTick();
|
||||
if(REPLUG > 0){
|
||||
if (REPLUG != 0xFF) REPLUG--;
|
||||
} else {
|
||||
log_printf(LOG_INFO, "Replugging finished, but car unplugged\n");
|
||||
CCS_ConnectorState = CCS_UNPLUGGED;
|
||||
}
|
||||
}
|
||||
|
||||
if(REPLUG == 0){
|
||||
if(cp_state_buffer == EV_STATE_B_CONN_PREP){
|
||||
log_printf(LOG_INFO, "Replugging finished, car plugged, state -> auth required\n");
|
||||
CCS_ConnectorState = CCS_AUTH_REQUIRED;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (last_host_seen > 0 && (HAL_GetTick() - last_host_seen) > 500) {
|
||||
// If Everest timeout happened, keep safe-state and limit log frequency.
|
||||
// The safe-state must remain until we receive a valid packet from the host.
|
||||
if (everest_timed_out) {
|
||||
if (last_everest_timeout_log_tick == 0 ||
|
||||
(HAL_GetTick() - last_everest_timeout_log_tick) >= EVEREST_TIMEOUT_MS) {
|
||||
log_printf(LOG_ERR, "Everest timeout\n");
|
||||
last_everest_timeout_log_tick = HAL_GetTick();
|
||||
}
|
||||
CONN.EnableOutput = 0;
|
||||
CCS_EvseState = Unknown;
|
||||
CP_SetDuty(100);
|
||||
} else if (last_host_seen > 0 && (HAL_GetTick() - last_host_seen) > EVEREST_TIMEOUT_MS) {
|
||||
log_printf(LOG_ERR, "Everest timeout\n");
|
||||
everest_timed_out = 1;
|
||||
last_host_seen = HAL_GetTick(); // reset after the first timeout
|
||||
last_everest_timeout_log_tick = HAL_GetTick();
|
||||
|
||||
CONN.EnableOutput = 0;
|
||||
CCS_EvseState = Unknown;
|
||||
CP_SetDuty(100);
|
||||
} else {
|
||||
if (last_cmd == CMD_STOP) {
|
||||
CONN.EnableOutput = 0;
|
||||
@@ -287,6 +308,7 @@ static void send_state(void) {
|
||||
CCS_State.DutyCycle = CP_GetDuty();
|
||||
CCS_State.OutputEnabled = PSU0.CONT_enabled;
|
||||
CCS_State.MeasuredVoltage = (uint16_t)CONN.MeasuredVoltage;
|
||||
if (CONN.RequestedVoltage == 500) CCS_State.MeasuredVoltage = 500; // fake
|
||||
CCS_State.MeasuredCurrent = (uint16_t)CONN.MeasuredCurrent;
|
||||
CCS_State.Power = CCS_Power;
|
||||
CCS_State.Energy = CCS_Energy;
|
||||
@@ -327,6 +349,8 @@ static uint16_t expected_payload_len(uint8_t cmd) {
|
||||
static void apply_command(uint8_t cmd, const uint8_t* payload, uint16_t payload_len) {
|
||||
(void)payload_len;
|
||||
last_host_seen = HAL_GetTick();
|
||||
everest_timed_out = 0;
|
||||
last_everest_timeout_log_tick = 0;
|
||||
switch (cmd) {
|
||||
case CMD_E2M_PWM_DUTY: {
|
||||
const e2m_pwm_duty_t* p = (const e2m_pwm_duty_t*)payload;
|
||||
|
||||
@@ -61,10 +61,6 @@ void MX_TIM3_Init(void)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
if (HAL_TIM_OC_Init(&htim3) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||
if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
|
||||
@@ -79,12 +75,6 @@ void MX_TIM3_Init(void)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
sConfigOC.OCMode = TIM_OCMODE_TIMING;
|
||||
sConfigOC.Pulse = 1;
|
||||
if (HAL_TIM_OC_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/* USER CODE BEGIN TIM3_Init 2 */
|
||||
|
||||
/* USER CODE END TIM3_Init 2 */
|
||||
|
||||
@@ -59,7 +59,6 @@ defined in linker script */
|
||||
.weak Reset_Handler
|
||||
.type Reset_Handler, %function
|
||||
Reset_Handler:
|
||||
ldr sp, =_estack /* set stack pointer */
|
||||
|
||||
/* Call the clock system initialization function.*/
|
||||
bl SystemInit
|
||||
@@ -253,7 +252,6 @@ g_pfnVectors:
|
||||
.word 0
|
||||
.word BootRAM /* @0x1E0. This is for boot in RAM mode for
|
||||
STM32F10x Connectivity line Devices. */
|
||||
.word 0x66666666 /* Reserved for OpenBLT checksum*/
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
../Core/Src/charger_control.c:11:6:CONN_Init 1
|
||||
../Core/Src/charger_control.c:19:6:CONN_Loop 6
|
||||
../Core/Src/charger_control.c:41:6:CONN_Task 5
|
||||
../Core/Src/charger_control.c:57:6:CONN_SetState 16
|
||||
../Core/Src/charger_control.c:83:6:CONN_PrintChargingTotal 1
|
||||
../Core/Src/charger_control.c:12:6:CONN_Init 1
|
||||
../Core/Src/charger_control.c:20:6:CONN_Loop 6
|
||||
../Core/Src/charger_control.c:42:6:CONN_Task 6
|
||||
../Core/Src/charger_control.c:58:6:CONN_SetState 16
|
||||
../Core/Src/charger_control.c:84:6:CONN_PrintChargingTotal 1
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
../Core/Src/cp.c:13:17:CP_ReadAdcChannel 1
|
||||
../Core/Src/cp.c:26:16:CP_ReadVoltageMv 1
|
||||
../Core/Src/cp.c:39:6:CP_Init 1
|
||||
../Core/Src/cp.c:56:6:CP_SetDuty 1
|
||||
../Core/Src/cp.c:69:9:CP_GetDuty 1
|
||||
../Core/Src/cp.c:73:9:CP_GetVoltage 1
|
||||
../Core/Src/cp.c:77:12:CP_GetState 12
|
||||
../Core/Src/cp.c:101:6:CP_Loop 1
|
||||
../Core/Src/cp.c:105:6:HAL_TIM_OC_DelayElapsedCallback 4
|
||||
../Core/Src/cp.c:50:17:CP_ReadAdcChannel 1
|
||||
../Core/Src/cp.c:63:16:CP_IsInRange 3
|
||||
../Core/Src/cp.c:67:16:CP_ApplyEma 3
|
||||
../Core/Src/cp.c:78:19:CP_ClassifyWithHysteresis 19
|
||||
../Core/Src/cp.c:111:17:CP_GetDebounceMs 3
|
||||
../Core/Src/cp.c:121:16:CP_ReadVoltageMv 1
|
||||
../Core/Src/cp.c:134:6:CP_Init 1
|
||||
../Core/Src/cp.c:151:6:CP_SetDuty 1
|
||||
../Core/Src/cp.c:164:9:CP_GetDuty 1
|
||||
../Core/Src/cp.c:168:9:CP_GetVoltage 1
|
||||
../Core/Src/cp.c:172:12:CP_GetState 5
|
||||
../Core/Src/cp.c:197:6:CP_Loop 1
|
||||
../Core/Src/cp.c:201:6:HAL_TIM_OC_DelayElapsedCallback 4
|
||||
|
||||
@@ -8,5 +8,5 @@
|
||||
../Core/Src/psu_control.c:175:6:PSU_SetVoltageCurrent 5
|
||||
../Core/Src/psu_control.c:202:6:PSU_SendCmd 4
|
||||
../Core/Src/psu_control.c:238:10:max 2
|
||||
../Core/Src/psu_control.c:243:6:PSU_ReadWrite 5
|
||||
../Core/Src/psu_control.c:276:6:PSU_Task 41
|
||||
../Core/Src/psu_control.c:243:6:PSU_ReadWrite 6
|
||||
../Core/Src/psu_control.c:279:6:PSU_Task 41
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
../Drivers/CMSIS/Include/core_cm3.h:1762:34:__NVIC_SystemReset 1
|
||||
../Core/Src/serial.c:51:6:CCS_RxEventCallback 4
|
||||
../Core/Src/serial.c:61:6:CCS_SerialLoop 41
|
||||
../Core/Src/serial.c:206:6:CCS_Init 1
|
||||
../Core/Src/serial.c:218:17:crc16_ibm 4
|
||||
../Core/Src/serial.c:233:17:CCS_BuildPacket 4
|
||||
../Core/Src/serial.c:249:13:CCS_SendPacket 2
|
||||
../Core/Src/serial.c:257:13:CCS_SendResetReason 1
|
||||
../Core/Src/serial.c:261:6:CCS_SendEmergencyStop 1
|
||||
../Core/Src/serial.c:265:6:CCS_SendStart 1
|
||||
../Core/Src/serial.c:269:13:CCS_CalculateEnergy 2
|
||||
../Core/Src/serial.c:284:13:send_state 2
|
||||
../Core/Src/serial.c:311:17:expected_payload_len 11
|
||||
../Core/Src/serial.c:327:13:apply_command 13
|
||||
../Core/Src/serial.c:394:16:process_received_packet 6
|
||||
../Core/Src/serial.c:54:6:CCS_RxEventCallback 4
|
||||
../Core/Src/serial.c:63:6:CCS_SerialLoop 43
|
||||
../Core/Src/serial.c:227:6:CCS_Init 1
|
||||
../Core/Src/serial.c:239:17:crc16_ibm 4
|
||||
../Core/Src/serial.c:254:17:CCS_BuildPacket 4
|
||||
../Core/Src/serial.c:270:13:CCS_SendPacket 2
|
||||
../Core/Src/serial.c:278:13:CCS_SendResetReason 1
|
||||
../Core/Src/serial.c:282:6:CCS_SendEmergencyStop 1
|
||||
../Core/Src/serial.c:286:6:CCS_SendStart 1
|
||||
../Core/Src/serial.c:290:13:CCS_CalculateEnergy 2
|
||||
../Core/Src/serial.c:305:13:send_state 3
|
||||
../Core/Src/serial.c:333:17:expected_payload_len 11
|
||||
../Core/Src/serial.c:349:13:apply_command 13
|
||||
../Core/Src/serial.c:418:16:process_received_packet 6
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
../Core/Src/tim.c:31:6:MX_TIM3_Init 8
|
||||
../Core/Src/tim.c:95:6:MX_TIM4_Init 8
|
||||
../Core/Src/tim.c:157:6:HAL_TIM_Base_MspInit 3
|
||||
../Core/Src/tim.c:187:6:HAL_TIM_MspPostInit 3
|
||||
../Core/Src/tim.c:235:6:HAL_TIM_Base_MspDeInit 3
|
||||
../Core/Src/tim.c:31:6:MX_TIM3_Init 6
|
||||
../Core/Src/tim.c:85:6:MX_TIM4_Init 8
|
||||
../Core/Src/tim.c:147:6:HAL_TIM_Base_MspInit 3
|
||||
../Core/Src/tim.c:177:6:HAL_TIM_MspPostInit 3
|
||||
../Core/Src/tim.c:225:6:HAL_TIM_Base_MspDeInit 3
|
||||
|
||||
Reference in New Issue
Block a user