PER Firmware
Loading...
Searching...
No Matches
main.c File Reference

"Abox" node source code More...

#include "main.h"
#include "can_library/faults_common.h"
#include "can_library/generated/A_BOX.h"
#include "charging_fsm.h"
#include "common/rtos/rtos.h"
#include "common/heartbeat/heartbeat.h"
#include "common/phal_G4/adc/adc.h"
#include "common/phal_G4/fdcan/fdcan.h"
#include "common/phal_G4/gpio/gpio.h"
#include "common/phal_G4/rcc/rcc.h"
#include "common/phal_G4/pin_defs/g474ret6.h"
#include "adbms.h"
#include "common/utils/countof.h"
#include "common/watchdog/watchdog.h"
#include "telemetry.h"
Include dependency graph for main.c:

Functions

void HardFault_Handler (void)
 
void bms_task (void)
 
 DEFINE_CAN_TASKS ()
 
 RTOS_DEFINE_TASK (bms_task, 200, TASK_PRIORITY_NORMAL, STACK_2048)
 
 RTOS_DEFINE_TASK (charging_fsm_periodic, ELCON_COMMAND_PERIOD_MS, TASK_PRIORITY_NORMAL, STACK_512)
 
 RTOS_DEFINE_TASK (fault_library_periodic, A_BOX_FAULT_SYNC_PERIOD_MS, TASK_PRIORITY_NORMAL, STACK_1024)
 
 RTOS_DEFINE_TASK (report_telemetry_100hz, TELEMETRY_100HZ_PERIOD_MS, TASK_PRIORITY_LOW, STACK_512)
 
 RTOS_DEFINE_TASK (report_telemetry_8hz, TELEMETRY_8HZ_PERIOD_MS, TASK_PRIORITY_LOW, STACK_512)
 
 RTOS_DEFINE_TASK (report_telemetry_02hz, TELEMETRY_02HZ_PERIOD_MS, TASK_PRIORITY_LOW, STACK_512)
 
 DEFINE_WATCHDOG_TASK ()
 
 DEFINE_HEARTBEAT_TASK (nullptr)
 
int main (void)
 

Variables

static PHAL_DMA_Handle_t spi1_rx_dma
 
static PHAL_DMA_Handle_t spi1_tx_dma
 
SPI_InitConfig_t bms_spi_config
 
volatile adc1_dma_buffer_t adc1_dma_buffer
 
static const PHAL_ADC_ChannelConfig_t adc_channels []
 
static const PHAL_ADC_Config_t adc_config
 
PHAL_ADC_Handle_t adc_handle
 
PHAL_GPIO_InitConfig_t gpio_config []
 
adbms_bms_t g_bms = {0}
 
uint8_t g_bms_tx_buf [ADBMS_SPI_TX_BUFFER_SIZE] = {0}
 
static constexpr float MIN_V_FOR_BALANCE = 3.2f
 
static constexpr float MIN_DELTA_FOR_BALANCE = 0.05f
 

Detailed Description

Function Documentation

◆ bms_task()

void bms_task ( void )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DEFINE_CAN_TASKS()

DEFINE_CAN_TASKS ( )

◆ DEFINE_HEARTBEAT_TASK()

DEFINE_HEARTBEAT_TASK ( nullptr )

◆ DEFINE_WATCHDOG_TASK()

DEFINE_WATCHDOG_TASK ( )

◆ HardFault_Handler()

void HardFault_Handler ( void )
extern
Here is the caller graph for this function:

◆ main()

int main ( void )
Here is the call graph for this function:

◆ RTOS_DEFINE_TASK() [1/6]

RTOS_DEFINE_TASK ( bms_task ,
200 ,
TASK_PRIORITY_NORMAL ,
STACK_2048  )

◆ RTOS_DEFINE_TASK() [2/6]

RTOS_DEFINE_TASK ( charging_fsm_periodic ,
ELCON_COMMAND_PERIOD_MS ,
TASK_PRIORITY_NORMAL ,
STACK_512  )

