remove more old code

we compile now!
This commit is contained in:
Kilian Bracher 2025-01-19 01:24:55 +01:00
parent 537656520f
commit d06336d5fe
Signed by: k.bracher
SSH Key Fingerprint: SHA256:mXpyZkK7RDiJ7qeHCKJX108woM0cl5TrCvNBJASu6lM
7 changed files with 416 additions and 207 deletions

View File

@ -1,32 +0,0 @@
/*
* AMS_CAN.h
*
* Created on: Mar 19, 2022
* Author: jasper
*/
#ifndef INC_AMS_CAN_H_
#define INC_AMS_CAN_H_
#include "main.h"
#include "stm32h7xx_hal.h"
#include <stdint.h>
void ams_can_init(CAN_HandleTypeDef* hcan);
void ams_can_send_status();
/**
* @brief Send an AMS Error via CAN.
*
* Data is taken from error_data
*/
void ams_can_send_error(uint8_t kind, uint8_t data[4]);
HAL_StatusTypeDef ams_can_wait_for_free_mailboxes(CAN_HandleTypeDef* handle,
int num_mailboxes,
uint32_t timeout);
void ams_can_send_log();
#endif /* INC_AMS_CAN_H_ */

View File

@ -11,7 +11,6 @@
#include "ADBMS_Abstraction.h" #include "ADBMS_Abstraction.h"
#include "ADBMS_CMD_MAKROS.h" #include "ADBMS_CMD_MAKROS.h"
#include "ADBMS_LL_Driver.h" #include "ADBMS_LL_Driver.h"
#include "AMS_CAN.h"
#include <stdbool.h> #include <stdbool.h>

View File

