![]() |
Midnight Sun Firmware
|
Rear Controller Board Firmware. More...
Classes | |
struct | RearControllerConfig |
struct | RearControllerStorage |
Macros | |
#define | REAR_CONTROLLER_PRECHARGE_EVENT 0U |
#define | REAR_CONTROLLER_KILLSWITCH_EVENT 1U |
#define | REAR_CONTROLLER_CAN_RX { .port = GPIO_PORT_B, .pin = 8 } |
Rear Controller CAN RX Port. | |
#define | REAR_CONTROLLER_CAN_TX { .port = GPIO_PORT_B, .pin = 9 } |
Rear Controller CAN TX Port. | |
#define | REAR_CONTROLLER_POS_RELAY_ENABLE_GPIO { .port = GPIO_PORT_A, .pin = 4 } |
Rear Controller positive relay enable pin. | |
#define | REAR_CONTROLLER_POS_RELAY_SENSE_GPIO { .port = GPIO_PORT_B, .pin = 3 } |
Rear Controller positive relay sense pin. | |
#define | REAR_CONTROLLER_NEG_RELAY_ENABLE_GPIO { .port = GPIO_PORT_B, .pin = 2 } |
Rear Controller negative relay enable pin. | |
#define | REAR_CONTROLLER_NEG_RELAY_SENSE_GPIO { .port = GPIO_PORT_A, .pin = 12 } |
Rear Controller negative relay sense pin. | |
#define | REAR_CONTROLLER_SOLAR_RELAY_ENABLE_GPIO { .port = GPIO_PORT_A, .pin = 5 } |
Rear Controller solar relay enable pin. | |
#define | REAR_CONTROLLER_SOLAR_RELAY_SENSE_GPIO { .port = GPIO_PORT_A, .pin = 6 } |
Rear Controller solar relay sense pin. | |
#define | REAR_CONTROLLER_MOTOR_RELAY_ENABLE_GPIO { .port = GPIO_PORT_A, .pin = 9 } |
Rear Controller motor relay enable pin. | |
#define | REAR_CONTROLLER_MOTOR_RELAY_SENSE_GPIO { .port = GPIO_PORT_A, .pin = 10 } |
Rear Controller motor relay sense pin. | |
#define | REAR_CONTROLLER_MOTOR_LV_ENABLE_GPIO { .port = GPIO_PORT_C, .pin = 12 } |
Rear Controller motor low-voltage enable pin. | |
#define | REAR_CONTROLLER_CURRENT_SENSE_I2C_PORT I2C_PORT_1 |
Current sense I2C port. | |
#define | REAR_CONTROLLER_CURRENT_SENSE_I2C_SDA_GPIO { .port = GPIO_PORT_B, .pin = 7 } |
Current sense I2C serial data pin. | |
#define | REAR_CONTROLLER_CURRENT_SENSE_I2C_SCL_GPIO { .port = GPIO_PORT_B, .pin = 6 } |
Current sense I2C clock pin. | |
#define | REAR_CONTROLLER_CURRENT_SENSE_MAX17261_I2C_ADDR (96) |
Current sense slave address. | |
#define | REAR_CONTROLLER_ADBMS_AFE_SPI_PORT SPI_PORT_2 |
AFE SPI port. | |
#define | REAR_CONTROLLER_ADBMS_AFE_SPI_BAUDRATE SPI_BAUDRATE_312_5KHZ |
AFE SPI Baudrate. | |
#define | REAR_CONTROLLER_ADBMS_AFE_SPI_SDO_GPIO { .port = GPIO_PORT_B, .pin = 15 } |
AFE SPI Serial data out. | |
#define | REAR_CONTROLLER_ADBMS_AFE_SPI_SDI_GPIO { .port = GPIO_PORT_B, .pin = 14 } |
AFE SPI Serial data in. | |
#define | REAR_CONTROLLER_ADBMS_AFE_SPI_SCK_GPIO { .port = GPIO_PORT_B, .pin = 13 } |
AFE SPI Serial clock line. | |
#define | REAR_CONTROLLER_ADBMS_AFE_SPI_CS_GPIO { .port = GPIO_PORT_B, .pin = 12 } |
AFE SPI Chip select line. | |
#define | REAR_CONTROLLER_PCS_VALID1 { .port = GPIO_PORT_C, .pin = 6 } |
Rear Controller PCS input valid pin 1. | |
#define | REAR_CONTROLLER_PCS_VALID2 { .port = GPIO_PORT_C, .pin = 7 } |
Rear Controller PCS input valid pin 2. | |
#define | REAR_CONTROLLER_AUX_VALID1 { .port = GPIO_PORT_C, .pin = 8 } |
Rear Controller AUX input valid pin 1. | |
#define | REAR_CONTROLLER_AUX_VALID2 { .port = GPIO_PORT_C, .pin = 9 } |
Rear Controller AUX input valid pin 2. | |
#define | REAR_CONTROLLER_PCS_VSENSE { .port = GPIO_PORT_A, .pin = 1 } |
Rear Controller PCS voltage sense. | |
#define | REAR_CONTROLLER_AUX_VSENSE { .port = GPIO_PORT_A, .pin = 2 } |
Rear Controller AUX voltage sense. | |
#define | REAR_CONTROLLER_PCS_ISENSE { .port = GPIO_PORT_C, .pin = 2 } |
Rear Controller PCS current sense. | |
#define | REAR_CONTROLLER_AUX_ISENSE { .port = GPIO_PORT_C, .pin = 3 } |
Rear Controller AUX current sense. | |
#define | REAR_CONTROLLER_PRECHARGE_MONITOR_GPIO { .port = GPIO_PORT_A, .pin = 3 } |
Precharge monitoring pin. | |
#define | REAR_CONTROLLER_KILLSWITCH_MONITOR_GPIO { .port = GPIO_PORT_A, .pin = 11 } |
Killswitch monitoring pin. | |
#define | PACK_MAX_DISCHARGE_CURRENT_MA 58200 |
#define | PACK_MAX_CHARGE_CURRENT_MA -27000 |
#define | PACK_SHORT_CIRCUIT_CURRENT_MA 60000 |
#define | CELL_OVERVOLTAGE_LIMIT_MV 4200 |
#define | CELL_UNDERVOLTAGE_LIMIT_MV 2500 |
#define | CELL_OVERTEMP_DISCHARGE_LIMIT_C 60 |
#define | CELL_OVERTEMP_CHARGE_LIMIT_C 55 |
#define | CELL_UNDERTEMP_CHARGE_LIMIT_C 0 |
#define | SHORT_CIRCUIT_RESPONSE_MS 1U |
#define | OVERCURRENT_RESPONSE_MS 50U |
#define | OVERTEMP_RESPONSE_MS 500U |
#define | UNDERVOLTAGE_RESPONSE_MS 1000U |
#define | OVERVOLTAGE_RESPONSE_MS 1000U |
Enumerations | |
enum | RearControllerState { REAR_CONTROLLER_STATE_INIT = 0 , REAR_CONTROLLER_STATE_PRECHARGE , REAR_CONTROLLER_STATE_IDLE , REAR_CONTROLLER_STATE_DRIVE , REAR_CONTROLLER_STATE_CHARGE , REAR_CONTROLLER_STATE_FAULT } |
enum | RearControllerEvent { REAR_CONTROLLER_EVENT_NONE = 0 , REAR_CONTROLLER_EVENT_INIT_COMPLETE , REAR_CONTROLLER_EVENT_PRECHARGE_SUCCESS , REAR_CONTROLLER_EVENT_PRECHARGE_FAIL , REAR_CONTROLLER_EVENT_DRIVE_REQUEST , REAR_CONTROLLER_EVENT_CHARGE_REQUEST , REAR_CONTROLLER_EVENT_NEUTRAL_REQUEST , REAR_CONTROLLER_EVENT_CHARGER_REMOVED , REAR_CONTROLLER_EVENT_FAULT , REAR_CONTROLLER_EVENT_RESET } |
Functions | |
StatusCode | killswitch_init (Event event, const Task *task) |
StatusCode | precharge_init (Event event, const Task *task) |
StatusCode | rear_controller_state_manager_init (void) |
Initialize the state machine. More... | |
StatusCode | rear_controller_state_manager_step (RearControllerEvent event) |
Advance the state machine based on inputs/events. More... | |
RearControllerState | rear_controller_state_manager_get_state (void) |
Get current state. More... | |
Rear Controller Board Firmware.
#define CELL_OVERTEMP_CHARGE_LIMIT_C 55 |
Max temperature for charge
#define CELL_OVERTEMP_DISCHARGE_LIMIT_C 60 |
Max temperature for discharge
#define CELL_OVERVOLTAGE_LIMIT_MV 4200 |
Over-voltage cutoff
#define CELL_UNDERTEMP_CHARGE_LIMIT_C 0 |
Min temperature for charge
#define CELL_UNDERVOLTAGE_LIMIT_MV 2500 |
Under-voltage cutoff
#define OVERCURRENT_RESPONSE_MS 50U |
Delay before over-current trips
#define OVERTEMP_RESPONSE_MS 500U |
Delay before over-temp trips
#define OVERVOLTAGE_RESPONSE_MS 1000U |
Delay before over-voltage trips
#define PACK_MAX_CHARGE_CURRENT_MA -27000 |
Maximum allowed charge current
#define PACK_MAX_DISCHARGE_CURRENT_MA 58200 |
Maximum allowed discharge current
#define PACK_SHORT_CIRCUIT_CURRENT_MA 60000 |
Instantaneous short-circuit threshold
#define SHORT_CIRCUIT_RESPONSE_MS 1U |
HW trip reaction time
#define UNDERVOLTAGE_RESPONSE_MS 1000U |
Delay before under-voltage trips
enum RearControllerState |
RearControllerState rear_controller_state_manager_get_state | ( | void | ) |
Get current state.
StatusCode rear_controller_state_manager_init | ( | void | ) |
Initialize the state machine.
StatusCode rear_controller_state_manager_step | ( | RearControllerEvent | event | ) |
Advance the state machine based on inputs/events.
event | The triggering event |