◆ RTOS_DEFINE_TASK() [3/6]

RTOS_DEFINE_TASK ( fault_library_periodic ,
A_BOX_FAULT_SYNC_PERIOD_MS ,
TASK_PRIORITY_NORMAL ,
STACK_1024  )

◆ RTOS_DEFINE_TASK() [4/6]

◆ RTOS_DEFINE_TASK() [5/6]

◆ RTOS_DEFINE_TASK() [6/6]

Variable Documentation

◆ adc1_dma_buffer

volatile adc1_dma_buffer_t adc1_dma_buffer

◆ adc_channels

const PHAL_ADC_ChannelConfig_t adc_channels[]
static
Initial value:
= {
{.channel = ISENSE_ADC_CHANNEL},
{.channel = VBATT_ADC_CHANNEL},
}
#define VBATT_ADC_CHANNEL
Definition main.h:40
#define ISENSE_ADC_CHANNEL
Definition main.h:37

◆ adc_config

const PHAL_ADC_Config_t adc_config
static
Initial value:
= {
.instance = ADC1,
.channels = adc_channels,
.channel_count = sizeof(adc_channels) / sizeof(adc_channels[0]),
}
static const PHAL_ADC_ChannelConfig_t adc_channels[]
Definition main.c:65

◆ adc_handle

PHAL_ADC_Handle_t adc_handle

◆ bms_spi_config

SPI_InitConfig_t bms_spi_config
Initial value:
= {
.data_len = 8,
.nss_sw = false,
.nss_gpio_port = SPI1_CS_PORT,
.nss_gpio_pin = SPI1_CS_PIN,
.rx_dma = &spi1_rx_dma,
.tx_dma = &spi1_tx_dma,
.periph = SPI1,
.data_rate = 500'000,
}
static PHAL_DMA_Handle_t spi1_tx_dma
Definition main.c:40
static PHAL_DMA_Handle_t spi1_rx_dma
Definition main.c:30
#define SPI1_CS_PIN
Definition main.h:32
#define SPI1_CS_PORT
Definition main.h:31
@ SPI_CPHA_FIRST_EDGE
Definition spi.h:35
@ SPI_CPOL_IDLE_LOW
Definition spi.h:27

◆ g_bms

adbms_bms_t g_bms = {0}

◆ g_bms_tx_buf

uint8_t g_bms_tx_buf[ADBMS_SPI_TX_BUFFER_SIZE] = {0}

◆ gpio_config

PHAL_GPIO_InitConfig_t gpio_config[]

◆ MIN_DELTA_FOR_BALANCE

float MIN_DELTA_FOR_BALANCE = 0.05f
staticconstexpr

◆ MIN_V_FOR_BALANCE

float MIN_V_FOR_BALANCE = 3.2f
staticconstexpr

◆ spi1_rx_dma

PHAL_DMA_Handle_t spi1_rx_dma
static
Initial value:
= {
.wiring = &SPI1_RX_DMA_WIRING,
.params = {
.priority = DMA_PRIORITY_HIGH,
.mode = DMA_MODE_NORMAL,
.mem_inc = true,
.tx_isr_en = true,
},
}
static const PHAL_DMA_Wiring_t SPI1_RX_DMA_WIRING
Definition dma_wiring.h:135
@ DMA_MODE_NORMAL
Definition dma.h:27
@ DMA_PRIORITY_HIGH
Definition dma.h:21

◆ spi1_tx_dma

PHAL_DMA_Handle_t spi1_tx_dma
static
Initial value:
= {
.wiring = &SPI1_TX_DMA_WIRING,
.params = {
.priority = DMA_PRIORITY_HIGH,
.mode = DMA_MODE_NORMAL,
.mem_inc = true,
.tx_isr_en = true,
},
}
static const PHAL_DMA_Wiring_t SPI1_TX_DMA_WIRING
Definition dma_wiring.h:144