@ -314,11 +314,12 @@ uint8 pollCMD(uint16 command) {
} }
void mcuAdbmsCSLow() { void mcuAdbmsCSLow() {
HAL_GPIO_WritePin(CSB_GPIO_Port, CSB_Pin, GPIO_PIN_RESET); //TODO: set right GPIO
//HAL_GPIO_WritePin(CSB_GPIO_Port, CSB_Pin, GPIO_PIN_RESET);
} }
void mcuAdbmsCSHigh() { void mcuAdbmsCSHigh() {
HAL_GPIO_WritePin(CSB_GPIO_Port, CSB_Pin, GPIO_PIN_SET); //HAL_GPIO_WritePin(CSB_GPIO_Port, CSB_Pin, GPIO_PIN_SET);
} }
uint8 mcuSPITransmit(uint8* buffer, uint8 buffersize) { uint8 mcuSPITransmit(uint8* buffer, uint8 buffersize) {

View File

@ -1,155 +0,0 @@
/*
* AMS_CAN.c
*
* Created on: Mar 19, 2022
* Author: jasper
*/
#include "AMS_CAN.h"
#include "ADBMS_Abstraction.h"
#include "AMS_HighLevel.h"
#include "DS18B20_HAL.h"
#include "TMP1075.h"
#include "common_defs.h"
#include "eeprom.h"
#include "errors.h"
#include "main.h"
#include "stm32f3xx.h"
#include "stm32h7xx_hal.h"
#include "can-halal.h"
#include <stdint.h>
#include <string.h>
#define CAN_ID_SLAVE_PANIC 0x009
#define CAN_ID_SLAVE_CONFIG 0x00D
#define CAN_ID_SLAVE_STATUS_BASE 0x080
#define CAN_ID_SLAVE_LOG_BASE 0x600
void ams_can_init(CAN_HandleTypeDef* hcan) {
ftcan_init(hcan);
ftcan_add_filter(CAN_ID_SLAVE_CONFIG, 0x7FF);
}
#define ITER_COUNT 10
static uint8_t count = 0;
static bool isOn = false;
void ams_can_send_status() {
if (count == ITER_COUNT) {
HAL_GPIO_WritePin(LED1_G_GPIO_Port, LED1_G_Pin, isOn ? GPIO_PIN_SET : GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED1_B_GPIO_Port, LED1_B_Pin, isOn ? GPIO_PIN_SET : GPIO_PIN_RESET);
count = 0;
isOn = !isOn;
} else {
count++;
}
static uint8_t data[8];
int error = error_sources != 0;
data[0] = eeprom_config.id | (error << 7);
data[1] = tmp1075_temps[30] >> 4; //PCB temp sensor
uint8_t* ptr = &data[2];
uint16_t min_volt = 0xFFFF; //TODO: voltage cast to unsigned
uint16_t max_volt = 0;
for (size_t i = 0; i < numberofCells; i++) {
if (module.cellVoltages[i] < min_volt) {
min_volt = module.cellVoltages[i];
}
if (module.cellVoltages[i] > max_volt) {
max_volt = module.cellVoltages[i];
}
}
ptr = ftcan_marshal_unsigned(ptr, min_volt, 2);
ptr = ftcan_marshal_unsigned(ptr, max_volt, 2);
int16_t max_temp = -0x8000;
for (size_t i = 0; i < eeprom_config.num_one_wire; i++) {
if (ds18b20_temps[i] > max_temp) {
max_temp = ds18b20_temps[i];
}
}
ftcan_marshal_unsigned(ptr, max_temp, 2);
uint16_t id = CAN_ID_SLAVE_STATUS_BASE | eeprom_config.id;
ftcan_transmit(id, data, sizeof(data));
}
void ams_can_send_error(uint8_t kind, uint8_t data[4]) {
static uint8_t buf[6];
buf[0] = eeprom_config.id;
buf[1] = kind;
memcpy(&buf[2], data, 4);
ftcan_transmit(CAN_ID_SLAVE_PANIC, buf, sizeof(buf));
}
void ams_can_send_log() {
static uint8_t call_count = 0;
static uint8_t data[8] = {};
uint16_t can_addr =
CAN_ID_SLAVE_LOG_BASE | (eeprom_config.id << 4) | call_count;
uint8_t* ptr = &data[0];
const size_t VOLTAGES_END_IDX = ((N_CELLS / 4) + ((N_CELLS % 4) ? 1 : 0));
const size_t FAILED_TEMP_SENSORS_IDX = VOLTAGES_END_IDX + 1;
const size_t TEMP_SENSORS_END_IDX = FAILED_TEMP_SENSORS_IDX + (N_TEMP_SENSORS / 8) + ((N_TEMP_SENSORS % 8) ? 1 : 0);
const size_t DS18B20_SENSORS_END_IDX = TEMP_SENSORS_END_IDX + (MAX_N_DS18B20_SENSORS / 8) + ((MAX_N_DS18B20_SENSORS % 8) ? 1 : 0);
if (call_count < VOLTAGES_END_IDX) {
for (size_t i = 0; i < 4; i++) {
if (call_count * 4 + i >= N_CELLS) {
ptr = ftcan_marshal_unsigned(ptr, 0xDEAD, 2); //pad with 0xAB
continue;
}
size_t offset = call_count * 4;
ptr = ftcan_marshal_unsigned(ptr, module.cellVoltages[offset + i], 2);
}
ftcan_transmit(can_addr, data, sizeof(data));
} else if (call_count < FAILED_TEMP_SENSORS_IDX) {
ptr = ftcan_marshal_unsigned(ptr, tmp1075_failed_sensors, 4);
ftcan_transmit(can_addr, data, 4);
} else if (call_count < TEMP_SENSORS_END_IDX) {
size_t offset = (call_count - FAILED_TEMP_SENSORS_IDX) * 8;
for (size_t i = 0; i < 8; i++) {
if (offset + i >= N_TEMP_SENSORS) {
data[i] = 0xAB;
continue;
}
data[i] = tmp1075_temps[offset + i] >> 4;
}
ftcan_transmit(can_addr, data, sizeof(data));
} else {
size_t offset = (call_count - TEMP_SENSORS_END_IDX) * 8;
for (size_t i = 0; i < 8; i++) {
if (offset + i >= MAX_N_DS18B20_SENSORS) {
data[i] = 0xAB;
continue;
}
data[i] = ds18b20_temps[offset + i] >> 4;
}
ftcan_transmit(can_addr, data, sizeof(data));
}
call_count = (call_count + 1) % (DS18B20_SENSORS_END_IDX);
}
void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data) {
if (id == CAN_ID_SLAVE_CONFIG && datalen >= 2) {
uint8_t slave_id = data[0] & 0x0F;
if (slave_id != eeprom_config.id) {
return;
}
uint8_t num_one_wire = data[1];
if (num_one_wire > MAX_N_DS18B20_SENSORS) {
num_one_wire = MAX_N_DS18B20_SENSORS;
}
eeprom_config.num_one_wire = num_one_wire;
eeprom_config.debug_log = !!(data[0] & 0x80);
// Can't directly call eeprom_config_save() here because that calls
// HAL_Delay() which requires timer interrupts, but we're in an interrupt
// handler
eeprom_config_dirty = true;
}
}

View File

@ -8,10 +8,6 @@
#include "AMS_HighLevel.h" #include "AMS_HighLevel.h"
#include "ADBMS_Abstraction.h" #include "ADBMS_Abstraction.h"
#include "ADBMS_LL_Driver.h" #include "ADBMS_LL_Driver.h"
#include "AMS_CAN.h"
#include "DS18B20_HAL.h"
#include "TMP1075.h"
#include "can-halal.h"
#include "errors.h" #include "errors.h"
#include "stm32h7xx_hal.h" #include "stm32h7xx_hal.h"
#include <stdint.h> #include <stdint.h>
@ -120,7 +116,7 @@ uint8_t AMS_Idle_Loop() {
if (module.status.CS_FLT || module.status.SPIFLT || module.status.CMED || if (module.status.CS_FLT || module.status.SPIFLT || module.status.CMED ||
module.status.SMED || module.status.VDE || module.status.VDEL || module.status.SMED || module.status.VDE || module.status.VDEL ||
module.status.OSCCHK || module.status.TMODCHK) { module.status.OSCCHK || module.status.TMODCHK) {
ftcan_marshal_unsigned(&error_data[SEK_INTERNAL_BMS_FAULT].data[0], module.status.CS_FLT, 2); //ftcan_marshal_unsigned(&error_data[SEK_INTERNAL_BMS_FAULT].data[0], module.status.CS_FLT, 2);
const uint8_t* ptr = ((uint8_t*)&module.status) + 4; //skip conversion counter const uint8_t* ptr = ((uint8_t*)&module.status) + 4; //skip conversion counter
error_data[SEK_INTERNAL_BMS_FAULT].data[2] = ptr[1]; error_data[SEK_INTERNAL_BMS_FAULT].data[2] = ptr[1];
error_data[SEK_INTERNAL_BMS_FAULT].data[3] = ptr[0]; error_data[SEK_INTERNAL_BMS_FAULT].data[3] = ptr[0];
@ -139,9 +135,7 @@ uint8_t AMS_Idle_Loop() {
set_error_source(SEK_INTERNAL_BMS_CHECKSUM_FAIL); set_error_source(SEK_INTERNAL_BMS_CHECKSUM_FAIL);
} }
tmp1075_measure(); //TODO: temperature measurement
DEBUG_LOGLINE_DS18B20
ds18b20_update();
bool overvolt = false; bool overvolt = false;
bool undervolt = false; bool undervolt = false;
@ -150,17 +144,17 @@ uint8_t AMS_Idle_Loop() {
undervolt = true; undervolt = true;
error_data[SEK_UNDERVOLT].data[0] = i; error_data[SEK_UNDERVOLT].data[0] = i;
uint8_t* ptr = &error_data[SEK_UNDERVOLT].data[1]; uint8_t* ptr = &error_data[SEK_UNDERVOLT].data[1];
ftcan_marshal_unsigned(ptr, module.cellVoltages[i], 2); //ftcan_marshal_unsigned(ptr, module.cellVoltages[i], 2);
} else if (module.cellVoltages[i] > 4200) { } else if (module.cellVoltages[i] > 4200) {
overvolt = true; overvolt = true;
error_data[SEK_OVERVOLT].data[0] = i; error_data[SEK_OVERVOLT].data[0] = i;
uint8_t* ptr = &error_data[SEK_OVERVOLT].data[1]; uint8_t* ptr = &error_data[SEK_OVERVOLT].data[1];
ftcan_marshal_unsigned(ptr, module.cellVoltages[i], 2); //ftcan_marshal_unsigned(ptr, module.cellVoltages[i], 2);
} }
} }
if (module.internalDieTemp > 28000 || module.status.THSD) { //TODO: change to correct value if (module.internalDieTemp > 28000 || module.status.THSD) { //TODO: change to correct value
ftcan_marshal_unsigned(&error_data[SEK_INTERNAL_BMS_OVERTEMP].data[0], module.internalDieTemp, 2); //ftcan_marshal_unsigned(&error_data[SEK_INTERNAL_BMS_OVERTEMP].data[0], module.internalDieTemp, 2);
set_error_source(SEK_INTERNAL_BMS_OVERTEMP); set_error_source(SEK_INTERNAL_BMS_OVERTEMP);
} else { } else {

View File

@ -45,13 +45,13 @@ void slaves_init() {
slaves[i].max_temp = 0; slaves[i].max_temp = 0;
} }
HAL_GPIO_WritePin(SLAVE_POWER_0_GPIO_Port, SLAVE_POWER_0_Pin, GPIO_PIN_SET); //HAL_GPIO_WritePin(SLAVE_POWER_0_GPIO_Port, SLAVE_POWER_0_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SLAVE_POWER_1_GPIO_Port, SLAVE_POWER_1_Pin, GPIO_PIN_SET); //HAL_GPIO_WritePin(SLAVE_POWER_1_GPIO_Port, SLAVE_POWER_1_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(SLAVE_POWER_DSEL_GPIO_Port, SLAVE_POWER_DSEL_Pin, //HAL_GPIO_WritePin(SLAVE_POWER_DSEL_GPIO_Port, SLAVE_POWER_DSEL_Pin,
GPIO_PIN_RESET); // GPIO_PIN_RESET);
// TODO: Enable & read out current // TODO: Enable & read out current
HAL_GPIO_WritePin(SLAVE_POWER_DEN_GPIO_Port, SLAVE_POWER_DEN_Pin, //HAL_GPIO_WritePin(SLAVE_POWER_DEN_GPIO_Port, SLAVE_POWER_DEN_Pin,
GPIO_PIN_RESET); // GPIO_PIN_RESET);
} }
void slaves_check() { void slaves_check() {

View File

@ -0,0 +1,402 @@
#MicroXplorer Configuration settings - do not modify
ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_10
ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSignedSaturation-0\#ChannelRegularConversion,NbrOfConversionFlag,master
ADC1.NbrOfConversionFlag=1
ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
ADC1.OffsetSignedSaturation-0\#ChannelRegularConversion=DISABLE
ADC1.Rank-0\#ChannelRegularConversion=1
ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC1.master=1
ADC2.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_10
ADC2.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSignedSaturation-0\#ChannelRegularConversion,NbrOfConversionFlag,SingleDiff-0\#ChannelRegularConversion
ADC2.NbrOfConversionFlag=1
ADC2.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
ADC2.OffsetSignedSaturation-0\#ChannelRegularConversion=DISABLE
ADC2.Rank-0\#ChannelRegularConversion=1
ADC2.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC2.SingleDiff-0\#ChannelRegularConversion=ADC_DIFFERENTIAL_ENDED
CAD.formats=[]
CAD.pinconfig=Dual
CAD.provider=
FDCAN1.CalculateBaudRateNominal=533333
FDCAN1.CalculateTimeBitNominal=1875
FDCAN1.CalculateTimeQuantumNominal=46.875
FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,StdFiltersNbr,NominalPrescaler,NominalTimeSeg1,NominalTimeSeg2,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr
FDCAN1.NominalPrescaler=2
FDCAN1.NominalTimeSeg1=31
FDCAN1.NominalTimeSeg2=8
FDCAN1.RxFifo0ElmtsNbr=16
FDCAN1.StdFiltersNbr=32
FDCAN1.TxFifoQueueElmtsNbr=32
File.Version=6
GPIO.groupedBy=Group By Peripherals
KeepUserPlacement=false
Mcu.CPN=STM32H7A3RIT6
Mcu.Family=STM32H7
Mcu.IP0=ADC1
Mcu.IP1=ADC2
Mcu.IP10=TIM15
Mcu.IP2=CORTEX_M7
Mcu.IP3=DEBUG
Mcu.IP4=FDCAN1
Mcu.IP5=NVIC
Mcu.IP6=RCC
Mcu.IP7=SPI1
Mcu.IP8=SPI2
Mcu.IP9=SYS
Mcu.IPNb=11
Mcu.Name=STM32H7A3R(G-I)Tx
Mcu.Package=LQFP64
Mcu.Pin0=PH0-OSC_IN
Mcu.Pin1=PH1-OSC_OUT
Mcu.Pin10=PA4
Mcu.Pin11=PA5
Mcu.Pin12=PA6
Mcu.Pin13=PA7
Mcu.Pin14=PC4
Mcu.Pin15=PC5
Mcu.Pin16=PB0
Mcu.Pin17=PB1
Mcu.Pin18=PB2
Mcu.Pin19=PB10
Mcu.Pin2=PC0
Mcu.Pin20=PB12
Mcu.Pin21=PB13
Mcu.Pin22=PB14
Mcu.Pin23=PB15
Mcu.Pin24=PC6
Mcu.Pin25=PC7
Mcu.Pin26=PC9
Mcu.Pin27=PA8
Mcu.Pin28=PA9
Mcu.Pin29=PA10
Mcu.Pin3=PC1
Mcu.Pin30=PA11
Mcu.Pin31=PA12
Mcu.Pin32=PA13
Mcu.Pin33=PA14
Mcu.Pin34=PA15
Mcu.Pin35=PB3
Mcu.Pin36=PB4
Mcu.Pin37=PB5
Mcu.Pin38=PB6
Mcu.Pin39=PB7
Mcu.Pin4=PC2
Mcu.Pin40=PB8
Mcu.Pin41=PB9
Mcu.Pin42=VP_SYS_VS_Systick
Mcu.Pin5=PC3
Mcu.Pin6=PA0
Mcu.Pin7=PA1
Mcu.Pin8=PA2
Mcu.Pin9=PA3
Mcu.PinsNb=43
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32H7A3RITx
MxCube.Version=6.10.0
MxDb.Version=DB.6.0.100
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.FDCAN1_IT0_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA0.GPIOParameters=GPIO_Label
PA0.GPIO_Label=TS_ERROR
PA0.Locked=true
PA0.Signal=GPIO_Input
PA1.GPIOParameters=GPIO_Label
PA1.GPIO_Label=HV_ACTIVE
PA1.Locked=true
PA1.Signal=GPIO_Input
PA10.GPIOParameters=GPIO_Label
PA10.GPIO_Label=WAKE1
PA10.Locked=true
PA10.Signal=GPIO_Input
PA11.Locked=true
PA11.Mode=FDCAN_Activate
PA11.Signal=FDCAN1_RX
PA12.Locked=true
PA12.Mode=Full_Duplex_Master
PA12.Signal=SPI2_SCK
PA13.Locked=true
PA13.Mode=Trace_Asynchronous_SW
PA13.Signal=DEBUG_JTMS-SWDIO
PA14.Locked=true
PA14.Mode=Trace_Asynchronous_SW
PA14.Signal=DEBUG_JTCK-SWCLK
PA15.GPIOParameters=GPIO_Label
PA15.GPIO_Label=STATUS_LED_G
PA15.Locked=true
PA15.Signal=GPIO_Output
PA2.GPIOParameters=GPIO_Label
PA2.GPIO_Label=IMD_M
PA2.Locked=true
PA2.Signal=S_TIM15_CH1
PA3.GPIOParameters=GPIO_Label
PA3.GPIO_Label=IMD_OK
PA3.Locked=true
PA3.Signal=GPIO_Input
PA4.Locked=true
PA4.Mode=NSS_Signal_Hard_Output
PA4.Signal=SPI1_NSS
PA5.Locked=true
PA5.Mode=Full_Duplex_Master
PA5.Signal=SPI1_SCK
PA6.GPIOParameters=GPIO_Label
PA6.GPIO_Label=NEG_AIR_CLOSED
PA6.Locked=true
PA6.Signal=GPIO_Input
PA7.GPIOParameters=GPIO_Label
PA7.GPIO_Label=POS_AIR_CLOSED
PA7.Locked=true
PA7.Signal=GPIO_Input
PA8.GPIOParameters=GPIO_Label
PA8.GPIO_Label=PRECHARGE_CTRL
PA8.Locked=true
PA8.Signal=GPIO_Output
PA9.GPIOParameters=GPIO_Label
PA9.GPIO_Label=INTR1
PA9.Locked=true
PA9.Signal=GPIO_Input
PB0.GPIOParameters=GPIO_Label
PB0.GPIO_Label=PRECHARGE_CLOSED
PB0.Locked=true
PB0.Signal=GPIO_Input
PB1.GPIOParameters=GPIO_Label
PB1.GPIO_Label=SDC_VOLTAGE
PB1.Locked=true
PB1.Signal=GPIO_Input
PB10.GPIOParameters=GPIO_Label
PB10.GPIO_Label=IMD_ERROR_LED
PB10.Locked=true
PB10.Signal=GPIO_Input
PB12.Locked=true
PB12.Mode=NSS_Signal_Hard_Input
PB12.Signal=SPI2_NSS
PB13.GPIOParameters=GPIO_Label
PB13.GPIO_Label=AMS_ERROR_LED
PB13.Locked=true
PB13.Signal=GPIO_Input
PB14.Mode=Full_Duplex_Master
PB14.Signal=SPI2_MISO
PB15.GPIOParameters=GPIO_Label
PB15.GPIO_Label=STATUS_LED_R
PB15.Locked=true
PB15.Signal=GPIO_Output
PB2.GPIOParameters=GPIO_Label
PB2.GPIO_Label=IMD_POWER
PB2.Locked=true
PB2.Signal=GPIO_Output
PB3.Locked=true
PB3.Mode=Trace_Asynchronous_SW
PB3.Signal=DEBUG_JTDO-SWO
PB4.Locked=true
PB4.Mode=Full_Duplex_Master
PB4.Signal=SPI1_MISO
PB5.Locked=true
PB5.Mode=Full_Duplex_Master
PB5.Signal=SPI1_MOSI
PB6.GPIOParameters=GPIO_Label
PB6.GPIO_Label=INTR2
PB6.Locked=true
PB6.Signal=GPIO_Input
PB7.GPIOParameters=GPIO_Label
PB7.GPIO_Label=WAKE2
PB7.Locked=true
PB7.Signal=GPIO_Input
PB8.GPIOParameters=PinState,GPIO_PuPd,GPIO_Label
PB8.GPIO_Label=AMS_NERROR
PB8.GPIO_PuPd=GPIO_NOPULL
PB8.Locked=true
PB8.PinState=GPIO_PIN_SET
PB8.Signal=GPIO_Output
PB9.Locked=true
PB9.Mode=FDCAN_Activate
PB9.Signal=FDCAN1_TX
PC0.GPIOParameters=GPIO_Label
PC0.GPIO_Label=LV_Cmeasure
PC0.Locked=true
PC0.Signal=ADCx_INP10
PC1.GPIOParameters=GPIO_Label
PC1.GPIO_Label=TEMP_TSDCDC
PC1.Locked=true
PC1.Signal=SharedAnalog_PC1
PC2.GPIOParameters=GPIO_Label
PC2.GPIO_Label=STATUS_LED_B
PC2.Locked=true
PC2.Signal=GPIO_Output
PC3.Locked=true
PC3.Mode=Full_Duplex_Master
PC3.Signal=SPI2_MOSI
PC4.GPIOParameters=GPIO_Label
PC4.GPIO_Label=MSTR1
PC4.Locked=true
PC4.Signal=GPIO_Output
PC5.GPIOParameters=GPIO_Label
PC5.GPIO_Label=MSTR2
PC5.Locked=true
PC5.Signal=GPIO_Output
PC6.GPIOParameters=GPIO_Label
PC6.GPIO_Label=POS_AIR_CTRL
PC6.Locked=true
PC6.Signal=GPIO_Output
PC7.GPIOParameters=GPIO_Label
PC7.GPIO_Label=NEG_AIR_CTRL
PC7.Locked=true
PC7.Signal=GPIO_Output
PC9.GPIOParameters=GPIO_Label
PC9.GPIO_Label=TSAL_GREEN
PC9.Locked=true
PC9.Signal=GPIO_Input
PH0-OSC_IN.Locked=true
PH0-OSC_IN.Mode=HSE-External-Oscillator
PH0-OSC_IN.Signal=RCC_OSC_IN
PH1-OSC_OUT.Locked=true
PH1-OSC_OUT.Mode=HSE-External-Oscillator
PH1-OSC_OUT.Signal=RCC_OSC_OUT
PinOutPanel.RotationAngle=0
ProjectManager.AskForMigrate=true
ProjectManager.BackupPrevious=false
ProjectManager.CompilerOptimize=6
ProjectManager.ComputerToolchain=false
ProjectManager.CoupleFile=false
ProjectManager.CustomerFirmwarePackage=
ProjectManager.DefaultFWLocation=true
ProjectManager.DeletePrevious=true
ProjectManager.DeviceId=STM32H7A3RITx
ProjectManager.FirmwarePackage=STM32Cube FW_H7 V1.11.2
ProjectManager.FreePins=false
ProjectManager.HalAssertFull=false
ProjectManager.HeapSize=0x200
ProjectManager.KeepUserCode=true
ProjectManager.LastFirmware=true
ProjectManager.LibraryCopy=1
ProjectManager.MainLocation=Core/Src
ProjectManager.NoMain=false
ProjectManager.PreviousToolchain=
ProjectManager.ProjectBuild=false
ProjectManager.ProjectFileName=Master_FT25.ioc
ProjectManager.ProjectName=Master_FT25
ProjectManager.ProjectStructure=
ProjectManager.RegisterCallBack=
ProjectManager.StackSize=0x400
ProjectManager.TargetToolchain=Makefile
ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=false
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_FDCAN1_Init-FDCAN1-false-HAL-true,4-MX_TIM15_Init-TIM15-false-HAL-true,5-MX_SPI1_Init-SPI1-false-HAL-true,6-MX_SPI2_Init-SPI2-false-HAL-true,7-MX_ADC1_Init-ADC1-false-HAL-true,8-MX_ADC2_Init-ADC2-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
RCC.ADCFreq_Value=42666666.666666664
RCC.AHB12Freq_Value=64000000
RCC.AHB4Freq_Value=64000000
RCC.APB1Freq_Value=64000000
RCC.APB2Freq_Value=64000000
RCC.APB3Freq_Value=64000000
RCC.APB4Freq_Value=64000000
RCC.AXIClockFreq_Value=64000000
RCC.CDCPREFreq_Value=64000000
RCC.CECFreq_Value=32000
RCC.CKPERFreq_Value=64000000
RCC.CortexFreq_Value=64000000
RCC.CpuClockFreq_Value=64000000
RCC.DAC1Freq_Value=32000
RCC.DAC2Freq_Value=32000
RCC.DFSDM2ACLkFreq_Value=64000000
RCC.DFSDM2Freq_Value=64000000
RCC.DFSDMACLkFreq_Value=64000000
RCC.DFSDMFreq_Value=64000000
RCC.DIVM1=1
RCC.DIVM2=1
RCC.DIVN1=8
RCC.DIVN2=8
RCC.DIVP1Freq_Value=64000000
RCC.DIVP2=3
RCC.DIVP2Freq_Value=42666666.666666664
RCC.DIVP3Freq_Value=32250000
RCC.DIVQ1Freq_Value=64000000
RCC.DIVQ2=3
RCC.DIVQ2Freq_Value=42666666.666666664
RCC.DIVQ3Freq_Value=32250000
RCC.DIVR1Freq_Value=64000000
RCC.DIVR2Freq_Value=64000000
RCC.DIVR3Freq_Value=32250000
RCC.FDCANCLockSelection=RCC_FDCANCLKSOURCE_PLL2
RCC.FDCANFreq_Value=42666666.666666664
RCC.FMCFreq_Value=64000000
RCC.FamilyName=M
RCC.HCLK3ClockFreq_Value=64000000
RCC.HCLKFreq_Value=64000000
RCC.HSE_VALUE=16000000
RCC.I2C123CLockSelection=RCC_I2C123CLKSOURCE_CSI
RCC.I2C123Freq_Value=4000000
RCC.I2C4Freq_Value=64000000
RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CDCPREFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,DAC1Freq_Value,DAC2Freq_Value,DFSDM2ACLkFreq_Value,DFSDM2Freq_Value,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVN1,DIVN2,DIVP1Freq_Value,DIVP2,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3Freq_Value,FDCANCLockSelection,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HSE_VALUE,I2C123CLockSelection,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI2AFreq_Value,SAI2BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
RCC.LPTIM1Freq_Value=64000000
RCC.LPTIM2Freq_Value=64000000
RCC.LPTIM345Freq_Value=64000000
RCC.LPUART1Freq_Value=64000000
RCC.LTDCFreq_Value=32250000
RCC.MCO1PinFreq_Value=64000000
RCC.MCO2PinFreq_Value=64000000
RCC.PLL2FRACN=0
RCC.PLLFRACN=0
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
RCC.QSPIFreq_Value=64000000
RCC.RNGFreq_Value=48000000
RCC.RTCFreq_Value=32000
RCC.SAI1Freq_Value=64000000
RCC.SAI2AFreq_Value=64000000
RCC.SAI2BFreq_Value=64000000
RCC.SDMMCFreq_Value=64000000
RCC.SPDIFRXFreq_Value=64000000
RCC.SPI123Freq_Value=64000000
RCC.SPI45Freq_Value=64000000
RCC.SPI6Freq_Value=64000000
RCC.SWPMI1Freq_Value=64000000
RCC.SYSCLKFreq_VALUE=64000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.Tim1OutputFreq_Value=64000000
RCC.Tim2OutputFreq_Value=64000000
RCC.TraceFreq_Value=64000000
RCC.USART16Freq_Value=64000000
RCC.USART234578Freq_Value=64000000
RCC.USBFreq_Value=64000000
RCC.VCO1OutputFreq_Value=128000000
RCC.VCO2OutputFreq_Value=128000000
RCC.VCO3OutputFreq_Value=64500000
RCC.VCOInput1Freq_Value=16000000
RCC.VCOInput2Freq_Value=16000000
RCC.VCOInput3Freq_Value=500000
SH.ADCx_INP10.0=ADC1_INP10,IN10-Single-Ended
SH.ADCx_INP10.1=ADC2_INP10,IN10-Differential
SH.ADCx_INP10.ConfNb=2
SH.S_TIM15_CH1.0=TIM15_CH1,PWM_Input_1
SH.S_TIM15_CH1.ConfNb=1
SH.SharedAnalog_PC1.0=ADC2_INP11
SH.SharedAnalog_PC1.1=ADC2_INN10,IN10-Differential
SH.SharedAnalog_PC1.ConfNb=2
SPI1.CalculateBaudRate=21.333332 MBits/s
SPI1.Direction=SPI_DIRECTION_2LINES
SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,VirtualNSS
SPI1.Mode=SPI_MODE_MASTER
SPI1.VirtualNSS=VM_NSSHARD
SPI1.VirtualType=VM_MASTER
SPI2.CalculateBaudRate=21.333332 MBits/s
SPI2.Direction=SPI_DIRECTION_2LINES
SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,VirtualNSS
SPI2.Mode=SPI_MODE_MASTER
SPI2.VirtualNSS=VM_NSSHARD
SPI2.VirtualType=VM_MASTER
TIM15.IPParameters=Prescaler
TIM15.Prescaler=16000-1
VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
board=custom