Working version
This commit is contained in:
parent
b49ac54166
commit
7795a7cd7d
20
.mxproject
20
.mxproject
File diff suppressed because one or more lines are too long
@ -18,9 +18,12 @@
|
||||
#define TS_DISCHARGE 3
|
||||
#define TS_ERROR 4
|
||||
#define TS_ACTIVE 1
|
||||
#define TS_CHARGING_CHECK 5
|
||||
#define TS_CHARGING 6
|
||||
|
||||
#define ADC_READ_TIMEOUT 500 // in ms
|
||||
#define SDC_LOWER_THRESHOLD 2500 // in ADC Values
|
||||
#define ADC_READ_TIMEOUT 500 // in ms
|
||||
#define SDC_LOWER_THRESHOLD 2500 // in ADC Values
|
||||
#define PRECHARGE_95_DURATION 1000 // in ms
|
||||
// FIXME
|
||||
#define LOWER_VEHICLE_SIDE_VOLTAGE_LIMIT 150000 // in mV
|
||||
|
||||
@ -30,18 +33,12 @@ typedef struct {
|
||||
int32_t BatteryVoltageBatterySide;
|
||||
uint8_t targetTSState;
|
||||
uint8_t currentTSState;
|
||||
uint16_t AIRPrechargeCurrent; // ADC Value
|
||||
uint16_t AIRPositiveCurrent; // ADC Value
|
||||
uint16_t AIRNegativeCurrent; // ADC Value
|
||||
uint16_t RelaisSupplyVoltage;
|
||||
uint16_t ShutdownCircuitVoltage;
|
||||
uint32_t precharge95ReachedTimestamp;
|
||||
uint32_t chargingCheckTimestamp;
|
||||
|
||||
} AIRStateHandler;
|
||||
|
||||
AIRStateHandler init_AIR_State_Maschine(ADC_HandleTypeDef* relay_adc,
|
||||
ADC_HandleTypeDef* sc_adc,
|
||||
DMA_HandleTypeDef* relay_dma,
|
||||
DMA_HandleTypeDef* sc_dma);
|
||||
AIRStateHandler init_AIR_State_Maschine();
|
||||
|
||||
void Update_AIR_Info(AIRStateHandler* airstate);
|
||||
uint8_t Update_AIR_State(AIRStateHandler* airstate);
|
||||
@ -54,6 +51,4 @@ void AIR_Discharge_Position();
|
||||
void AIR_Active_Position();
|
||||
void AIR_Error_Position();
|
||||
|
||||
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc);
|
||||
|
||||
#endif /* INC_AIR_STATE_MASCHINE_H_ */
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include "stm32g4xx_hal.h"
|
||||
#include "stm32g4xx_hal_fdcan.h"
|
||||
|
||||
#define CANFRAMEBUFFERSIZE 256
|
||||
#define CANFRAMEBUFFERSIZE 512
|
||||
|
||||
// Frame ID = Base Address + Slave ID + MessageNr.
|
||||
#define SLAVE_STATUS_BASE_ADDRESS 0x600
|
||||
|
@ -14,7 +14,6 @@
|
||||
|
||||
#include "stm32g4xx_hal_crc.h"
|
||||
|
||||
|
||||
#define SET_SHUNTDATA 0x01
|
||||
#define SET_TSSTATE 0x02
|
||||
#define GET_TSSTATE 0x03
|
||||
|
@ -14,12 +14,11 @@
|
||||
|
||||
#include "stm32g441xx.h"
|
||||
|
||||
|
||||
#define NUMBEROFSLAVES 6
|
||||
#define NUMBEROFCELLS 10
|
||||
#define NUMBEROFTEMPS 32
|
||||
|
||||
#define SLAVETIMEOUT 2000
|
||||
#define SLAVETIMEOUT 500
|
||||
|
||||
typedef struct {
|
||||
|
||||
|
@ -67,42 +67,14 @@ void AMS_Error_Handler(AMSErrorHandle);
|
||||
#define BOOT0_FF_CLK_GPIO_Port GPIOC
|
||||
#define BOOT0_FF_DATA_Pin GPIO_PIN_15
|
||||
#define BOOT0_FF_DATA_GPIO_Port GPIOC
|
||||
#define Relay_Supply_Voltage_Pin GPIO_PIN_0
|
||||
#define Relay_Supply_Voltage_GPIO_Port GPIOA
|
||||
#define Pos_AIR_Current_Pin GPIO_PIN_1
|
||||
#define Pos_AIR_Current_GPIO_Port GPIOA
|
||||
#define Neg_AIR_Current_Pin GPIO_PIN_2
|
||||
#define Neg_AIR_Current_GPIO_Port GPIOA
|
||||
#define PreCharge_AIR_Current_Pin GPIO_PIN_3
|
||||
#define PreCharge_AIR_Current_GPIO_Port GPIOA
|
||||
#define SC_Supply_Voltage_Pin GPIO_PIN_4
|
||||
#define SC_Supply_Voltage_GPIO_Port GPIOA
|
||||
#define AMS_ERROR_Pin GPIO_PIN_0
|
||||
#define AMS_ERROR_GPIO_Port GPIOB
|
||||
#define IMD_Error_Pin GPIO_PIN_1
|
||||
#define IMD_Error_GPIO_Port GPIOB
|
||||
#define AMS_Error_LED_Pin GPIO_PIN_2
|
||||
#define AMS_Error_LED_GPIO_Port GPIOB
|
||||
#define Volt_Error_CPU_Pin GPIO_PIN_10
|
||||
#define Volt_Error_CPU_GPIO_Port GPIOB
|
||||
#define Positive_Side_Error_CPU_Pin GPIO_PIN_11
|
||||
#define Positive_Side_Error_CPU_GPIO_Port GPIOB
|
||||
#define Neg_Side_Error_CPU_Pin GPIO_PIN_12
|
||||
#define Neg_Side_Error_CPU_GPIO_Port GPIOB
|
||||
#define HV_Inactive_CPU_Pin GPIO_PIN_13
|
||||
#define HV_Inactive_CPU_GPIO_Port GPIOB
|
||||
#define Neg_AIR_Open_CPU_Pin GPIO_PIN_14
|
||||
#define Neg_AIR_Open_CPU_GPIO_Port GPIOB
|
||||
#define High_Side_Open_CPU_Pin GPIO_PIN_15
|
||||
#define High_Side_Open_CPU_GPIO_Port GPIOB
|
||||
#define Inter_STM_CS_Pin GPIO_PIN_8
|
||||
#define Inter_STM_CS_GPIO_Port GPIOA
|
||||
#define Inter_STM_IRQ_Pin GPIO_PIN_9
|
||||
#define Inter_STM_IRQ_GPIO_Port GPIOA
|
||||
#define Status_LED_Pin GPIO_PIN_10
|
||||
#define Status_LED_GPIO_Port GPIOA
|
||||
#define IMD_Error_LED_Pin GPIO_PIN_3
|
||||
#define IMD_Error_LED_GPIO_Port GPIOB
|
||||
#define PreCharge_Control_Pin GPIO_PIN_5
|
||||
#define PreCharge_Control_GPIO_Port GPIOB
|
||||
#define AIR_Positive_Control_Pin GPIO_PIN_6
|
||||
|
@ -36,7 +36,7 @@
|
||||
|
||||
#define HAL_MODULE_ENABLED
|
||||
|
||||
#define HAL_ADC_MODULE_ENABLED
|
||||
/*#define HAL_ADC_MODULE_ENABLED */
|
||||
/*#define HAL_COMP_MODULE_ENABLED */
|
||||
/*#define HAL_CORDIC_MODULE_ENABLED */
|
||||
#define HAL_CRC_MODULE_ENABLED
|
||||
|
@ -56,12 +56,9 @@ void SVC_Handler(void);
|
||||
void DebugMon_Handler(void);
|
||||
void PendSV_Handler(void);
|
||||
void SysTick_Handler(void);
|
||||
void DMA1_Channel2_IRQHandler(void);
|
||||
void ADC1_2_IRQHandler(void);
|
||||
void FDCAN1_IT0_IRQHandler(void);
|
||||
void FDCAN1_IT1_IRQHandler(void);
|
||||
void SPI1_IRQHandler(void);
|
||||
void DMA2_Channel1_IRQHandler(void);
|
||||
/* USER CODE BEGIN EFP */
|
||||
|
||||
/* USER CODE END EFP */
|
||||
|
@ -7,8 +7,7 @@
|
||||
|
||||
#include "AIR_State_Maschine.h"
|
||||
|
||||
ADC_HandleTypeDef* air_current_adc = {0};
|
||||
ADC_HandleTypeDef* sdc_voltage_adc = {0};
|
||||
#include "stm32g4xx_hal.h"
|
||||
|
||||
DMA_HandleTypeDef* air_current_dma = {0};
|
||||
DMA_HandleTypeDef* sdc_voltage_dma = {0};
|
||||
@ -16,25 +15,11 @@ DMA_HandleTypeDef* sdc_voltage_dma = {0};
|
||||
uint8_t air_adc_complete = 0;
|
||||
uint8_t sdc_adc_complete = 0;
|
||||
|
||||
AIRStateHandler init_AIR_State_Maschine(ADC_HandleTypeDef* relay_adc,
|
||||
ADC_HandleTypeDef* sc_adc,
|
||||
DMA_HandleTypeDef* relay_dma,
|
||||
DMA_HandleTypeDef* sc_dma) {
|
||||
air_current_adc = relay_adc;
|
||||
sdc_voltage_adc = sc_adc;
|
||||
|
||||
air_current_dma = relay_dma;
|
||||
sdc_voltage_dma = sc_dma;
|
||||
|
||||
AIRStateHandler init_AIR_State_Maschine() {
|
||||
AIRStateHandler airstate = {0};
|
||||
|
||||
airstate.targetTSState = TS_INACTIVE;
|
||||
airstate.currentTSState = TS_INACTIVE;
|
||||
airstate.ShutdownCircuitVoltage = 0;
|
||||
airstate.RelaisSupplyVoltage = 0;
|
||||
airstate.AIRNegativeCurrent = 0;
|
||||
airstate.AIRPositiveCurrent = 0;
|
||||
airstate.AIRPrechargeCurrent = 0;
|
||||
airstate.BatteryVoltageBatterySide = 0;
|
||||
airstate.BatteryVoltageVehicleSide = 0;
|
||||
|
||||
@ -65,16 +50,6 @@ void Update_AIR_Info(AIRStateHandler* airstate) {
|
||||
status = HAL_ADC_PollForConversion(air_current_adc, 10);
|
||||
uint32_t adcval5 = HAL_ADC_GetValue(air_current_adc);
|
||||
HAL_ADC_Stop(air_current_adc);*/
|
||||
|
||||
uint32_t startmils = HAL_GetTick() + ADC_READ_TIMEOUT;
|
||||
|
||||
{
|
||||
airstate->RelaisSupplyVoltage = 3000;
|
||||
airstate->AIRPositiveCurrent = 0;
|
||||
airstate->AIRNegativeCurrent = 0;
|
||||
airstate->AIRPrechargeCurrent = 0;
|
||||
airstate->ShutdownCircuitVoltage = 3000;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t Update_AIR_State(AIRStateHandler* airstate) {
|
||||
@ -91,25 +66,7 @@ uint8_t Update_AIR_State(AIRStateHandler* airstate) {
|
||||
|
||||
if (airstate->currentTSState == TS_ERROR) // No Escape from TS Error State
|
||||
{
|
||||
return TS_ERROR;
|
||||
}
|
||||
|
||||
else if ((airstate->currentTSState == TS_INACTIVE) &&
|
||||
(airstate->targetTSState ==
|
||||
TS_ACTIVE)) // Transition from Inactive to Active via Precharge
|
||||
{
|
||||
if ((airstate->RelaisSupplyVoltage) > SDC_LOWER_THRESHOLD) {
|
||||
airstate->currentTSState = TS_PRECHARGE;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Is it correct that we also go from precharge to discharge?
|
||||
else if ((airstate->currentTSState == TS_ACTIVE ||
|
||||
airstate->currentTSState == TS_PRECHARGE) &&
|
||||
(airstate->targetTSState ==
|
||||
TS_INACTIVE)) // Transition from Active to Inactive via Discharge
|
||||
{
|
||||
airstate->currentTSState = TS_DISCHARGE;
|
||||
// Don't change anything, but prevent any other if from being entered
|
||||
}
|
||||
|
||||
else if (airstate->targetTSState ==
|
||||
@ -118,6 +75,41 @@ uint8_t Update_AIR_State(AIRStateHandler* airstate) {
|
||||
airstate->currentTSState = TS_ERROR;
|
||||
}
|
||||
|
||||
else if ((airstate->currentTSState == TS_INACTIVE) &&
|
||||
(airstate->targetTSState ==
|
||||
TS_ACTIVE)) // Transition from Inactive to Active via Precharge
|
||||
{
|
||||
airstate->currentTSState = TS_PRECHARGE;
|
||||
airstate->precharge95ReachedTimestamp = 0;
|
||||
}
|
||||
|
||||
else if ((airstate->currentTSState == TS_INACTIVE) &&
|
||||
(airstate->targetTSState == TS_CHARGING)) {
|
||||
airstate->currentTSState = TS_CHARGING_CHECK;
|
||||
airstate->chargingCheckTimestamp = HAL_GetTick();
|
||||
}
|
||||
|
||||
// TODO: Is it correct that we also go from precharge to discharge?
|
||||
else if ((airstate->currentTSState == TS_ACTIVE ||
|
||||
airstate->currentTSState == TS_PRECHARGE ||
|
||||
airstate->currentTSState == TS_CHARGING_CHECK ||
|
||||
airstate->currentTSState == TS_CHARGING) &&
|
||||
(airstate->targetTSState ==
|
||||
TS_INACTIVE)) // Transition from Active to Inactive via Discharge
|
||||
{
|
||||
airstate->currentTSState = TS_DISCHARGE;
|
||||
}
|
||||
|
||||
else if ((airstate->targetTSState == TS_CHARGING) &&
|
||||
(airstate->currentTSState == TS_CHARGING_CHECK)) {
|
||||
if (airstate->BatteryVoltageVehicleSide >
|
||||
airstate->BatteryVoltageBatterySide) {
|
||||
airstate->currentTSState = TS_CHARGING;
|
||||
} else if (HAL_GetTick() > airstate->chargingCheckTimestamp + 2000) {
|
||||
airstate->currentTSState = TS_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
else if (airstate->currentTSState ==
|
||||
TS_PRECHARGE) // Change from Precharge to Active at 95% TS Voltage at
|
||||
// Vehicle Side
|
||||
@ -125,15 +117,20 @@ uint8_t Update_AIR_State(AIRStateHandler* airstate) {
|
||||
if ((airstate->BatteryVoltageVehicleSide >
|
||||
LOWER_VEHICLE_SIDE_VOLTAGE_LIMIT)) {
|
||||
if (airstate->BatteryVoltageVehicleSide >
|
||||
(airstate->BatteryVoltageBatterySide * 0.90)) {
|
||||
airstate->currentTSState = TS_ACTIVE;
|
||||
(airstate->BatteryVoltageBatterySide * 0.95)) {
|
||||
if (airstate->precharge95ReachedTimestamp == 0) {
|
||||
airstate->precharge95ReachedTimestamp = HAL_GetTick();
|
||||
} else if (HAL_GetTick() - airstate->precharge95ReachedTimestamp >=
|
||||
PRECHARGE_95_DURATION) {
|
||||
airstate->currentTSState = TS_ACTIVE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if (airstate->currentTSState ==
|
||||
TS_DISCHARGE) // Change from Discharge to Inactive at 95% TS Voltage
|
||||
// at Vehicle Side
|
||||
TS_DISCHARGE) // Change from Discharge to Inactive at 95% TS
|
||||
// Voltage at Vehicle Side
|
||||
{
|
||||
airstate->currentTSState = TS_INACTIVE;
|
||||
}
|
||||
@ -149,6 +146,14 @@ uint8_t Update_AIR_State(AIRStateHandler* airstate) {
|
||||
AIR_Discharge_Position();
|
||||
}
|
||||
|
||||
if (airstate->currentTSState == TS_CHARGING_CHECK) {
|
||||
AIR_Precharge_Position();
|
||||
}
|
||||
|
||||
if (airstate->currentTSState == TS_CHARGING) {
|
||||
AIR_Active_Position();
|
||||
}
|
||||
|
||||
if (airstate->currentTSState == TS_ACTIVE) {
|
||||
AIR_Active_Position();
|
||||
}
|
||||
@ -218,14 +223,3 @@ void AIR_Error_Position() {
|
||||
HAL_GPIO_WritePin(AIR_Positive_Control_GPIO_Port, AIR_Positive_Control_Pin,
|
||||
GPIO_PIN_RESET);
|
||||
}
|
||||
|
||||
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {
|
||||
if (hadc == air_current_adc) {
|
||||
air_adc_complete = 1;
|
||||
HAL_ADC_Stop_DMA(air_current_adc);
|
||||
}
|
||||
if (hadc == sdc_voltage_adc) {
|
||||
sdc_adc_complete = 1;
|
||||
HAL_ADC_Stop_DMA(sdc_voltage_adc);
|
||||
}
|
||||
}
|
||||
|
@ -11,12 +11,12 @@
|
||||
|
||||
#include "stm32g4xx_hal_fdcan.h"
|
||||
|
||||
|
||||
// 3 should be programmed with CAN id 2
|
||||
const uint16_t slave_CAN_id_to_slave_index[7] = {
|
||||
0, 1, 2, 3, 255, 5, 4}; // TODO: Make this pretty pls
|
||||
0, 1, 2, 3, 4, 5, 255}; // TODO: Make this pretty pls
|
||||
canFrame framebuffer[CANFRAMEBUFFERSIZE] = {0};
|
||||
uint8_t framebufferwritepointer;
|
||||
uint8_t framebufferreadpointer;
|
||||
uint32_t framebufferwritepointer;
|
||||
uint32_t framebufferreadpointer;
|
||||
|
||||
void CAN_Init(FDCAN_HandleTypeDef* hcan) {
|
||||
HAL_FDCAN_Stop(hcan);
|
||||
@ -27,8 +27,8 @@ void CAN_Init(FDCAN_HandleTypeDef* hcan) {
|
||||
FDCAN_FilterTypeDef fdfilter = {0};
|
||||
|
||||
fdfilter.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
|
||||
fdfilter.FilterID1 = 0x000; // Range start
|
||||
fdfilter.FilterID2 = 0x000; // Range stop
|
||||
fdfilter.FilterID1 = 0x000; // ID
|
||||
fdfilter.FilterID2 = 0x000; // Mask
|
||||
fdfilter.FilterIndex = 0;
|
||||
|
||||
fdfilter.FilterType = FDCAN_FILTER_MASK;
|
||||
@ -38,6 +38,10 @@ void CAN_Init(FDCAN_HandleTypeDef* hcan) {
|
||||
|
||||
HAL_StatusTypeDef status = HAL_FDCAN_Start(hcan);
|
||||
|
||||
if (status) {
|
||||
return;
|
||||
}
|
||||
|
||||
status =
|
||||
HAL_FDCAN_ActivateNotification(hcan, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0);
|
||||
}
|
||||
@ -59,23 +63,20 @@ uint8_t CAN_Receive(FDCAN_HandleTypeDef* hcan) {
|
||||
slaveID = slave_CAN_id_to_slave_index[slaveID];
|
||||
uint8_t messageID = msg & 0x00F;
|
||||
updateSlaveInfo(slaveID, messageID, rxFrame);
|
||||
} else if (rxFrame.FrameID == SLAVE_EMERGENCY_ADDRESS) {
|
||||
AMSErrorHandle errorframe = {0};
|
||||
errorframe.errorcode = SlavesErrorFrameError;
|
||||
errorframe.errorarg[0] = rxFrame.data[0];
|
||||
errorframe.errorarg[1] = rxFrame.data[1];
|
||||
errorframe.errorarg[2] = rxFrame.data[2];
|
||||
errorframe.errorarg[3] = rxFrame.data[3];
|
||||
errorframe.errorarg[4] = rxFrame.data[4];
|
||||
errorframe.errorarg[5] = rxFrame.data[5];
|
||||
errorframe.errorarg[6] = rxFrame.data[6];
|
||||
errorframe.errorarg[7] = rxFrame.data[7];
|
||||
|
||||
AMS_Error_Handler(errorframe);
|
||||
}
|
||||
|
||||
/* if(rxFrame.FrameID == SLAVE_EMERGENCY_ADDRESS)
|
||||
{
|
||||
AMSErrorHandle errorframe = {0};
|
||||
errorframe.errorcode = SlavesErrorFrameError;
|
||||
errorframe.errorarg[0] = rxFrame.data[0];
|
||||
errorframe.errorarg[1] = rxFrame.data[1];
|
||||
errorframe.errorarg[2] = rxFrame.data[2];
|
||||
errorframe.errorarg[3] = rxFrame.data[3];
|
||||
errorframe.errorarg[4] = rxFrame.data[4];
|
||||
errorframe.errorarg[5] = rxFrame.data[5];
|
||||
errorframe.errorarg[6] = rxFrame.data[6];
|
||||
errorframe.errorarg[7] = rxFrame.data[7];
|
||||
|
||||
AMS_Error_Handler(errorframe);
|
||||
}*/
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -9,24 +9,5 @@
|
||||
|
||||
ErrorFlags CheckErrorFlags() {
|
||||
ErrorFlags errors = {0};
|
||||
errors.IMD_ERROR = !HAL_GPIO_ReadPin(IMD_Error_GPIO_Port, IMD_Error_Pin);
|
||||
errors.IMD_ERROR_LED =
|
||||
HAL_GPIO_ReadPin(IMD_Error_LED_GPIO_Port, IMD_Error_LED_Pin);
|
||||
errors.AMS_ERROR_LED =
|
||||
HAL_GPIO_ReadPin(AMS_ERROR_GPIO_Port, AMS_Error_LED_Pin);
|
||||
|
||||
errors.TS_no_voltage_error =
|
||||
HAL_GPIO_ReadPin(Volt_Error_CPU_GPIO_Port, Volt_Error_CPU_Pin);
|
||||
errors.positive_AIR_or_PC_error = HAL_GPIO_ReadPin(
|
||||
Positive_Side_Error_CPU_GPIO_Port, Positive_Side_Error_CPU_Pin);
|
||||
errors.negative_AIR_error =
|
||||
HAL_GPIO_ReadPin(Neg_Side_Error_CPU_GPIO_Port, Neg_Side_Error_CPU_Pin);
|
||||
|
||||
errors.HV_inactive =
|
||||
HAL_GPIO_ReadPin(HV_Inactive_CPU_GPIO_Port, HV_Inactive_CPU_Pin);
|
||||
errors.negative_AIR_open =
|
||||
HAL_GPIO_ReadPin(Neg_AIR_Open_CPU_GPIO_Port, Neg_AIR_Open_CPU_Pin);
|
||||
errors.positive_AIR_and_PC_open =
|
||||
HAL_GPIO_ReadPin(High_Side_Open_CPU_GPIO_Port, High_Side_Open_CPU_Pin);
|
||||
return errors;
|
||||
}
|
||||
|
@ -15,7 +15,6 @@
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
#define SPI_BUFFER_SIZE 1024
|
||||
#define DUMMYBYTES 2
|
||||
|
||||
@ -313,26 +312,16 @@ void InterSTMFrame() {
|
||||
|
||||
spitxbuf[tsstatebaseaddress + 0] = spi_airstates->currentTSState;
|
||||
spitxbuf[tsstatebaseaddress + 1] = (uint8_t)(spi_airstates->targetTSState);
|
||||
spitxbuf[tsstatebaseaddress + 2] =
|
||||
(uint8_t)(spi_airstates->RelaisSupplyVoltage >> 8) & 0xFF;
|
||||
spitxbuf[tsstatebaseaddress + 3] =
|
||||
(uint8_t)(spi_airstates->RelaisSupplyVoltage & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 4] =
|
||||
(uint8_t)((spi_airstates->ShutdownCircuitVoltage >> 8) & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 5] =
|
||||
(uint8_t)(spi_airstates->ShutdownCircuitVoltage & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 6] =
|
||||
(uint8_t)((spi_airstates->AIRNegativeCurrent >> 8) & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 7] =
|
||||
(uint8_t)(spi_airstates->AIRNegativeCurrent & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 8] =
|
||||
(uint8_t)((spi_airstates->AIRPositiveCurrent >> 8) & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 9] =
|
||||
(uint8_t)((spi_airstates->AIRPositiveCurrent) & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 10] =
|
||||
(uint8_t)((spi_airstates->AIRPrechargeCurrent >> 8) & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 11] =
|
||||
(uint8_t)((spi_airstates->AIRPrechargeCurrent) & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 2] = (uint8_t)(0) & 0xFF;
|
||||
spitxbuf[tsstatebaseaddress + 3] = (uint8_t)(0);
|
||||
spitxbuf[tsstatebaseaddress + 4] = (uint8_t)((0) & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 5] = (uint8_t)(0);
|
||||
spitxbuf[tsstatebaseaddress + 6] = (uint8_t)((0) & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 7] = (uint8_t)(0);
|
||||
spitxbuf[tsstatebaseaddress + 8] = (uint8_t)((0) & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 9] = (uint8_t)((0) & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 10] = (uint8_t)((0) & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 11] = (uint8_t)((0) & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 12] =
|
||||
(uint8_t)((spi_airstates->BatteryVoltageBatterySide >> 24) & 0xFF);
|
||||
spitxbuf[tsstatebaseaddress + 13] =
|
||||
|
191
Core/Src/main.c
191
Core/Src/main.c
@ -46,11 +46,6 @@
|
||||
/* USER CODE END PM */
|
||||
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
ADC_HandleTypeDef hadc1;
|
||||
ADC_HandleTypeDef hadc2;
|
||||
DMA_HandleTypeDef hdma_adc1;
|
||||
DMA_HandleTypeDef hdma_adc2;
|
||||
|
||||
CRC_HandleTypeDef hcrc;
|
||||
|
||||
FDCAN_HandleTypeDef hfdcan1;
|
||||
@ -64,9 +59,6 @@ SPI_HandleTypeDef hspi1;
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
void SystemClock_Config(void);
|
||||
static void MX_GPIO_Init(void);
|
||||
static void MX_DMA_Init(void);
|
||||
static void MX_ADC1_Init(void);
|
||||
static void MX_ADC2_Init(void);
|
||||
static void MX_FDCAN1_Init(void);
|
||||
static void MX_SPI1_Init(void);
|
||||
static void MX_CRC_Init(void);
|
||||
@ -110,15 +102,12 @@ int main(void) {
|
||||
|
||||
/* Initialize all configured peripherals */
|
||||
MX_GPIO_Init();
|
||||
MX_DMA_Init();
|
||||
MX_ADC1_Init();
|
||||
MX_ADC2_Init();
|
||||
MX_FDCAN1_Init();
|
||||
MX_SPI1_Init();
|
||||
MX_CRC_Init();
|
||||
/* USER CODE BEGIN 2 */
|
||||
|
||||
airstates = init_AIR_State_Maschine(&hadc1, &hadc2, &hdma_adc1, &hdma_adc2);
|
||||
airstates = init_AIR_State_Maschine();
|
||||
initSlaves();
|
||||
set_SPI_errorInfo(&defaulterrorhandle);
|
||||
spi_communication_init(&hspi1, &airstates);
|
||||
@ -173,7 +162,7 @@ void SystemClock_Config(void) {
|
||||
RCC_OscInitStruct.PLL.PLLN = 8;
|
||||
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
|
||||
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV8;
|
||||
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
|
||||
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV8;
|
||||
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
|
||||
Error_Handler();
|
||||
}
|
||||
@ -187,153 +176,11 @@ void SystemClock_Config(void) {
|
||||
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
|
||||
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
|
||||
|
||||
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) {
|
||||
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) {
|
||||
Error_Handler();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ADC1 Initialization Function
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void MX_ADC1_Init(void) {
|
||||
|
||||
/* USER CODE BEGIN ADC1_Init 0 */
|
||||
|
||||
/* USER CODE END ADC1_Init 0 */
|
||||
|
||||
ADC_MultiModeTypeDef multimode = {0};
|
||||
ADC_ChannelConfTypeDef sConfig = {0};
|
||||
|
||||
/* USER CODE BEGIN ADC1_Init 1 */
|
||||
|
||||
/* USER CODE END ADC1_Init 1 */
|
||||
|
||||
/** Common config
|
||||
*/
|
||||
hadc1.Instance = ADC1;
|
||||
hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV64;
|
||||
hadc1.Init.Resolution = ADC_RESOLUTION_12B;
|
||||
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
|
||||
hadc1.Init.GainCompensation = 0;
|
||||
hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
|
||||
hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
|
||||
hadc1.Init.LowPowerAutoWait = DISABLE;
|
||||
hadc1.Init.ContinuousConvMode = DISABLE;
|
||||
hadc1.Init.NbrOfConversion = 4;
|
||||
hadc1.Init.DiscontinuousConvMode = DISABLE;
|
||||
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
|
||||
hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
|
||||
hadc1.Init.DMAContinuousRequests = DISABLE;
|
||||
hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;
|
||||
hadc1.Init.OversamplingMode = DISABLE;
|
||||
if (HAL_ADC_Init(&hadc1) != HAL_OK) {
|
||||
Error_Handler();
|
||||
}
|
||||
|
||||
/** Configure the ADC multi-mode
|
||||
*/
|
||||
multimode.Mode = ADC_MODE_INDEPENDENT;
|
||||
if (HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode) != HAL_OK) {
|
||||
Error_Handler();
|
||||
}
|
||||
|
||||
/** Configure Regular Channel
|
||||
*/
|
||||
sConfig.Channel = ADC_CHANNEL_1;
|
||||
sConfig.Rank = ADC_REGULAR_RANK_1;
|
||||
sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
|
||||
sConfig.SingleDiff = ADC_SINGLE_ENDED;
|
||||
sConfig.OffsetNumber = ADC_OFFSET_NONE;
|
||||
sConfig.Offset = 0;
|
||||
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) {
|
||||
Error_Handler();
|
||||
}
|
||||
|
||||
/** Configure Regular Channel
|
||||
*/
|
||||
sConfig.Channel = ADC_CHANNEL_2;
|
||||
sConfig.Rank = ADC_REGULAR_RANK_2;
|
||||
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) {
|
||||
Error_Handler();
|
||||
}
|
||||
|
||||
/** Configure Regular Channel
|
||||
*/
|
||||
sConfig.Channel = ADC_CHANNEL_3;
|
||||
sConfig.Rank = ADC_REGULAR_RANK_3;
|
||||
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) {
|
||||
Error_Handler();
|
||||
}
|
||||
|
||||
/** Configure Regular Channel
|
||||
*/
|
||||
sConfig.Channel = ADC_CHANNEL_4;
|
||||
sConfig.Rank = ADC_REGULAR_RANK_4;
|
||||
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) {
|
||||
Error_Handler();
|
||||
}
|
||||
/* USER CODE BEGIN ADC1_Init 2 */
|
||||
|
||||
/* USER CODE END ADC1_Init 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ADC2 Initialization Function
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void MX_ADC2_Init(void) {
|
||||
|
||||
/* USER CODE BEGIN ADC2_Init 0 */
|
||||
|
||||
/* USER CODE END ADC2_Init 0 */
|
||||
|
||||
ADC_ChannelConfTypeDef sConfig = {0};
|
||||
|
||||
/* USER CODE BEGIN ADC2_Init 1 */
|
||||
|
||||
/* USER CODE END ADC2_Init 1 */
|
||||
|
||||
/** Common config
|
||||
*/
|
||||
hadc2.Instance = ADC2;
|
||||
hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV64;
|
||||
hadc2.Init.Resolution = ADC_RESOLUTION_12B;
|
||||
hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
|
||||
hadc2.Init.GainCompensation = 0;
|
||||
hadc2.Init.ScanConvMode = ADC_SCAN_DISABLE;
|
||||
hadc2.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
|
||||
hadc2.Init.LowPowerAutoWait = DISABLE;
|
||||
hadc2.Init.ContinuousConvMode = DISABLE;
|
||||
hadc2.Init.NbrOfConversion = 1;
|
||||
hadc2.Init.DiscontinuousConvMode = DISABLE;
|
||||
hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START;
|
||||
hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
|
||||
hadc2.Init.DMAContinuousRequests = DISABLE;
|
||||
hadc2.Init.Overrun = ADC_OVR_DATA_PRESERVED;
|
||||
hadc2.Init.OversamplingMode = DISABLE;
|
||||
if (HAL_ADC_Init(&hadc2) != HAL_OK) {
|
||||
Error_Handler();
|
||||
}
|
||||
|
||||
/** Configure Regular Channel
|
||||
*/
|
||||
sConfig.Channel = ADC_CHANNEL_17;
|
||||
sConfig.Rank = ADC_REGULAR_RANK_1;
|
||||
sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
|
||||
sConfig.SingleDiff = ADC_SINGLE_ENDED;
|
||||
sConfig.OffsetNumber = ADC_OFFSET_NONE;
|
||||
sConfig.Offset = 0;
|
||||
if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) {
|
||||
Error_Handler();
|
||||
}
|
||||
/* USER CODE BEGIN ADC2_Init 2 */
|
||||
|
||||
/* USER CODE END ADC2_Init 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief CRC Initialization Function
|
||||
* @param None
|
||||
@ -438,25 +285,6 @@ static void MX_SPI1_Init(void) {
|
||||
/* USER CODE END SPI1_Init 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable DMA controller clock
|
||||
*/
|
||||
static void MX_DMA_Init(void) {
|
||||
|
||||
/* DMA controller clock enable */
|
||||
__HAL_RCC_DMAMUX1_CLK_ENABLE();
|
||||
__HAL_RCC_DMA1_CLK_ENABLE();
|
||||
__HAL_RCC_DMA2_CLK_ENABLE();
|
||||
|
||||
/* DMA interrupt init */
|
||||
/* DMA1_Channel2_IRQn interrupt configuration */
|
||||
HAL_NVIC_SetPriority(DMA1_Channel2_IRQn, 4, 0);
|
||||
HAL_NVIC_EnableIRQ(DMA1_Channel2_IRQn);
|
||||
/* DMA2_Channel1_IRQn interrupt configuration */
|
||||
HAL_NVIC_SetPriority(DMA2_Channel1_IRQn, 4, 0);
|
||||
HAL_NVIC_EnableIRQ(DMA2_Channel1_IRQn);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief GPIO Initialization Function
|
||||
* @param None
|
||||
@ -493,18 +321,11 @@ static void MX_GPIO_Init(void) {
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : AMS_ERROR_Pin IMD_Error_Pin AMS_Error_LED_Pin
|
||||
Volt_Error_CPU_Pin Positive_Side_Error_CPU_Pin Neg_Side_Error_CPU_Pin
|
||||
HV_Inactive_CPU_Pin Neg_AIR_Open_CPU_Pin High_Side_Open_CPU_Pin
|
||||
IMD_Error_LED_Pin */
|
||||
GPIO_InitStruct.Pin = AMS_ERROR_Pin | IMD_Error_Pin | AMS_Error_LED_Pin |
|
||||
Volt_Error_CPU_Pin | Positive_Side_Error_CPU_Pin |
|
||||
Neg_Side_Error_CPU_Pin | HV_Inactive_CPU_Pin |
|
||||
Neg_AIR_Open_CPU_Pin | High_Side_Open_CPU_Pin |
|
||||
IMD_Error_LED_Pin;
|
||||
/*Configure GPIO pin : AMS_ERROR_Pin */
|
||||
GPIO_InitStruct.Pin = AMS_ERROR_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||
HAL_GPIO_Init(AMS_ERROR_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pin : Inter_STM_CS_Pin */
|
||||
GPIO_InitStruct.Pin = Inter_STM_CS_Pin;
|
||||
|
@ -24,9 +24,6 @@
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
/* USER CODE END Includes */
|
||||
extern DMA_HandleTypeDef hdma_adc1;
|
||||
|
||||
extern DMA_HandleTypeDef hdma_adc2;
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN TD */
|
||||
@ -96,212 +93,6 @@ void HAL_MspInit(void)
|
||||
/* USER CODE END MspInit 1 */
|
||||
}
|
||||
|
||||
static uint32_t HAL_RCC_ADC12_CLK_ENABLED=0;
|
||||
|
||||
/**
|
||||
* @brief ADC MSP Initialization
|
||||
* This function configures the hardware resources used in this example
|
||||
* @param hadc: ADC handle pointer
|
||||
* @retval None
|
||||
*/
|
||||
void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||||
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
|
||||
if(hadc->Instance==ADC1)
|
||||
{
|
||||
/* USER CODE BEGIN ADC1_MspInit 0 */
|
||||
|
||||
/* USER CODE END ADC1_MspInit 0 */
|
||||
|
||||
/** Initializes the peripherals clocks
|
||||
*/
|
||||
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12;
|
||||
PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK;
|
||||
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
|
||||
/* Peripheral clock enable */
|
||||
HAL_RCC_ADC12_CLK_ENABLED++;
|
||||
if(HAL_RCC_ADC12_CLK_ENABLED==1){
|
||||
__HAL_RCC_ADC12_CLK_ENABLE();
|
||||
}
|
||||
|
||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||
/**ADC1 GPIO Configuration
|
||||
PA0 ------> ADC1_IN1
|
||||
PA1 ------> ADC1_IN2
|
||||
PA2 ------> ADC1_IN3
|
||||
PA3 ------> ADC1_IN4
|
||||
*/
|
||||
GPIO_InitStruct.Pin = Relay_Supply_Voltage_Pin|Pos_AIR_Current_Pin|Neg_AIR_Current_Pin|PreCharge_AIR_Current_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
|
||||
/* ADC1 DMA Init */
|
||||
/* ADC1 Init */
|
||||
hdma_adc1.Instance = DMA1_Channel2;
|
||||
hdma_adc1.Init.Request = DMA_REQUEST_ADC1;
|
||||
hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;
|
||||
hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;
|
||||
hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
|
||||
hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
|
||||
hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
|
||||
hdma_adc1.Init.Mode = DMA_NORMAL;
|
||||
hdma_adc1.Init.Priority = DMA_PRIORITY_LOW;
|
||||
if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
|
||||
__HAL_LINKDMA(hadc,DMA_Handle,hdma_adc1);
|
||||
|
||||
/* ADC1 interrupt Init */
|
||||
HAL_NVIC_SetPriority(ADC1_2_IRQn, 4, 0);
|
||||
HAL_NVIC_EnableIRQ(ADC1_2_IRQn);
|
||||
/* USER CODE BEGIN ADC1_MspInit 1 */
|
||||
|
||||
/* USER CODE END ADC1_MspInit 1 */
|
||||
}
|
||||
else if(hadc->Instance==ADC2)
|
||||
{
|
||||
/* USER CODE BEGIN ADC2_MspInit 0 */
|
||||
|
||||
/* USER CODE END ADC2_MspInit 0 */
|
||||
|
||||
/** Initializes the peripherals clocks
|
||||
*/
|
||||
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12;
|
||||
PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK;
|
||||
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
|
||||
/* Peripheral clock enable */
|
||||
HAL_RCC_ADC12_CLK_ENABLED++;
|
||||
if(HAL_RCC_ADC12_CLK_ENABLED==1){
|
||||
__HAL_RCC_ADC12_CLK_ENABLE();
|
||||
}
|
||||
|
||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||
/**ADC2 GPIO Configuration
|
||||
PA4 ------> ADC2_IN17
|
||||
*/
|
||||
GPIO_InitStruct.Pin = SC_Supply_Voltage_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
HAL_GPIO_Init(SC_Supply_Voltage_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
/* ADC2 DMA Init */
|
||||
/* ADC2 Init */
|
||||
hdma_adc2.Instance = DMA2_Channel1;
|
||||
hdma_adc2.Init.Request = DMA_REQUEST_ADC2;
|
||||
hdma_adc2.Init.Direction = DMA_PERIPH_TO_MEMORY;
|
||||
hdma_adc2.Init.PeriphInc = DMA_PINC_DISABLE;
|
||||
hdma_adc2.Init.MemInc = DMA_MINC_ENABLE;
|
||||
hdma_adc2.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
|
||||
hdma_adc2.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
|
||||
hdma_adc2.Init.Mode = DMA_NORMAL;
|
||||
hdma_adc2.Init.Priority = DMA_PRIORITY_LOW;
|
||||
if (HAL_DMA_Init(&hdma_adc2) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
|
||||
__HAL_LINKDMA(hadc,DMA_Handle,hdma_adc2);
|
||||
|
||||
/* ADC2 interrupt Init */
|
||||
HAL_NVIC_SetPriority(ADC1_2_IRQn, 4, 0);
|
||||
HAL_NVIC_EnableIRQ(ADC1_2_IRQn);
|
||||
/* USER CODE BEGIN ADC2_MspInit 1 */
|
||||
|
||||
/* USER CODE END ADC2_MspInit 1 */
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ADC MSP De-Initialization
|
||||
* This function freeze the hardware resources used in this example
|
||||
* @param hadc: ADC handle pointer
|
||||
* @retval None
|
||||
*/
|
||||
void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
|
||||
{
|
||||
if(hadc->Instance==ADC1)
|
||||
{
|
||||
/* USER CODE BEGIN ADC1_MspDeInit 0 */
|
||||
|
||||
/* USER CODE END ADC1_MspDeInit 0 */
|
||||
/* Peripheral clock disable */
|
||||
HAL_RCC_ADC12_CLK_ENABLED--;
|
||||
if(HAL_RCC_ADC12_CLK_ENABLED==0){
|
||||
__HAL_RCC_ADC12_CLK_DISABLE();
|
||||
}
|
||||
|
||||
/**ADC1 GPIO Configuration
|
||||
PA0 ------> ADC1_IN1
|
||||
PA1 ------> ADC1_IN2
|
||||
PA2 ------> ADC1_IN3
|
||||
PA3 ------> ADC1_IN4
|
||||
*/
|
||||
HAL_GPIO_DeInit(GPIOA, Relay_Supply_Voltage_Pin|Pos_AIR_Current_Pin|Neg_AIR_Current_Pin|PreCharge_AIR_Current_Pin);
|
||||
|
||||
/* ADC1 DMA DeInit */
|
||||
HAL_DMA_DeInit(hadc->DMA_Handle);
|
||||
|
||||
/* ADC1 interrupt DeInit */
|
||||
/* USER CODE BEGIN ADC1:ADC1_2_IRQn disable */
|
||||
/**
|
||||
* Uncomment the line below to disable the "ADC1_2_IRQn" interrupt
|
||||
* Be aware, disabling shared interrupt may affect other IPs
|
||||
*/
|
||||
/* HAL_NVIC_DisableIRQ(ADC1_2_IRQn); */
|
||||
/* USER CODE END ADC1:ADC1_2_IRQn disable */
|
||||
|
||||
/* USER CODE BEGIN ADC1_MspDeInit 1 */
|
||||
|
||||
/* USER CODE END ADC1_MspDeInit 1 */
|
||||
}
|
||||
else if(hadc->Instance==ADC2)
|
||||
{
|
||||
/* USER CODE BEGIN ADC2_MspDeInit 0 */
|
||||
|
||||
/* USER CODE END ADC2_MspDeInit 0 */
|
||||
/* Peripheral clock disable */
|
||||
HAL_RCC_ADC12_CLK_ENABLED--;
|
||||
if(HAL_RCC_ADC12_CLK_ENABLED==0){
|
||||
__HAL_RCC_ADC12_CLK_DISABLE();
|
||||
}
|
||||
|
||||
/**ADC2 GPIO Configuration
|
||||
PA4 ------> ADC2_IN17
|
||||
*/
|
||||
HAL_GPIO_DeInit(SC_Supply_Voltage_GPIO_Port, SC_Supply_Voltage_Pin);
|
||||
|
||||
/* ADC2 DMA DeInit */
|
||||
HAL_DMA_DeInit(hadc->DMA_Handle);
|
||||
|
||||
/* ADC2 interrupt DeInit */
|
||||
/* USER CODE BEGIN ADC2:ADC1_2_IRQn disable */
|
||||
/**
|
||||
* Uncomment the line below to disable the "ADC1_2_IRQn" interrupt
|
||||
* Be aware, disabling shared interrupt may affect other IPs
|
||||
*/
|
||||
/* HAL_NVIC_DisableIRQ(ADC1_2_IRQn); */
|
||||
/* USER CODE END ADC2:ADC1_2_IRQn disable */
|
||||
|
||||
/* USER CODE BEGIN ADC2_MspDeInit 1 */
|
||||
|
||||
/* USER CODE END ADC2_MspDeInit 1 */
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief CRC MSP Initialization
|
||||
* This function configures the hardware resources used in this example
|
||||
|
@ -57,10 +57,6 @@
|
||||
/* USER CODE END 0 */
|
||||
|
||||
/* External variables --------------------------------------------------------*/
|
||||
extern DMA_HandleTypeDef hdma_adc1;
|
||||
extern DMA_HandleTypeDef hdma_adc2;
|
||||
extern ADC_HandleTypeDef hadc1;
|
||||
extern ADC_HandleTypeDef hadc2;
|
||||
extern FDCAN_HandleTypeDef hfdcan1;
|
||||
extern SPI_HandleTypeDef hspi1;
|
||||
/* USER CODE BEGIN EV */
|
||||
@ -211,35 +207,6 @@ void SysTick_Handler(void)
|
||||
/* please refer to the startup file (startup_stm32g4xx.s). */
|
||||
/******************************************************************************/
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA1 channel2 global interrupt.
|
||||
*/
|
||||
void DMA1_Channel2_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA1_Channel2_IRQn 0 */
|
||||
|
||||
/* USER CODE END DMA1_Channel2_IRQn 0 */
|
||||
HAL_DMA_IRQHandler(&hdma_adc1);
|
||||
/* USER CODE BEGIN DMA1_Channel2_IRQn 1 */
|
||||
|
||||
/* USER CODE END DMA1_Channel2_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles ADC1 and ADC2 global interrupt.
|
||||
*/
|
||||
void ADC1_2_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN ADC1_2_IRQn 0 */
|
||||
|
||||
/* USER CODE END ADC1_2_IRQn 0 */
|
||||
HAL_ADC_IRQHandler(&hadc1);
|
||||
HAL_ADC_IRQHandler(&hadc2);
|
||||
/* USER CODE BEGIN ADC1_2_IRQn 1 */
|
||||
|
||||
/* USER CODE END ADC1_2_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles FDCAN1 interrupt 0.
|
||||
*/
|
||||
@ -282,20 +249,6 @@ void SPI1_IRQHandler(void)
|
||||
/* USER CODE END SPI1_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA2 channel1 global interrupt.
|
||||
*/
|
||||
void DMA2_Channel1_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA2_Channel1_IRQn 0 */
|
||||
|
||||
/* USER CODE END DMA2_Channel1_IRQn 0 */
|
||||
HAL_DMA_IRQHandler(&hdma_adc2);
|
||||
/* USER CODE BEGIN DMA2_Channel1_IRQn 1 */
|
||||
|
||||
/* USER CODE END DMA2_Channel1_IRQn 1 */
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 1 */
|
||||
|
||||
/* USER CODE END 1 */
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
5
Makefile
5
Makefile
@ -1,5 +1,5 @@
|
||||
##########################################################################################################################
|
||||
# File automatically-generated by tool: [projectgenerator] version: [3.16.0] date: [Thu Jun 30 03:25:47 CEST 2022]
|
||||
# File automatically-generated by tool: [projectgenerator] version: [3.17.1] date: [Tue Jul 12 23:51:59 CEST 2022]
|
||||
##########################################################################################################################
|
||||
|
||||
# ------------------------------------------------
|
||||
@ -39,9 +39,6 @@ C_SOURCES = \
|
||||
Core/Src/main.c \
|
||||
Core/Src/stm32g4xx_it.c \
|
||||
Core/Src/stm32g4xx_hal_msp.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_adc.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_adc_ex.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_ll_adc.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_rcc.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_rcc_ex.c \
|
||||
|
@ -1,74 +1,4 @@
|
||||
#MicroXplorer Configuration settings - do not modify
|
||||
ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_1
|
||||
ADC1.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_2
|
||||
ADC1.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_3
|
||||
ADC1.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_4
|
||||
ADC1.ClockPrescaler=ADC_CLOCK_ASYNC_DIV64
|
||||
ADC1.ContinuousConvMode=DISABLE
|
||||
ADC1.EOCSelection=ADC_EOC_SINGLE_CONV
|
||||
ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,NbrOfConversionFlag,master,ContinuousConvMode,EOCSelection,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,OffsetNumber-1\#ChannelRegularConversion,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,OffsetNumber-2\#ChannelRegularConversion,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,OffsetNumber-3\#ChannelRegularConversion,NbrOfConversion,ClockPrescaler
|
||||
ADC1.NbrOfConversion=4
|
||||
ADC1.NbrOfConversionFlag=1
|
||||
ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
|
||||
ADC1.OffsetNumber-1\#ChannelRegularConversion=ADC_OFFSET_NONE
|
||||
ADC1.OffsetNumber-2\#ChannelRegularConversion=ADC_OFFSET_NONE
|
||||
ADC1.OffsetNumber-3\#ChannelRegularConversion=ADC_OFFSET_NONE
|
||||
ADC1.Rank-0\#ChannelRegularConversion=1
|
||||
ADC1.Rank-1\#ChannelRegularConversion=2
|
||||
ADC1.Rank-2\#ChannelRegularConversion=3
|
||||
ADC1.Rank-3\#ChannelRegularConversion=4
|
||||
ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5
|
||||
ADC1.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5
|
||||
ADC1.SamplingTime-2\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5
|
||||
ADC1.SamplingTime-3\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5
|
||||
ADC1.master=1
|
||||
ADC2.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_17
|
||||
ADC2.ClockPrescaler=ADC_CLOCK_ASYNC_DIV64
|
||||
ADC2.ContinuousConvMode=DISABLE
|
||||
ADC2.EOCSelection=ADC_EOC_SINGLE_CONV
|
||||
ADC2.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,NbrOfConversionFlag,ContinuousConvMode,EOCSelection,NbrOfConversion,ClockPrescaler
|
||||
ADC2.NbrOfConversion=1
|
||||
ADC2.NbrOfConversionFlag=1
|
||||
ADC2.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
|
||||
ADC2.Rank-0\#ChannelRegularConversion=1
|
||||
ADC2.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5
|
||||
Dma.ADC1.0.Direction=DMA_PERIPH_TO_MEMORY
|
||||
Dma.ADC1.0.EventEnable=DISABLE
|
||||
Dma.ADC1.0.Instance=DMA1_Channel2
|
||||
Dma.ADC1.0.MemDataAlignment=DMA_MDATAALIGN_HALFWORD
|
||||
Dma.ADC1.0.MemInc=DMA_MINC_ENABLE
|
||||
Dma.ADC1.0.Mode=DMA_NORMAL
|
||||
Dma.ADC1.0.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD
|
||||
Dma.ADC1.0.PeriphInc=DMA_PINC_DISABLE
|
||||
Dma.ADC1.0.Polarity=HAL_DMAMUX_REQ_GEN_RISING
|
||||
Dma.ADC1.0.Priority=DMA_PRIORITY_LOW
|
||||
Dma.ADC1.0.RequestNumber=1
|
||||
Dma.ADC1.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
|
||||
Dma.ADC1.0.SignalID=NONE
|
||||
Dma.ADC1.0.SyncEnable=DISABLE
|
||||
Dma.ADC1.0.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
|
||||
Dma.ADC1.0.SyncRequestNumber=1
|
||||
Dma.ADC1.0.SyncSignalID=NONE
|
||||
Dma.ADC2.1.Direction=DMA_PERIPH_TO_MEMORY
|
||||
Dma.ADC2.1.EventEnable=DISABLE
|
||||
Dma.ADC2.1.Instance=DMA2_Channel1
|
||||
Dma.ADC2.1.MemDataAlignment=DMA_MDATAALIGN_HALFWORD
|
||||
Dma.ADC2.1.MemInc=DMA_MINC_ENABLE
|
||||
Dma.ADC2.1.Mode=DMA_NORMAL
|
||||
Dma.ADC2.1.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD
|
||||
Dma.ADC2.1.PeriphInc=DMA_PINC_DISABLE
|
||||
Dma.ADC2.1.Polarity=HAL_DMAMUX_REQ_GEN_RISING
|
||||
Dma.ADC2.1.Priority=DMA_PRIORITY_LOW
|
||||
Dma.ADC2.1.RequestNumber=1
|
||||
Dma.ADC2.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
|
||||
Dma.ADC2.1.SignalID=NONE
|
||||
Dma.ADC2.1.SyncEnable=DISABLE
|
||||
Dma.ADC2.1.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
|
||||
Dma.ADC2.1.SyncRequestNumber=1
|
||||
Dma.ADC2.1.SyncSignalID=NONE
|
||||
Dma.Request0=ADC1
|
||||
Dma.Request1=ADC2
|
||||
Dma.RequestsNb=2
|
||||
FDCAN1.DataPrescaler=2
|
||||
FDCAN1.DataSyncJumpWidth=4
|
||||
FDCAN1.DataTimeSeg1=13
|
||||
@ -82,85 +12,55 @@ GPIO.groupedBy=Group By Peripherals
|
||||
KeepUserPlacement=false
|
||||
Mcu.CPN=STM32G441CBT3
|
||||
Mcu.Family=STM32G4
|
||||
Mcu.IP0=ADC1
|
||||
Mcu.IP1=ADC2
|
||||
Mcu.IP2=CRC
|
||||
Mcu.IP3=DMA
|
||||
Mcu.IP4=FDCAN1
|
||||
Mcu.IP5=NVIC
|
||||
Mcu.IP6=RCC
|
||||
Mcu.IP7=SPI1
|
||||
Mcu.IP8=SYS
|
||||
Mcu.IPNb=9
|
||||
Mcu.IP0=CRC
|
||||
Mcu.IP1=FDCAN1
|
||||
Mcu.IP2=NVIC
|
||||
Mcu.IP3=RCC
|
||||
Mcu.IP4=SPI1
|
||||
Mcu.IP5=SYS
|
||||
Mcu.IPNb=6
|
||||
Mcu.Name=STM32G441CBTx
|
||||
Mcu.Package=LQFP48
|
||||
Mcu.Pin0=PC13
|
||||
Mcu.Pin1=PC14-OSC32_IN
|
||||
Mcu.Pin10=PA7
|
||||
Mcu.Pin11=PB0
|
||||
Mcu.Pin12=PB1
|
||||
Mcu.Pin13=PB2
|
||||
Mcu.Pin14=PB10
|
||||
Mcu.Pin15=PB11
|
||||
Mcu.Pin16=PB12
|
||||
Mcu.Pin17=PB13
|
||||
Mcu.Pin18=PB14
|
||||
Mcu.Pin19=PB15
|
||||
Mcu.Pin10=PA11
|
||||
Mcu.Pin11=PA12
|
||||
Mcu.Pin12=PA13
|
||||
Mcu.Pin13=PA14
|
||||
Mcu.Pin14=PB5
|
||||
Mcu.Pin15=PB6
|
||||
Mcu.Pin16=PB7
|
||||
Mcu.Pin17=VP_CRC_VS_CRC
|
||||
Mcu.Pin18=VP_SYS_VS_Systick
|
||||
Mcu.Pin19=VP_SYS_VS_DBSignals
|
||||
Mcu.Pin2=PC15-OSC32_OUT
|
||||
Mcu.Pin20=PA8
|
||||
Mcu.Pin21=PA9
|
||||
Mcu.Pin22=PA10
|
||||
Mcu.Pin23=PA11
|
||||
Mcu.Pin24=PA12
|
||||
Mcu.Pin25=PA13
|
||||
Mcu.Pin26=PA14
|
||||
Mcu.Pin27=PB3
|
||||
Mcu.Pin28=PB5
|
||||
Mcu.Pin29=PB6
|
||||
Mcu.Pin3=PA0
|
||||
Mcu.Pin30=PB7
|
||||
Mcu.Pin31=VP_CRC_VS_CRC
|
||||
Mcu.Pin32=VP_SYS_VS_Systick
|
||||
Mcu.Pin33=VP_SYS_VS_DBSignals
|
||||
Mcu.Pin4=PA1
|
||||
Mcu.Pin5=PA2
|
||||
Mcu.Pin6=PA3
|
||||
Mcu.Pin7=PA4
|
||||
Mcu.Pin8=PA5
|
||||
Mcu.Pin9=PA6
|
||||
Mcu.PinsNb=34
|
||||
Mcu.Pin3=PA5
|
||||
Mcu.Pin4=PA6
|
||||
Mcu.Pin5=PA7
|
||||
Mcu.Pin6=PB0
|
||||
Mcu.Pin7=PA8
|
||||
Mcu.Pin8=PA9
|
||||
Mcu.Pin9=PA10
|
||||
Mcu.PinsNb=20
|
||||
Mcu.ThirdPartyNb=0
|
||||
Mcu.UserConstants=
|
||||
Mcu.UserName=STM32G441CBTx
|
||||
MxCube.Version=6.5.0
|
||||
MxDb.Version=DB.6.0.50
|
||||
NVIC.ADC1_2_IRQn=true\:4\:0\:true\:false\:true\:true\:true\:true
|
||||
NVIC.BusFault_IRQn=true\:4\:0\:true\:false\:true\:false\:false\:true
|
||||
NVIC.DMA1_Channel2_IRQn=true\:4\:0\:true\:false\:true\:false\:true\:true
|
||||
NVIC.DMA2_Channel1_IRQn=true\:4\:0\:true\:false\:true\:false\:true\:true
|
||||
NVIC.DebugMonitor_IRQn=true\:4\:0\:true\:false\:true\:false\:false\:true
|
||||
NVIC.BusFault_IRQn=true\:4\:0\:true\:false\:true\:false\:false\:false
|
||||
NVIC.DebugMonitor_IRQn=true\:4\:0\:true\:false\:true\:false\:false\:false
|
||||
NVIC.FDCAN1_IT0_IRQn=true\:4\:0\:true\:false\:true\:true\:true\:true
|
||||
NVIC.FDCAN1_IT1_IRQn=true\:4\:0\:true\:false\:true\:true\:true\:true
|
||||
NVIC.ForceEnableDMAVector=true
|
||||
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
|
||||
NVIC.MemoryManagement_IRQn=true\:4\:0\:true\:false\:true\:false\:false\:true
|
||||
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
|
||||
NVIC.PendSV_IRQn=true\:4\:0\:true\:false\:true\:false\:false\:true
|
||||
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||
NVIC.MemoryManagement_IRQn=true\:4\:0\:true\:false\:true\:false\:false\:false
|
||||
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||
NVIC.PendSV_IRQn=true\:4\:0\:true\:false\:true\:false\:false\:false
|
||||
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
|
||||
NVIC.SPI1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
||||
NVIC.SVCall_IRQn=true\:4\:0\:true\:false\:true\:false\:false\:true
|
||||
NVIC.SysTick_IRQn=true\:4\:0\:true\:false\:true\:false\:true\:true
|
||||
NVIC.UsageFault_IRQn=true\:4\:0\:true\:false\:true\:false\:false\:true
|
||||
PA0.GPIOParameters=GPIO_Label
|
||||
PA0.GPIO_Label=Relay_Supply_Voltage
|
||||
PA0.Locked=true
|
||||
PA0.Mode=IN1-Single-Ended
|
||||
PA0.Signal=ADC1_IN1
|
||||
PA1.GPIOParameters=GPIO_Label
|
||||
PA1.GPIO_Label=Pos_AIR_Current
|
||||
PA1.Locked=true
|
||||
PA1.Mode=IN2-Single-Ended
|
||||
PA1.Signal=ADC1_IN2
|
||||
NVIC.SVCall_IRQn=true\:4\:0\:true\:false\:true\:false\:false\:false
|
||||
NVIC.SysTick_IRQn=true\:4\:0\:true\:false\:true\:false\:true\:false
|
||||
NVIC.UsageFault_IRQn=true\:4\:0\:true\:false\:true\:false\:false\:false
|
||||
PA10.GPIOParameters=GPIO_Label
|
||||
PA10.GPIO_Label=Status_LED
|
||||
PA10.Locked=true
|
||||
@ -176,21 +76,6 @@ PA13.Signal=SYS_JTMS-SWDIO
|
||||
PA14.Locked=true
|
||||
PA14.Mode=Serial_Wire
|
||||
PA14.Signal=SYS_JTCK-SWCLK
|
||||
PA2.GPIOParameters=GPIO_Label
|
||||
PA2.GPIO_Label=Neg_AIR_Current
|
||||
PA2.Locked=true
|
||||
PA2.Mode=IN3-Single-Ended
|
||||
PA2.Signal=ADC1_IN3
|
||||
PA3.GPIOParameters=GPIO_Label
|
||||
PA3.GPIO_Label=PreCharge_AIR_Current
|
||||
PA3.Locked=true
|
||||
PA3.Mode=IN4-Single-Ended
|
||||
PA3.Signal=ADC1_IN4
|
||||
PA4.GPIOParameters=GPIO_Label
|
||||
PA4.GPIO_Label=SC_Supply_Voltage
|
||||
PA4.Locked=true
|
||||
PA4.Mode=IN17-Single-Ended
|
||||
PA4.Signal=ADC2_IN17
|
||||
PA5.Mode=Full_Duplex_Slave
|
||||
PA5.Signal=SPI1_SCK
|
||||
PA6.Mode=Full_Duplex_Slave
|
||||
@ -209,42 +94,6 @@ PB0.GPIOParameters=GPIO_Label
|
||||
PB0.GPIO_Label=AMS_ERROR
|
||||
PB0.Locked=true
|
||||
PB0.Signal=GPIO_Input
|
||||
PB1.GPIOParameters=GPIO_Label
|
||||
PB1.GPIO_Label=IMD_Error
|
||||
PB1.Locked=true
|
||||
PB1.Signal=GPIO_Input
|
||||
PB10.GPIOParameters=GPIO_Label
|
||||
PB10.GPIO_Label=Volt_Error_CPU
|
||||
PB10.Locked=true
|
||||
PB10.Signal=GPIO_Input
|
||||
PB11.GPIOParameters=GPIO_Label
|
||||
PB11.GPIO_Label=Positive_Side_Error_CPU
|
||||
PB11.Locked=true
|
||||
PB11.Signal=GPIO_Input
|
||||
PB12.GPIOParameters=GPIO_Label
|
||||
PB12.GPIO_Label=Neg_Side_Error_CPU
|
||||
PB12.Locked=true
|
||||
PB12.Signal=GPIO_Input
|
||||
PB13.GPIOParameters=GPIO_Label
|
||||
PB13.GPIO_Label=HV_Inactive_CPU
|
||||
PB13.Locked=true
|
||||
PB13.Signal=GPIO_Input
|
||||
PB14.GPIOParameters=GPIO_Label
|
||||
PB14.GPIO_Label=Neg_AIR_Open_CPU
|
||||
PB14.Locked=true
|
||||
PB14.Signal=GPIO_Input
|
||||
PB15.GPIOParameters=GPIO_Label
|
||||
PB15.GPIO_Label=High_Side_Open_CPU
|
||||
PB15.Locked=true
|
||||
PB15.Signal=GPIO_Input
|
||||
PB2.GPIOParameters=GPIO_Label
|
||||
PB2.GPIO_Label=AMS_Error_LED
|
||||
PB2.Locked=true
|
||||
PB2.Signal=GPIO_Input
|
||||
PB3.GPIOParameters=GPIO_Label
|
||||
PB3.GPIO_Label=IMD_Error_LED
|
||||
PB3.Locked=true
|
||||
PB3.Signal=GPIO_Input
|
||||
PB5.GPIOParameters=GPIO_Label
|
||||
PB5.GPIO_Label=PreCharge_Control
|
||||
PB5.Locked=true
|
||||
@ -297,31 +146,31 @@ ProjectManager.StackSize=0x400
|
||||
ProjectManager.TargetToolchain=Makefile
|
||||
ProjectManager.ToolChainLocation=
|
||||
ProjectManager.UnderRoot=false
|
||||
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-false,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_ADC2_Init-ADC2-false-HAL-true,6-MX_FDCAN1_Init-FDCAN1-false-HAL-true,7-MX_SPI1_Init-SPI1-false-HAL-true
|
||||
RCC.ADC12Freq_Value=64000000
|
||||
RCC.AHBFreq_Value=64000000
|
||||
RCC.APB1Freq_Value=64000000
|
||||
RCC.APB1TimFreq_Value=64000000
|
||||
RCC.APB2Freq_Value=64000000
|
||||
RCC.APB2TimFreq_Value=64000000
|
||||
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-false,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_ADC2_Init-ADC2-false-HAL-true,6-MX_FDCAN1_Init-FDCAN1-false-HAL-true,7-MX_SPI1_Init-SPI1-false-HAL-true,8-MX_CRC_Init-CRC-false-HAL-true
|
||||
RCC.ADC12Freq_Value=16000000
|
||||
RCC.AHBFreq_Value=16000000
|
||||
RCC.APB1Freq_Value=16000000
|
||||
RCC.APB1TimFreq_Value=16000000
|
||||
RCC.APB2Freq_Value=16000000
|
||||
RCC.APB2TimFreq_Value=16000000
|
||||
RCC.CRSFreq_Value=48000000
|
||||
RCC.CortexFreq_Value=64000000
|
||||
RCC.CortexFreq_Value=16000000
|
||||
RCC.EXTERNAL_CLOCK_VALUE=12288000
|
||||
RCC.FCLKCortexFreq_Value=64000000
|
||||
RCC.FCLKCortexFreq_Value=16000000
|
||||
RCC.FDCANCLockSelection=RCC_FDCANCLKSOURCE_PLL
|
||||
RCC.FDCANFreq_Value=16000000
|
||||
RCC.FamilyName=M
|
||||
RCC.HCLKFreq_Value=64000000
|
||||
RCC.HCLKFreq_Value=16000000
|
||||
RCC.HSE_VALUE=8000000
|
||||
RCC.HSI48_VALUE=48000000
|
||||
RCC.HSI_VALUE=16000000
|
||||
RCC.I2C1Freq_Value=64000000
|
||||
RCC.I2C2Freq_Value=64000000
|
||||
RCC.I2C3Freq_Value=64000000
|
||||
RCC.I2SFreq_Value=64000000
|
||||
RCC.IPParameters=ADC12Freq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CRSFreq_Value,CortexFreq_Value,EXTERNAL_CLOCK_VALUE,FCLKCortexFreq_Value,FDCANCLockSelection,FDCANFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2SFreq_Value,LPTIM1Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQ,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value
|
||||
RCC.LPTIM1Freq_Value=64000000
|
||||
RCC.LPUART1Freq_Value=64000000
|
||||
RCC.I2C1Freq_Value=16000000
|
||||
RCC.I2C2Freq_Value=16000000
|
||||
RCC.I2C3Freq_Value=16000000
|
||||
RCC.I2SFreq_Value=16000000
|
||||
RCC.IPParameters=ADC12Freq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CRSFreq_Value,CortexFreq_Value,EXTERNAL_CLOCK_VALUE,FCLKCortexFreq_Value,FDCANCLockSelection,FDCANFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2SFreq_Value,LPTIM1Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,PLLPoutputFreq_Value,PLLQ,PLLQoutputFreq_Value,PLLR,PLLRCLKFreq_Value,PWRFreq_Value,RNGFreq_Value,SAI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value
|
||||
RCC.LPTIM1Freq_Value=16000000
|
||||
RCC.LPUART1Freq_Value=16000000
|
||||
RCC.LSCOPinFreq_Value=32000
|
||||
RCC.LSE_VALUE=32768
|
||||
RCC.LSI_VALUE=32000
|
||||
@ -329,16 +178,17 @@ RCC.MCO1PinFreq_Value=16000000
|
||||
RCC.PLLPoutputFreq_Value=64000000
|
||||
RCC.PLLQ=RCC_PLLQ_DIV8
|
||||
RCC.PLLQoutputFreq_Value=16000000
|
||||
RCC.PLLRCLKFreq_Value=64000000
|
||||
RCC.PWRFreq_Value=64000000
|
||||
RCC.PLLR=RCC_PLLR_DIV8
|
||||
RCC.PLLRCLKFreq_Value=16000000
|
||||
RCC.PWRFreq_Value=16000000
|
||||
RCC.RNGFreq_Value=16000000
|
||||
RCC.SAI1Freq_Value=64000000
|
||||
RCC.SYSCLKFreq_VALUE=64000000
|
||||
RCC.SAI1Freq_Value=16000000
|
||||
RCC.SYSCLKFreq_VALUE=16000000
|
||||
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
|
||||
RCC.UART4Freq_Value=64000000
|
||||
RCC.USART1Freq_Value=64000000
|
||||
RCC.USART2Freq_Value=64000000
|
||||
RCC.USART3Freq_Value=64000000
|
||||
RCC.USART1Freq_Value=16000000
|
||||
RCC.USART2Freq_Value=16000000
|
||||
RCC.USART3Freq_Value=16000000
|
||||
RCC.USBFreq_Value=16000000
|
||||
RCC.VCOInputFreq_Value=16000000
|
||||
RCC.VCOOutputFreq_Value=128000000
|
||||
|
@ -48,8 +48,6 @@ Core/Src/syscalls.c \
|
||||
Core/Src/sysmem.c \
|
||||
Core/Src/system_stm32g4xx.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_adc.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_adc_ex.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_cortex.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_crc.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_crc_ex.c \
|
||||
@ -68,8 +66,7 @@ Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_rcc_ex.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_spi.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_spi_ex.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_tim.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_tim_ex.c \
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_ll_adc.c
|
||||
Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_tim_ex.c
|
||||
|
||||
|
||||
CPP_SOURCES = \
|
||||
@ -157,7 +154,8 @@ CFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-
|
||||
CXXFLAGS = $(MCU) $(CXX_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections -feliminate-unused-debug-types
|
||||
|
||||
ifeq ($(DEBUG), 1)
|
||||
CFLAGS += -g -gdwarf-2
|
||||
CFLAGS += -g -gdwarf -ggdb
|
||||
CXXFLAGS += -g -gdwarf -ggdb
|
||||
endif
|
||||
|
||||
# Add additional flags
|
||||
@ -245,6 +243,12 @@ erase: $(BUILD_DIR)/$(TARGET).elf
|
||||
#######################################
|
||||
clean:
|
||||
-rm -fR $(BUILD_DIR)
|
||||
|
||||
#######################################
|
||||
# custom makefile rules
|
||||
#######################################
|
||||
|
||||
|
||||
|
||||
#######################################
|
||||
# dependencies
|
||||
|
40278
stm32g441xx.svd
Normal file
40278
stm32g441xx.svd
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user