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
260
typedef
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
283
volatile
extern
ADCReadings_t adc_readings;
284
285
286
#endif
// MAIN_H
__attribute__
Definition
main.h:260
source
pdu
main.h
Generated by
1.12.0