PER Firmware
Loading...
Searching...
No Matches
main.h
Go to the documentation of this file.
1#ifndef MAIN_H
2#define MAIN_H
3
13//STM32F407VGT6
14
15#include <stdint.h>
16#include "common/phal/gpio.h"
17
18// Status Indicators
19#define HEARTBEAT_LED_PORT (GPIOC)
20#define HEARTBEAT_LED_PIN (15)
21#define ERROR_LED_PORT (GPIOC)
22#define ERROR_LED_PIN (13)
23#define CONNECTION_LED_PORT (GPIOC)
24#define CONNECTION_LED_PIN (14)
25
26// CAN
27#define VCAN_RX_GPIO_Port (GPIOD)
28#define VCAN_RX_Pin (0)
29#define VCAN_TX_GPIO_Port (GPIOD)
30#define VCAN_TX_Pin (1)
31
32// MUX Control
33#define MUX_CTRL_A_GPIO_Port (GPIOB)
34#define MUX_CTRL_A_Pin (12)
35#define MUX_CTRL_B_GPIO_Port (GPIOE)
36#define MUX_CTRL_B_Pin (10)
37#define MUX_CTRL_C_GPIO_Port (GPIOB)
38#define MUX_CTRL_C_Pin (2)
39#define MUX_OUT_GPIO_Port (GPIOB)
40#define MUX_OUT_Pin (1)
41
42// LED CTRL
43#define SPI1_SCK_GPIO_Port (GPIOB)
44#define SPI1_SCK_Pin (3)
45#define SPI1_MOSI_GPIO_Port (GPIOB)
46#define SPI1_MOSI_Pin (5)
47
48#define LED_CTRL_LAT_GPIO_Port (GPIOD)
49#define LED_CTRL_LAT_Pin (7)
50#define LED_CTRL_BLANK_GPIO_Port (GPIOB)
51#define LED_CTRL_BLANK_Pin (6)
52
53// NOTE: Schematic refers to coolant hardware as 1 and 2
54// MAPPING
55// 1 = Battery Cooling
56// 2 = Drivetrain Cooling
57
58// Flow Rate
59#define FLOW_RATE_1_TIM (TIM3)
60#define FLOW_RATE_1_TIM_CH (1)
61#define FLOW_RATE_1_GPIO_Port (GPIOC)
62#define FLOW_RATE_1_Pin (6)
63#define FLOW_RATE_1_AF (2)
64
65#define FLOW_RATE_2_TIM (TIM8)
66#define FLOW_RATE_2_TIM_CH (2)
67#define FLOW_RATE_2_GPIO_Port (GPIOC)
68#define FLOW_RATE_2_Pin (7)
69#define FLOW_RATE_2_AF (3)
70
71// Fan Control
72#define FAN_1_PWM_TIM (TIM1)
73#define FAN_1_PWM_TIM_CH (1)
74#define FAN_1_PWM_GPIO_Port (GPIOE)
75#define FAN_1_PWM_Pin (9)
76#define FAN_1_PWM_AF (1)
77
78#define FAN_2_PWM_TIM (TIM1)
79#define FAN_2_PWM_TIM_CH (2)
80#define FAN_2_PWM_GPIO_Port (GPIOE)
81#define FAN_2_PWM_Pin (11)
82#define FAN_2_PWM_AF (1)
83
84#define FAN_3_PWM_TIM (TIM1)
85#define FAN_3_PWM_TIM_CH (3)
86#define FAN_3_PWM_GPIO_Port (GPIOE)
87#define FAN_3_PWM_Pin (13)
88#define FAN_3_PWM_AF (1)
89
90#define FAN_4_PWM_TIM (TIM1)
91#define FAN_4_PWM_TIM_CH (4)
92#define FAN_4_PWM_GPIO_Port (GPIOA)
93#define FAN_4_PWM_Pin (11)
94#define FAN_4_PWM_AF (1)
95
96#define FAN_1_TACH_TIM (TIM4)
97#define FAN_1_TACH_TIM_CH (2)
98#define FAN_1_TACH_GPIO_Port (GPIOB)
99#define FAN_1_TACH_Pin (7)
100#define FAN_1_TACH_AF (2)
101
102#define FAN_2_TACH_TIM (TIM10)
103#define FAN_2_TACH_TIM_CH (1)
104#define FAN_2_TACH_GPIO_Port (GPIOB)
105#define FAN_2_TACH_Pin (8)
106#define FAN_2_TACH_AF (3)
107
108#define FAN_3_TACH_TIM (TIM4)
109#define FAN_3_TACH_TIM_CH (4)
110#define FAN_3_TACH_GPIO_Port (GPIOB)
111#define FAN_3_TACH_Pin (9)
112#define FAN_3_TACH_AF (2)
113
114#define FAN_4_TACH_TIM (TIM12)
115#define FAN_4_TACH_TIM_CH (1)
116#define FAN_4_TACH_GPIO_Port (GPIOB)
117#define FAN_4_TACH_Pin (14)
118#define FAN_4_TACH_AF (9)
119
120// Pump Switches (High Power)
121#define PUMP_1_CTRL_GPIO_Port (GPIOB)
122#define PUMP_1_CTRL_Pin (10)
123#define PUMP_1_IMON_GPIO_Port (GPIOA)
124#define PUMP_1_IMON_Pin (6)
125#define PUMP_1_IMON_ADC_CHNL (6)
126
127#define PUMP_2_CTRL_GPIO_Port (GPIOE)
128#define PUMP_2_CTRL_Pin (15)
129#define PUMP_2_IMON_GPIO_Port (GPIOA)
130#define PUMP_2_IMON_Pin (5)
131#define PUMP_2_IMON_ADC_CHNL (5)
132
133// Heat Exchanger Fan (High Power)
134#define HXFAN_CTRL_GPIO_Port (GPIOD)
135#define HXFAN_CTRL_Pin (12)
136#define HXFAN_IMON_GPIO_Port (GPIOC)
137#define HXFAN_IMON_Pin (3)
138#define HXFAN_IMON_ADC_CHNL (13)
139
140// Shutdown Circuit (SDC) Switch (High Power)
141#define SDC_IMON_GPIO_Port (GPIOA)
142#define SDC_IMON_Pin (0)
143#define SDC_IMON_ADC_CHNL (0)
144
145// Fan Switches (Low Power)
146#define FAN_3_CTRL_GPIO_Port (GPIOA)
147#define FAN_3_CTRL_Pin (9)
148
149#define FAN_4_CTRL_GPIO_Port (GPIOA)
150#define FAN_4_CTRL_Pin (12)
151
152#define FAN_1_CTRL_GPIO_Port (GPIOC)
153#define FAN_1_CTRL_Pin (8)
154
155#define FAN_2_CTRL_GPIO_Port (GPIOC)
156#define FAN_2_CTRL_Pin (9)
157
158// Driveline Current Sense
159#define DLFR_CS_GPIO_Port (GPIOA)
160#define DLFR_CS_Pin (2)
161#define DLFR_CS_ADC_CHNL (2)
162#define DLBK_CS_GPIO_Port (GPIOA)
163#define DLBK_CS_Pin (3)
164#define DLBK_CS_ADC_CHNL (3)
165
166// Driveline Controls
167#define DLFR_CTRL_GPIO_Port (GPIOD)
168#define DLFR_CTRL_Pin (9)
169#define DLFR_NFLT_GPIO_Port (GPIOD)
170#define DLFR_NFLT_Pin (8)
171#define DLBK_CTRL_GPIO_Port (GPIOD)
172#define DLBK_CTRL_Pin (11)
173#define DLBK_NFLT_GPIO_Port (GPIOD)
174#define DLBK_NFLT_Pin (10)
175
176// Main Module Switch (Low Power)
177#define MAIN_CTRL_GPIO_Port (GPIOD)
178#define MAIN_CTRL_Pin (15)
179#define MAIN_NFLT_GPIO_Port (GPIOD)
180#define MAIN_NFLT_Pin (14)
181#define MAIN_CS_GPIO_Port (GPIOC)
182#define MAIN_CS_Pin (2)
183#define MAIN_CS_ADC_CHNL (12)
184
185// Dashboard Switch (Low Power)
186#define DASH_NFLT_GPIO_Port (GPIOA)
187#define DASH_NFLT_Pin (8)
188#define DASH_CS_GPIO_Port (GPIOC)
189#define DASH_CS_Pin (1)
190#define DASH_CS_ADC_CHNL (11)
191
192// Accumulator (ABox) Switch (Low Power)
193#define ABOX_NFLT_GPIO_Port (GPIOA)
194#define ABOX_NFLT_Pin (10)
195#define ABOX_CS_GPIO_Port (GPIOC)
196#define ABOX_CS_Pin (0)
197#define ABOX_CS_ADC_CHNL (10)
198
199// Bullet (Antennae) Switch (Low Power)
200#define BLT_CTRL_GPIO_Port (GPIOE)
201#define BLT_CTRL_Pin (12)
202#define BLT_NFLT_GPIO_Port (GPIOE)
203#define BLT_NFLT_Pin (14)
204
205// 5V Critical Switch (5V)
206#define CRIT_5V_CTRL_GPIO_Port (GPIOE)
207#define CRIT_5V_CTRL_Pin (2)
208#define CRIT_5V_NFLT_GPIO_Port (GPIOE)
209#define CRIT_5V_NFLT_Pin (1)
210
211// TV Switch (5V)
212#define TV_CTRL_GPIO_Port (GPIOE)
213#define TV_CTRL_Pin (6)
214#define TV_NFLT_GPIO_Port (GPIOE)
215#define TV_NFLT_Pin (5)
216
217// 5V Fan Switch (5V)
218#define FAN_5V_CTRL_GPIO_Port (GPIOE)
219#define FAN_5V_CTRL_Pin (8)
220#define FAN_5V_NFLT_GPIO_Port (GPIOE)
221#define FAN_5V_NFLT_Pin (7)
222
223// LV Battery BMS
224#define LV_BMS_STAT_GPIO_Port (GPIOA)
225#define LV_BMS_STAT_Pin (15)
226#define LV_BMS_TX_GPIO_Port (GPIOC)
227#define LV_BMS_TX_Pin (10)
228#define LV_BMS_RX_GPIO_Port (GPIOC)
229#define LV_BMS_RX_Pin (11)
230
231// Voltage/Current Sense
232#define V24_VS_GPIO_Port (GPIOB)
233#define V24_VS_Pin (0)
234#define V24_VS_ADC_CHNL (8)
235
236#define MUX_OUT_ADC_CHNL (9)
237
238#define V24_CS_GPIO_Port (GPIOA)
239#define V24_CS_Pin (4)
240#define V24_CS_ADC_CHNL (4)
241#define V5_CS_GPIO_Port (GPIOA)
242#define V5_CS_Pin (1)
243#define V5_CS_ADC_CHNL (1)
244
245#define V5_VS_GPIO_Port (GPIOC)
246#define V5_VS_Pin (5)
247#define V5_VS_ADC_CHNL (15)
248#define V3V3_VS_GPIO_Port (GPIOC)
249#define V3V3_VS_Pin (4)
250#define V3V3_VS_ADC_CHNL (14)
251
252#define DAQ_IMON_GPIO_Port (GPIOA)
253#define DAQ_IMON_Pin (7)
254#define DAQ_IMON_ADC_CHNL (7)
255#define INTERNAL_THERM_ADC_CHNL (16)
256
257// ADC Configuration
258#define ADC_REF_mV (3300UL) // mV
259
260typedef struct {
261 // Do not modify this struct unless
262 // you modify the ADC DMA config
263 // in main.c to match
264 uint16_t pump_1_imon;
265 uint16_t pump_2_imon;
266 uint16_t hxfan_imon;
267 uint16_t sdc_imon;
268 uint16_t dlfr_cs;
269 uint16_t dlbk_cs;
270 uint16_t main_cs;
271 uint16_t dash_cs;
272 uint16_t abox_cs;
273 uint16_t daq_imon;
274 uint16_t v24_vs;
275 uint16_t v24_cs;
276 uint16_t v5_vs;
277 uint16_t v5_cs;
278 uint16_t v3v3_vs;
279 uint16_t internal_therm;
280 uint16_t mux_out;
281} __attribute__((packed)) ADCReadings_t;
282
283volatile extern ADCReadings_t adc_readings;
284
285
286#endif // MAIN_H
Definition main.h:260