firmware
IEM Firmware Documentation
Loading...
Searching...
No Matches
main.h
Go to the documentation of this file.
1/* USER CODE BEGIN Header */
21/* USER CODE END Header */
22
23/* Define to prevent recursive inclusion -------------------------------------*/
24#ifndef __MAIN_H
25#define __MAIN_H
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
31/* Includes ------------------------------------------------------------------*/
32#include "stm32f4xx_hal.h"
33
34/* Private includes ----------------------------------------------------------*/
35/* USER CODE BEGIN Includes */
36#include <stdbool.h>
37/* USER CODE END Includes */
38
39/* Exported types ------------------------------------------------------------*/
40/* USER CODE BEGIN ET */
41
42/* USER CODE END ET */
43
44/* Exported constants --------------------------------------------------------*/
45/* USER CODE BEGIN EC */
46#define ISOADC_TIMER_IRQ TIM1_UP_TIM10_IRQn
47#define CAN_TX_TIMER_IRQ TIM7_IRQn
48#define CAN1_RX_FIF0_IRQ CAN1_RX0_IRQn
49#define DISABLE_ALL_IRQS \
50 do{ \
51 HAL_NVIC_DisableIRQ(ISOADC_TIMER_IRQ); \
52 HAL_NVIC_DisableIRQ(CAN_TX_TIMER_IRQ); \
53 HAL_NVIC_DisableIRQ(CAN1_RX_FIF0_IRQ); \
54 }while(0);
55
56#define ENABLE_ALL_IRQS \
57 do{ \
58 HAL_NVIC_EnableIRQ(ISOADC_TIMER_IRQ); \
59 HAL_NVIC_EnableIRQ(CAN_TX_TIMER_IRQ); \
60 HAL_NVIC_EnableIRQ(CAN1_RX_FIF0_IRQ); \
61 }while(0);
62
63#define DISABLE_CAN_TX_TIMER_IRQ HAL_NVIC_DisableIRQ(CAN_TX_TIMER_IRQ)
64#define ENABLE_CAN_TX_TIMER_IRQ HAL_NVIC_EnableIRQ(CAN_TX_TIMER_IRQ)
65
66#define DISABLE_CAN1_RX_FIF0_IRQ HAL_NVIC_DisableIRQ(CAN_TX_TIMER_IRQ)
67#define ENABLE_CAN1_RX_FIF0_IRQ HAL_NVIC_EnableIRQ(CAN_TX_TIMER_IRQ)
68
69#define DISABLE_ALL_CAN_IRQS \
70 do{ \
71 HAL_NVIC_DisableIRQ(CAN_TX_TIMER_IRQ); \
72 HAL_NVIC_DisableIRQ(CAN1_RX_FIF0_IRQ); \
73 }while(0);
74
75#define ENABLE_ALL_CAN_IRQS \
76 do{ \
77 HAL_NVIC_EnableIRQ(CAN_TX_TIMER_IRQ); \
78 HAL_NVIC_EnableIRQ(CAN1_RX_FIF0_IRQ); \
79 }while(0);
80
81/* USER CODE END EC */
82
83/* Exported macro ------------------------------------------------------------*/
84/* USER CODE BEGIN EM */
85
86/* USER CODE END EM */
87
88void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
89
90/* Exported functions prototypes ---------------------------------------------*/
91void Error_Handler(void);
92
93/* USER CODE BEGIN EFP */
94extern SPI_HandleTypeDef* ltc_spi;
95extern int16_t poll_cell_temps;
96extern int16_t poll_cell_voltages;
97extern TIM_HandleTypeDef htim1;
98extern TIM_HandleTypeDef htim7;
99extern TIM_HandleTypeDef htim13;
100extern int32_t fault_timer;
101
104
105/* USER CODE END EFP */
106
107/* Private defines -----------------------------------------------------------*/
108#define BMS_FLT_EN_Pin GPIO_PIN_13
109#define BMS_FLT_EN_GPIO_Port GPIOC
110#define LSE_IN_Pin GPIO_PIN_14
111#define LSE_IN_GPIO_Port GPIOC
112#define LSE_OUT_Pin GPIO_PIN_15
113#define LSE_OUT_GPIO_Port GPIOC
114#define HSE_IN_Pin GPIO_PIN_0
115#define HSE_IN_GPIO_Port GPIOH
116#define HSE_OUT_Pin GPIO_PIN_1
117#define HSE_OUT_GPIO_Port GPIOH
118#define SHUTDOWN_ACTIVE_Pin GPIO_PIN_3
119#define SHUTDOWN_ACTIVE_GPIO_Port GPIOC
120#define PRECHARGE_COMPLETE_Pin GPIO_PIN_1
121#define PRECHARGE_COMPLETE_GPIO_Port GPIOA
122#define DEBUG_LED_Pin GPIO_PIN_2
123#define DEBUG_LED_GPIO_Port GPIOA
124#define SPI_UCOMM_CS_Pin GPIO_PIN_4
125#define SPI_UCOMM_CS_GPIO_Port GPIOA
126#define SPI_UCOMM_SCK_Pin GPIO_PIN_5
127#define SPI_UCOMM_SCK_GPIO_Port GPIOA
128#define SPI_UCOMM_MISO_Pin GPIO_PIN_6
129#define SPI_UCOMM_MISO_GPIO_Port GPIOA
130#define SPI_UCOMM_MOSI_Pin GPIO_PIN_7
131#define SPI_UCOMM_MOSI_GPIO_Port GPIOA
132#define LV_PWR_MONITOR_Pin GPIO_PIN_4
133#define LV_PWR_MONITOR_GPIO_Port GPIOC
134#define SPI_ADC_CS_Pin GPIO_PIN_12
135#define SPI_ADC_CS_GPIO_Port GPIOB
136#define SPI_ADC_SCK_Pin GPIO_PIN_13
137#define SPI_ADC_SCK_GPIO_Port GPIOB
138#define SPI_ADC_MISO_Pin GPIO_PIN_14
139#define SPI_ADC_MISO_GPIO_Port GPIOB
140#define SPI_ADC_MOSI_Pin GPIO_PIN_15
141#define SPI_ADC_MOSI_GPIO_Port GPIOB
142#define ADC_CLKIN_Pin GPIO_PIN_6
143#define ADC_CLKIN_GPIO_Port GPIOC
144#define ADC_DRDY_Pin GPIO_PIN_7
145#define ADC_DRDY_GPIO_Port GPIOC
146#define ADC_RST_Pin GPIO_PIN_8
147#define ADC_RST_GPIO_Port GPIOC
148#define CHARGE_EN_Pin GPIO_PIN_8
149#define CHARGE_EN_GPIO_Port GPIOA
150#define SWDIO_TC_Pin GPIO_PIN_13
151#define SWDIO_TC_GPIO_Port GPIOA
152#define SWCLK_TC_Pin GPIO_PIN_14
153#define SWCLK_TC_GPIO_Port GPIOA
154#define SPI_FERAM_CS_Pin GPIO_PIN_15
155#define SPI_FERAM_CS_GPIO_Port GPIOA
156#define SPI_FERAM_SCK_Pin GPIO_PIN_10
157#define SPI_FERAM_SCK_GPIO_Port GPIOC
158#define SPI_FERAM_MISO_Pin GPIO_PIN_11
159#define SPI_FERAM_MISO_GPIO_Port GPIOC
160#define SPI_FERAM_MOSI_Pin GPIO_PIN_12
161#define SPI_FERAM_MOSI_GPIO_Port GPIOC
162#define IMD_DIAGNOSTIC_Pin GPIO_PIN_3
163#define IMD_DIAGNOSTIC_GPIO_Port GPIOB
164
165/* USER CODE BEGIN Private defines */
166
167// This struct holds the configuration variables required for manual balancing
168// https://confluence.illinielectricmotorsports.com/display/SOF/Manual+Balancing+Implementation
169typedef struct {
170 bool charge_en; // defaults to false
171 uint16_t charge_voltage; // defaults to 600V | multiplied by 10 | 600V -> 6000 in the variable
172 uint16_t charge_current; // defaults to 0A | multiplied by 10 | 10A -> 100 in the variable
173
174 bool discharge_balance_en; // defaults to false
175 uint8_t num_cells_discharged_per_secondary; // defaults to 0, must be set between 1 to 12 when discharge_balance_en == true
176 uint16_t discharge_threshold_voltage; // defaults to 4.16V | multiplied by 10,000 | 4.16V -> 41600 in the variable
177
178 bool precharge_cplt; // defaults to false
179
181
183
184/* USER CODE END Private defines */
185
186#ifdef __cplusplus
187}
188#endif
189
190#endif /* __MAIN_H */
TIM_HandleTypeDef htim13
Definition main.c:100
void Error_Handler(void)
This function is executed in case of error occurrence.
Definition main.c:920
TIM_HandleTypeDef htim1
Definition main.c:96
int16_t poll_cell_temps
Definition main.c:118
void send_cell_vals_polling()
Definition main.c:1016
SPI_HandleTypeDef * ltc_spi
Definition main.c:103
TIM_HandleTypeDef htim7
Definition main.c:99
int16_t poll_cell_voltages
Definition main.c:119
void send_can_msg_from_irq()
Definition main.c:991
int32_t fault_timer
Definition main.c:146
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim)
Definition stm32f4xx_hal_msp.c:468
Definition main.h:169
bool precharge_cplt
Definition main.h:178
uint16_t discharge_threshold_voltage
Definition main.h:176
bool discharge_balance_en
Definition main.h:174
bool valid_charge_message
Definition main.h:180
uint16_t charge_current
Definition main.h:172
uint16_t charge_voltage
Definition main.h:171
bool charge_en
Definition main.h:170
uint8_t num_cells_discharged_per_secondary
Definition main.h:175