From 1887a178c1f30507602cee629c8dcf832ec77aae Mon Sep 17 00:00:00 2001 From: Autobox Laptop Date: Wed, 31 Jul 2024 09:57:55 +0200 Subject: [PATCH] Kind of working current monitoring. Value scale looks right but unsure about channel assignment --- Core/Inc/CAN_Communication.h | 1 + Core/Inc/Current_Monitoring.h | 8 +- Core/Inc/main.h | 4 + Core/Inc/stm32f3xx_it.h | 2 + Core/Src/CAN_Communication.c | 19 ++-- Core/Src/Current_Monitoring.c | 164 +++++++++++++++------------- Core/Src/main.c | 55 ++++++---- Core/Src/stm32f3xx_hal_msp.c | 54 ++++++++-- Core/Src/stm32f3xx_it.c | 32 ++++++ PDU FT24 MCU.ioc | 198 +++++++++++++++++----------------- 10 files changed, 327 insertions(+), 210 deletions(-) diff --git a/Core/Inc/CAN_Communication.h b/Core/Inc/CAN_Communication.h index be85083..9e1344f 100644 --- a/Core/Inc/CAN_Communication.h +++ b/Core/Inc/CAN_Communication.h @@ -20,6 +20,7 @@ #define CUR_CHANNELS_2_ID 0xCB #define CUR_CHANNELS_3_ID 0xCC #define CUR_CHANNELS_4_ID 0xCD +#define LV_SENS_ID 0xCE typedef struct { PortExtenderGPIO iostatus; diff --git a/Core/Inc/Current_Monitoring.h b/Core/Inc/Current_Monitoring.h index aaad04b..7ebaeb8 100644 --- a/Core/Inc/Current_Monitoring.h +++ b/Core/Inc/Current_Monitoring.h @@ -10,8 +10,13 @@ #include "stm32f3xx_hal.h" +// Convert ADC quants to V +#define ADC_V_FACTOR (3.3f / 4096) +// Scale to LV by divider to mV +#define LV_SENSE_FACTOR (1e3 * (ADC_V_FACTOR * ((27.f+8.2f)/8.2f))) + // Convert ADC quants to I_S in mA -#define CURR_SENSE_IS_FACTOR ((3.3f / 4096) / 1.2f) // 3.3V / 12bit / 1.2kOhm +#define CURR_SENSE_IS_FACTOR (ADC_V_FACTOR / 1.2f) // 3.3V / 12bit / 1.2kOhm // Convert ADC quants to I_L in mA #define CURR_SENSE_FACTOR_5A (3700 * CURR_SENSE_IS_FACTOR) #define CURR_SENSE_FACTOR_7_5A (5450 * CURR_SENSE_IS_FACTOR) @@ -36,6 +41,7 @@ typedef struct { uint16_t ebsvalve_a; uint16_t ebsvalve_b; uint16_t cooling_pump; + uint16_t lv_v; } CurrentMeasurements; void currentMonitor_init(ADC_HandleTypeDef* hadc1, ADC_HandleTypeDef* hadc2, diff --git a/Core/Inc/main.h b/Core/Inc/main.h index 3c0360c..13f25c2 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -75,6 +75,8 @@ void Error_Handler(void); #define isense3_GPIO_Port GPIOA #define isense7_Pin GPIO_PIN_3 #define isense7_GPIO_Port GPIOA +#define isense9_Pin GPIO_PIN_4 +#define isense9_GPIO_Port GPIOF #define isense2_Pin GPIO_PIN_4 #define isense2_GPIO_Port GPIOA #define isense1_Pin GPIO_PIN_5 @@ -83,6 +85,8 @@ void Error_Handler(void); #define isense10_GPIO_Port GPIOA #define isense4_Pin GPIO_PIN_7 #define isense4_GPIO_Port GPIOA +#define LV_sens_Pin GPIO_PIN_4 +#define LV_sens_GPIO_Port GPIOC #define GSS_GPIO_Pin GPIO_PIN_0 #define GSS_GPIO_GPIO_Port GPIOB #define DSEL_3_Pin GPIO_PIN_12 diff --git a/Core/Inc/stm32f3xx_it.h b/Core/Inc/stm32f3xx_it.h index c96778f..eb69cde 100644 --- a/Core/Inc/stm32f3xx_it.h +++ b/Core/Inc/stm32f3xx_it.h @@ -56,9 +56,11 @@ void DebugMon_Handler(void); void PendSV_Handler(void); void SysTick_Handler(void); void DMA1_Channel1_IRQHandler(void); +void ADC1_2_IRQHandler(void); void USB_LP_CAN_RX0_IRQHandler(void); void CAN_RX1_IRQHandler(void); void CAN_SCE_IRQHandler(void); +void TIM6_DAC_IRQHandler(void); void DMA2_Channel1_IRQHandler(void); /* USER CODE BEGIN EFP */ diff --git a/Core/Src/CAN_Communication.c b/Core/Src/CAN_Communication.c index f5335a5..cb37feb 100644 --- a/Core/Src/CAN_Communication.c +++ b/Core/Src/CAN_Communication.c @@ -36,9 +36,8 @@ void can_sendloop() { ftcan_transmit(TX_STATUS_MSG_ID, status_data, 7); uint8_t data[8]; -return; - if (additionaltxcouter < 4) { - switch (additionaltxcouter) { + + switch (additionaltxcouter) { case 0: data[0] = current_measurements_adc_val.always_on >> 8; @@ -91,13 +90,19 @@ return; ftcan_transmit(CUR_CHANNELS_4_ID, data, 8); break; + + case 4: + + data[0] = current_measurements_adc_val.lv_v >> 8; + data[1] = current_measurements_adc_val.lv_v && 0xFF; + ftcan_transmit(LV_SENS_ID, data, 2); + default: break; - } - additionaltxcouter++; - } else { - additionaltxcouter = 0; } + + additionaltxcouter = (additionaltxcouter+1) % 5; + } void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t* data) { diff --git a/Core/Src/Current_Monitoring.c b/Core/Src/Current_Monitoring.c index 994e894..de83e45 100644 --- a/Core/Src/Current_Monitoring.c +++ b/Core/Src/Current_Monitoring.c @@ -10,29 +10,30 @@ volatile union adc1_channels { struct { - uint16_t isense12; // acu - uint16_t isense11; // epsc - uint16_t isense6; // radiator fans - uint16_t isense13; // tsac fans - uint16_t isense5; // gss and lidar - uint16_t isense3; // sdc and always on - uint16_t isense7; // misc and inverters + uint16_t isense5; // LiDAR | GSS (DSEL7) + uint16_t isense3; // AlwaysOn | SDC (DSEL4) + uint16_t isense7; // Misc | Inverters (DSEL5) + uint16_t isense9; // DRS + uint16_t isense12; // ACU + uint16_t isense11; // EPSC = ELIAS + uint16_t isense6; // Radiator Fans + uint16_t isense13; // TSAC Fans } adcbank1; - uint16_t adcbuffer[7]; // array 7*16 bit + uint16_t adcbuffer[8]; // array 8*16 bit } adc_channels1; // ADC's anpassen adc1 - 9, adc2 ist halt 5 , buffer anpassen und namen auch ( isense usw) volatile union adc2_channels { struct { - uint16_t isense2; // ebs valve a and ebs valve b - uint16_t isense1; // ebs cs valve - uint16_t isense10; // hyr aggregat - uint16_t isense4; // cooling pump and reserved - + uint16_t isense2; // EBS A | EBS B (DSEL3) + uint16_t isense1; // EBS CS + uint16_t isense10; // Hydraulic Aggregate + uint16_t isense4; // Water Pump | Reserved (DSEL8) + uint16_t lv_sens; // LV voltage } adcbank1; - uint16_t adcbuffer[4]; + uint16_t adcbuffer[5]; } adc_channels2; @@ -46,82 +47,97 @@ ADC_HandleTypeDef* adc2; void currentMonitor_init(ADC_HandleTypeDef* hadc1, ADC_HandleTypeDef* hadc2, // init ist initilisierung TIM_HandleTypeDef* trigtim) { - HAL_GPIO_WritePin(DSEL_3_GPIO_Port, DSEL_3_Pin, adcbank2); //DSELs zu adc's neu zuordnen - HAL_GPIO_WritePin(DSEL_4_GPIO_Port, DSEL_4_Pin, adcbank2); + HAL_GPIO_WritePin(DSEL_3_GPIO_Port, DSEL_3_Pin, adcbank2); + HAL_GPIO_WritePin(DSEL_4_GPIO_Port, DSEL_4_Pin, adcbank1); HAL_GPIO_WritePin(DSEL_5_GPIO_Port, DSEL_5_Pin, adcbank1); HAL_GPIO_WritePin(DSEL_7_GPIO_Port, DSEL_7_Pin, adcbank1); HAL_GPIO_WritePin(DSEL_8_GPIO_Port, DSEL_8_Pin, adcbank2); adc1 = hadc1; adc2 = hadc2; HAL_TIM_Base_Start(trigtim); - HAL_ADC_Start_DMA(hadc1, (uint32_t*)adc_channels1.adcbuffer, 7); - HAL_ADC_Start_DMA(hadc2, (uint32_t*)adc_channels2.adcbuffer, 7); // wie adc mit dma geht , red mit jasper + HAL_ADC_Start_DMA(hadc1, (uint32_t*)adc_channels1.adcbuffer, 8); + HAL_ADC_Start_DMA(hadc2, (uint32_t*)adc_channels2.adcbuffer, 5); // wie adc mit dma geht , red mit jasper } uint8_t currentMonitor_checklimits() { return 0; } void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { + + if (hadc == adc1) { + + if (adcbank1 == GPIO_PIN_RESET) { + + current_measurements_adc_val.lidar = + adc_channels1.adcbank1.isense5 * CURR_SENSE_FACTOR_7_5A; + current_measurements_adc_val.always_on = + adc_channels1.adcbank1.isense3 * CURR_SENSE_FACTOR_5A; + current_measurements_adc_val.misc = + adc_channels1.adcbank1.isense7 * CURR_SENSE_FACTOR_7_5A; + + adcbank1 = GPIO_PIN_SET; + + } else { + + current_measurements_adc_val.gss = + adc_channels1.adcbank1.isense5 * CURR_SENSE_FACTOR_7_5A; + current_measurements_adc_val.sdc = + adc_channels1.adcbank1.isense3 * CURR_SENSE_FACTOR_5A; + current_measurements_adc_val.inverters = + adc_channels1.adcbank1.isense7 * CURR_SENSE_FACTOR_7_5A; + + adcbank1 = GPIO_PIN_RESET; + + } + + current_measurements_adc_val.servos = + adc_channels1.adcbank1.isense9 * CURR_SENSE_FACTOR_21A; + current_measurements_adc_val.acu = + adc_channels1.adcbank1.isense12 * CURR_SENSE_FACTOR_31A; + current_measurements_adc_val.epsc = + adc_channels1.adcbank1.isense11 * CURR_SENSE_FACTOR_21A; + current_measurements_adc_val.radiator_fans = + adc_channels1.adcbank1.isense6 * CURR_SENSE_FACTOR_21A; + current_measurements_adc_val.tsac_fans = + adc_channels1.adcbank1.isense13 * CURR_SENSE_FACTOR_31A; + + HAL_GPIO_WritePin(DSEL_4_GPIO_Port, DSEL_4_Pin, adcbank1); + HAL_GPIO_WritePin(DSEL_5_GPIO_Port, DSEL_5_Pin, adcbank1); + HAL_GPIO_WritePin(DSEL_7_GPIO_Port, DSEL_7_Pin, adcbank1); + + } + else if (hadc == adc2) { + if (adcbank2 == GPIO_PIN_RESET) { - current_measurements_adc_val.ebsvalve_a = + + current_measurements_adc_val.ebsvalve_a = adc_channels2.adcbank1.isense2 * CURR_SENSE_FACTOR_5A; current_measurements_adc_val.cooling_pump = adc_channels2.adcbank1.isense4 * CURR_SENSE_FACTOR_7_5A; - adcbank2 = GPIO_PIN_SET; - } else { - current_measurements_adc_val.ebsvalve_b = - adc_channels2.adcbank1.isense2 * CURR_SENSE_FACTOR_5A; - current_measurements_adc_val.reserved = - adc_channels2.adcbank1.isense4 * CURR_SENSE_FACTOR_7_5A; - adcbank2 = GPIO_PIN_RESET; - } - current_measurements_adc_val.ebs_cs_valve = - adc_channels2.adcbank1.isense1 * CURR_SENSE_FACTOR_5A; - current_measurements_adc_val.aggregat = - adc_channels2.adcbank1.isense10 * CURR_SENSE_FACTOR_21A; - HAL_GPIO_WritePin(DSEL_3_GPIO_Port, DSEL_3_Pin, - adcbank2); - HAL_GPIO_WritePin(DSEL_8_GPIO_Port, DSEL_8_Pin, - adcbank2); + adcbank2 = GPIO_PIN_SET; + + } else { + + current_measurements_adc_val.ebsvalve_b = + adc_channels2.adcbank1.isense2 * CURR_SENSE_FACTOR_5A; + current_measurements_adc_val.reserved = + adc_channels2.adcbank1.isense4 * CURR_SENSE_FACTOR_7_5A; + + adcbank2 = GPIO_PIN_RESET; + + } + + current_measurements_adc_val.ebs_cs_valve = + adc_channels2.adcbank1.isense1 * CURR_SENSE_FACTOR_5A; + current_measurements_adc_val.aggregat = + adc_channels2.adcbank1.isense10 * CURR_SENSE_FACTOR_21A; + current_measurements_adc_val.lv_v = + adc_channels2.adcbank1.lv_sens * LV_SENSE_FACTOR; + + HAL_GPIO_WritePin(DSEL_3_GPIO_Port, DSEL_3_Pin, adcbank2); + HAL_GPIO_WritePin(DSEL_8_GPIO_Port, DSEL_8_Pin, adcbank2); + } - if (hadc == adc1) { - if (adcbank1 == GPIO_PIN_RESET) { - current_measurements_adc_val.sdc= - adc_channels1.adcbank1.isense3 * CURR_SENSE_FACTOR_5A; - current_measurements_adc_val.misc= - adc_channels1.adcbank1.isense7 * CURR_SENSE_FACTOR_7_5A; - current_measurements_adc_val.gss= - adc_channels1.adcbank1.isense5 * CURR_SENSE_FACTOR_7_5A; - - adcbank1 = GPIO_PIN_SET; - } else { - current_measurements_adc_val.always_on = - adc_channels1.adcbank1.isense3 * CURR_SENSE_FACTOR_5A; - current_measurements_adc_val.inverters = - adc_channels1.adcbank1.isense7 * CURR_SENSE_FACTOR_7_5A; - current_measurements_adc_val.lidar= - adc_channels1.adcbank1.isense5 * CURR_SENSE_FACTOR_7_5A; - adcbank1 = GPIO_PIN_RESET; - } - current_measurements_adc_val.acu= - adc_channels1.adcbank1.isense12 * CURR_SENSE_FACTOR_31A; - current_measurements_adc_val.epsc = - adc_channels1.adcbank1.isense11 * CURR_SENSE_FACTOR_21A; - current_measurements_adc_val.tsac_fans = - adc_channels1.adcbank1.isense13 * CURR_SENSE_FACTOR_31A; - current_measurements_adc_val.radiator_fans= - adc_channels1.adcbank1.isense6 * CURR_SENSE_FACTOR_21A; - - HAL_GPIO_WritePin(DSEL_4_GPIO_Port, DSEL_4_Pin, - adcbank1); - HAL_GPIO_WritePin(DSEL_5_GPIO_Port, DSEL_5_Pin, - adcbank1); - HAL_GPIO_WritePin(DSEL_7_GPIO_Port, DSEL_7_Pin, - adcbank1); - } -} - - - // current monitoring c und h anpassen \ No newline at end of file +} \ No newline at end of file diff --git a/Core/Src/main.c b/Core/Src/main.c index 0484bce..8da0b2f 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -279,7 +279,7 @@ static void MX_ADC1_Init(void) hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING; hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T6_TRGO; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 7; + hadc1.Init.NbrOfConversion = 8; hadc1.Init.DMAContinuousRequests = ENABLE; hadc1.Init.EOCSelection = ADC_EOC_SEQ_CONV; hadc1.Init.LowPowerAutoWait = DISABLE; @@ -299,10 +299,10 @@ static void MX_ADC1_Init(void) /** Configure Regular Channel */ - sConfig.Channel = ADC_CHANNEL_1; + sConfig.Channel = ADC_CHANNEL_2; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SingleDiff = ADC_SINGLE_ENDED; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; + sConfig.SamplingTime = ADC_SAMPLETIME_61CYCLES_5; sConfig.OffsetNumber = ADC_OFFSET_NONE; sConfig.Offset = 0; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) @@ -312,6 +312,7 @@ static void MX_ADC1_Init(void) /** Configure Regular Channel */ + sConfig.Channel = ADC_CHANNEL_3; sConfig.Rank = ADC_REGULAR_RANK_2; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { @@ -320,6 +321,7 @@ static void MX_ADC1_Init(void) /** Configure Regular Channel */ + sConfig.Channel = ADC_CHANNEL_4; sConfig.Rank = ADC_REGULAR_RANK_3; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { @@ -328,6 +330,7 @@ static void MX_ADC1_Init(void) /** Configure Regular Channel */ + sConfig.Channel = ADC_CHANNEL_5; sConfig.Rank = ADC_REGULAR_RANK_4; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { @@ -336,6 +339,7 @@ static void MX_ADC1_Init(void) /** Configure Regular Channel */ + sConfig.Channel = ADC_CHANNEL_6; sConfig.Rank = ADC_REGULAR_RANK_5; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { @@ -344,6 +348,7 @@ static void MX_ADC1_Init(void) /** Configure Regular Channel */ + sConfig.Channel = ADC_CHANNEL_7; sConfig.Rank = ADC_REGULAR_RANK_6; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { @@ -352,11 +357,21 @@ static void MX_ADC1_Init(void) /** Configure Regular Channel */ + sConfig.Channel = ADC_CHANNEL_8; sConfig.Rank = ADC_REGULAR_RANK_7; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { Error_Handler(); } + + /** Configure Regular Channel + */ + sConfig.Channel = ADC_CHANNEL_9; + sConfig.Rank = ADC_REGULAR_RANK_8; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + { + Error_Handler(); + } /* USER CODE BEGIN ADC1_Init 2 */ /* USER CODE END ADC1_Init 2 */ @@ -392,7 +407,7 @@ static void MX_ADC2_Init(void) hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING; hadc2.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T6_TRGO; hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc2.Init.NbrOfConversion = 7; + hadc2.Init.NbrOfConversion = 5; hadc2.Init.DMAContinuousRequests = ENABLE; hadc2.Init.EOCSelection = ADC_EOC_SEQ_CONV; hadc2.Init.LowPowerAutoWait = DISABLE; @@ -407,7 +422,7 @@ static void MX_ADC2_Init(void) sConfig.Channel = ADC_CHANNEL_1; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SingleDiff = ADC_SINGLE_ENDED; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; + sConfig.SamplingTime = ADC_SAMPLETIME_61CYCLES_5; sConfig.OffsetNumber = ADC_OFFSET_NONE; sConfig.Offset = 0; if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) @@ -417,6 +432,7 @@ static void MX_ADC2_Init(void) /** Configure Regular Channel */ + sConfig.Channel = ADC_CHANNEL_2; sConfig.Rank = ADC_REGULAR_RANK_2; if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) { @@ -425,6 +441,7 @@ static void MX_ADC2_Init(void) /** Configure Regular Channel */ + sConfig.Channel = ADC_CHANNEL_3; sConfig.Rank = ADC_REGULAR_RANK_3; if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) { @@ -433,6 +450,7 @@ static void MX_ADC2_Init(void) /** Configure Regular Channel */ + sConfig.Channel = ADC_CHANNEL_4; sConfig.Rank = ADC_REGULAR_RANK_4; if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) { @@ -441,27 +459,12 @@ static void MX_ADC2_Init(void) /** Configure Regular Channel */ + sConfig.Channel = ADC_CHANNEL_5; sConfig.Rank = ADC_REGULAR_RANK_5; if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) { Error_Handler(); } - - /** Configure Regular Channel - */ - sConfig.Rank = ADC_REGULAR_RANK_6; - if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) - { - Error_Handler(); - } - - /** Configure Regular Channel - */ - sConfig.Rank = ADC_REGULAR_RANK_7; - if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) - { - Error_Handler(); - } /* USER CODE BEGIN ADC2_Init 2 */ /* USER CODE END ADC2_Init 2 */ @@ -769,6 +772,9 @@ static void MX_GPIO_Init(void) __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(DSEL_8_GPIO_Port, DSEL_8_Pin, GPIO_PIN_RESET); + /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, GSS_GPIO_Pin|DSEL_3_Pin|DSEL_4_Pin|DSEL_5_Pin |DSEL_6_Pin|DSEL_7_Pin, GPIO_PIN_RESET); @@ -776,6 +782,13 @@ static void MX_GPIO_Init(void) /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOC, STATUS_LED1_Pin|STATUS_LED2_Pin|STATUS_LED3_Pin|STATUS_LED4_Pin, GPIO_PIN_RESET); + /*Configure GPIO pin : DSEL_8_Pin */ + GPIO_InitStruct.Pin = DSEL_8_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(DSEL_8_GPIO_Port, &GPIO_InitStruct); + /*Configure GPIO pins : GSS_GPIO_Pin DSEL_3_Pin DSEL_4_Pin DSEL_5_Pin DSEL_6_Pin DSEL_7_Pin */ GPIO_InitStruct.Pin = GSS_GPIO_Pin|DSEL_3_Pin|DSEL_4_Pin|DSEL_5_Pin diff --git a/Core/Src/stm32f3xx_hal_msp.c b/Core/Src/stm32f3xx_hal_msp.c index 8eaa079..dfa2b97 100644 --- a/Core/Src/stm32f3xx_hal_msp.c +++ b/Core/Src/stm32f3xx_hal_msp.c @@ -106,26 +106,32 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); /**ADC1 GPIO Configuration PC0 ------> ADC1_IN6 PC1 ------> ADC1_IN7 PC2 ------> ADC1_IN8 PC3 ------> ADC1_IN9 - PA0 ------> ADC1_IN1 PA1 ------> ADC1_IN2 PA2 ------> ADC1_IN3 PA3 ------> ADC1_IN4 + PF4 ------> ADC1_IN5 */ GPIO_InitStruct.Pin = isense12_Pin|isense11_Pin|isense6_Pin|isense13_Pin; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - GPIO_InitStruct.Pin = DSEL_8_Pin|isense5_Pin|isense3_Pin|isense7_Pin; + GPIO_InitStruct.Pin = isense5_Pin|isense3_Pin|isense7_Pin; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + GPIO_InitStruct.Pin = isense9_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(isense9_GPIO_Port, &GPIO_InitStruct); + /* ADC1 DMA Init */ /* ADC1 Init */ hdma_adc1.Instance = DMA1_Channel1; @@ -143,6 +149,9 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) __HAL_LINKDMA(hadc,DMA_Handle,hdma_adc1); + /* ADC1 interrupt Init */ + HAL_NVIC_SetPriority(ADC1_2_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(ADC1_2_IRQn); /* USER CODE BEGIN ADC1_MspInit 1 */ /* USER CODE END ADC1_MspInit 1 */ @@ -172,10 +181,10 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - GPIO_InitStruct.Pin = GPIO_PIN_4; + GPIO_InitStruct.Pin = LV_sens_Pin; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + HAL_GPIO_Init(LV_sens_GPIO_Port, &GPIO_InitStruct); /* ADC2 DMA Init */ /* ADC2 Init */ @@ -194,6 +203,9 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) __HAL_LINKDMA(hadc,DMA_Handle,hdma_adc2); + /* ADC2 interrupt Init */ + HAL_NVIC_SetPriority(ADC1_2_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(ADC1_2_IRQn); /* USER CODE BEGIN ADC2_MspInit 1 */ /* USER CODE END ADC2_MspInit 1 */ @@ -225,17 +237,29 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc) PC1 ------> ADC1_IN7 PC2 ------> ADC1_IN8 PC3 ------> ADC1_IN9 - PA0 ------> ADC1_IN1 PA1 ------> ADC1_IN2 PA2 ------> ADC1_IN3 PA3 ------> ADC1_IN4 + PF4 ------> ADC1_IN5 */ HAL_GPIO_DeInit(GPIOC, isense12_Pin|isense11_Pin|isense6_Pin|isense13_Pin); - HAL_GPIO_DeInit(GPIOA, DSEL_8_Pin|isense5_Pin|isense3_Pin|isense7_Pin); + HAL_GPIO_DeInit(GPIOA, isense5_Pin|isense3_Pin|isense7_Pin); + + HAL_GPIO_DeInit(isense9_GPIO_Port, isense9_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 */ @@ -260,10 +284,20 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc) */ HAL_GPIO_DeInit(GPIOA, isense2_Pin|isense1_Pin|isense10_Pin|isense4_Pin); - HAL_GPIO_DeInit(GPIOC, GPIO_PIN_4); + HAL_GPIO_DeInit(LV_sens_GPIO_Port, LV_sens_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 */ @@ -477,6 +511,9 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) /* USER CODE END TIM6_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_TIM6_CLK_ENABLE(); + /* TIM6 interrupt Init */ + HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn); /* USER CODE BEGIN TIM6_MspInit 1 */ /* USER CODE END TIM6_MspInit 1 */ @@ -580,6 +617,9 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) /* USER CODE END TIM6_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_TIM6_CLK_DISABLE(); + + /* TIM6 interrupt DeInit */ + HAL_NVIC_DisableIRQ(TIM6_DAC_IRQn); /* USER CODE BEGIN TIM6_MspDeInit 1 */ /* USER CODE END TIM6_MspDeInit 1 */ diff --git a/Core/Src/stm32f3xx_it.c b/Core/Src/stm32f3xx_it.c index 33b8c1a..b6fe145 100644 --- a/Core/Src/stm32f3xx_it.c +++ b/Core/Src/stm32f3xx_it.c @@ -57,7 +57,10 @@ /* External variables --------------------------------------------------------*/ extern DMA_HandleTypeDef hdma_adc1; extern DMA_HandleTypeDef hdma_adc2; +extern ADC_HandleTypeDef hadc1; +extern ADC_HandleTypeDef hadc2; extern CAN_HandleTypeDef hcan; +extern TIM_HandleTypeDef htim6; /* USER CODE BEGIN EV */ /* USER CODE END EV */ @@ -215,6 +218,21 @@ void DMA1_Channel1_IRQHandler(void) /* USER CODE END DMA1_Channel1_IRQn 1 */ } +/** + * @brief This function handles ADC1 and ADC2 interrupts. + */ +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 USB low priority or CAN_RX0 interrupts. */ @@ -257,6 +275,20 @@ void CAN_SCE_IRQHandler(void) /* USER CODE END CAN_SCE_IRQn 1 */ } +/** + * @brief This function handles Timer 6 interrupt and DAC underrun interrupts. + */ +void TIM6_DAC_IRQHandler(void) +{ + /* USER CODE BEGIN TIM6_DAC_IRQn 0 */ + + /* USER CODE END TIM6_DAC_IRQn 0 */ + HAL_TIM_IRQHandler(&htim6); + /* USER CODE BEGIN TIM6_DAC_IRQn 1 */ + + /* USER CODE END TIM6_DAC_IRQn 1 */ +} + /** * @brief This function handles DMA2 channel1 global interrupt. */ diff --git a/PDU FT24 MCU.ioc b/PDU FT24 MCU.ioc index b4a9c5b..9a7f05c 100644 --- a/PDU FT24 MCU.ioc +++ b/PDU FT24 MCU.ioc @@ -1,102 +1,91 @@ #MicroXplorer Configuration settings - do not modify -ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_1 -ADC1.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_1 -ADC1.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_1 -ADC1.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_1 -ADC1.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_1 -ADC1.Channel-5\#ChannelRegularConversion=ADC_CHANNEL_1 -ADC1.Channel-6\#ChannelRegularConversion=ADC_CHANNEL_1 +ADC1.Channel-11\#ChannelRegularConversion=ADC_CHANNEL_2 +ADC1.Channel-12\#ChannelRegularConversion=ADC_CHANNEL_3 +ADC1.Channel-13\#ChannelRegularConversion=ADC_CHANNEL_4 +ADC1.Channel-14\#ChannelRegularConversion=ADC_CHANNEL_5 +ADC1.Channel-15\#ChannelRegularConversion=ADC_CHANNEL_6 +ADC1.Channel-16\#ChannelRegularConversion=ADC_CHANNEL_7 +ADC1.Channel-17\#ChannelRegularConversion=ADC_CHANNEL_8 +ADC1.Channel-18\#ChannelRegularConversion=ADC_CHANNEL_9 ADC1.DMAContinuousRequests=ENABLE ADC1.EOCSelection=ADC_EOC_SEQ_CONV +ADC1.EnableRegularConversion=ENABLE ADC1.ExternalTrigConv=ADC_EXTERNALTRIGCONV_T6_TRGO -ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,Offset-0\#ChannelRegularConversion,NbrOfConversionFlag,master,DMAContinuousRequests,NbrOfConversion,EOCSelection,ExternalTrigConv,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,SamplingTimeOPAMP-1\#ChannelRegularConversion,OffsetNumber-1\#ChannelRegularConversion,Offset-1\#ChannelRegularConversion,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,SamplingTimeOPAMP-2\#ChannelRegularConversion,OffsetNumber-2\#ChannelRegularConversion,Offset-2\#ChannelRegularConversion,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,SamplingTimeOPAMP-3\#ChannelRegularConversion,OffsetNumber-3\#ChannelRegularConversion,Offset-3\#ChannelRegularConversion,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,SamplingTimeOPAMP-4\#ChannelRegularConversion,OffsetNumber-4\#ChannelRegularConversion,Offset-4\#ChannelRegularConversion,Rank-5\#ChannelRegularConversion,Channel-5\#ChannelRegularConversion,SamplingTime-5\#ChannelRegularConversion,SamplingTimeOPAMP-5\#ChannelRegularConversion,OffsetNumber-5\#ChannelRegularConversion,Offset-5\#ChannelRegularConversion,Rank-6\#ChannelRegularConversion,Channel-6\#ChannelRegularConversion,SamplingTime-6\#ChannelRegularConversion,SamplingTimeOPAMP-6\#ChannelRegularConversion,OffsetNumber-6\#ChannelRegularConversion,Offset-6\#ChannelRegularConversion -ADC1.NbrOfConversion=7 +ADC1.IPParameters=DMAContinuousRequests,EOCSelection,EnableRegularConversion,Rank-11\#ChannelRegularConversion,Channel-11\#ChannelRegularConversion,SamplingTime-11\#ChannelRegularConversion,OffsetNumber-11\#ChannelRegularConversion,Offset-11\#ChannelRegularConversion,NbrOfConversionFlag,Rank-12\#ChannelRegularConversion,Channel-12\#ChannelRegularConversion,SamplingTime-12\#ChannelRegularConversion,OffsetNumber-12\#ChannelRegularConversion,Offset-12\#ChannelRegularConversion,Rank-13\#ChannelRegularConversion,Channel-13\#ChannelRegularConversion,SamplingTime-13\#ChannelRegularConversion,OffsetNumber-13\#ChannelRegularConversion,Offset-13\#ChannelRegularConversion,Rank-14\#ChannelRegularConversion,Channel-14\#ChannelRegularConversion,SamplingTime-14\#ChannelRegularConversion,OffsetNumber-14\#ChannelRegularConversion,Offset-14\#ChannelRegularConversion,Rank-15\#ChannelRegularConversion,Channel-15\#ChannelRegularConversion,SamplingTime-15\#ChannelRegularConversion,OffsetNumber-15\#ChannelRegularConversion,Offset-15\#ChannelRegularConversion,Rank-16\#ChannelRegularConversion,Channel-16\#ChannelRegularConversion,SamplingTime-16\#ChannelRegularConversion,OffsetNumber-16\#ChannelRegularConversion,Offset-16\#ChannelRegularConversion,Rank-17\#ChannelRegularConversion,Channel-17\#ChannelRegularConversion,SamplingTime-17\#ChannelRegularConversion,OffsetNumber-17\#ChannelRegularConversion,Offset-17\#ChannelRegularConversion,NbrOfConversion,ExternalTrigConv,master,Rank-18\#ChannelRegularConversion,Channel-18\#ChannelRegularConversion,SamplingTime-18\#ChannelRegularConversion,SamplingTimeOPAMP-18\#ChannelRegularConversion,OffsetNumber-18\#ChannelRegularConversion,Offset-18\#ChannelRegularConversion +ADC1.NbrOfConversion=8 ADC1.NbrOfConversionFlag=1 -ADC1.Offset-0\#ChannelRegularConversion=0 -ADC1.Offset-1\#ChannelRegularConversion=0 -ADC1.Offset-2\#ChannelRegularConversion=0 -ADC1.Offset-3\#ChannelRegularConversion=0 -ADC1.Offset-4\#ChannelRegularConversion=0 -ADC1.Offset-5\#ChannelRegularConversion=0 -ADC1.Offset-6\#ChannelRegularConversion=0 -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.OffsetNumber-4\#ChannelRegularConversion=ADC_OFFSET_NONE -ADC1.OffsetNumber-5\#ChannelRegularConversion=ADC_OFFSET_NONE -ADC1.OffsetNumber-6\#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.Rank-4\#ChannelRegularConversion=5 -ADC1.Rank-5\#ChannelRegularConversion=6 -ADC1.Rank-6\#ChannelRegularConversion=7 -ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC1.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC1.SamplingTime-2\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC1.SamplingTime-3\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC1.SamplingTime-4\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC1.SamplingTime-5\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC1.SamplingTime-6\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC1.SamplingTimeOPAMP-1\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 -ADC1.SamplingTimeOPAMP-2\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 -ADC1.SamplingTimeOPAMP-3\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 -ADC1.SamplingTimeOPAMP-4\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 -ADC1.SamplingTimeOPAMP-5\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 -ADC1.SamplingTimeOPAMP-6\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 +ADC1.Offset-11\#ChannelRegularConversion=0 +ADC1.Offset-12\#ChannelRegularConversion=0 +ADC1.Offset-13\#ChannelRegularConversion=0 +ADC1.Offset-14\#ChannelRegularConversion=0 +ADC1.Offset-15\#ChannelRegularConversion=0 +ADC1.Offset-16\#ChannelRegularConversion=0 +ADC1.Offset-17\#ChannelRegularConversion=0 +ADC1.Offset-18\#ChannelRegularConversion=0 +ADC1.OffsetNumber-11\#ChannelRegularConversion=ADC_OFFSET_NONE +ADC1.OffsetNumber-12\#ChannelRegularConversion=ADC_OFFSET_NONE +ADC1.OffsetNumber-13\#ChannelRegularConversion=ADC_OFFSET_NONE +ADC1.OffsetNumber-14\#ChannelRegularConversion=ADC_OFFSET_NONE +ADC1.OffsetNumber-15\#ChannelRegularConversion=ADC_OFFSET_NONE +ADC1.OffsetNumber-16\#ChannelRegularConversion=ADC_OFFSET_NONE +ADC1.OffsetNumber-17\#ChannelRegularConversion=ADC_OFFSET_NONE +ADC1.OffsetNumber-18\#ChannelRegularConversion=ADC_OFFSET_NONE +ADC1.Rank-11\#ChannelRegularConversion=1 +ADC1.Rank-12\#ChannelRegularConversion=2 +ADC1.Rank-13\#ChannelRegularConversion=3 +ADC1.Rank-14\#ChannelRegularConversion=4 +ADC1.Rank-15\#ChannelRegularConversion=5 +ADC1.Rank-16\#ChannelRegularConversion=6 +ADC1.Rank-17\#ChannelRegularConversion=7 +ADC1.Rank-18\#ChannelRegularConversion=8 +ADC1.SamplingTime-11\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 +ADC1.SamplingTime-12\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 +ADC1.SamplingTime-13\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 +ADC1.SamplingTime-14\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 +ADC1.SamplingTime-15\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 +ADC1.SamplingTime-16\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 +ADC1.SamplingTime-17\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 +ADC1.SamplingTime-18\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 +ADC1.SamplingTimeOPAMP-18\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 ADC1.master=1 ADC2.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_1 -ADC2.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_1 -ADC2.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_1 -ADC2.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_1 -ADC2.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_1 -ADC2.Channel-5\#ChannelRegularConversion=ADC_CHANNEL_1 -ADC2.Channel-6\#ChannelRegularConversion=ADC_CHANNEL_1 +ADC2.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_2 +ADC2.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_3 +ADC2.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_4 +ADC2.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_5 ADC2.ClockPrescaler=ADC_CLOCK_ASYNC_DIV1 ADC2.DMAContinuousRequests=ENABLE ADC2.EOCSelection=ADC_EOC_SEQ_CONV ADC2.EnableInjectedConversion=DISABLE ADC2.ExternalTrigConv=ADC_EXTERNALTRIGCONV_T6_TRGO -ADC2.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,Offset-0\#ChannelRegularConversion,NbrOfConversionFlag,ClockPrescaler,LowPowerAutoWait,DMAContinuousRequests,EOCSelection,NbrOfConversion,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,SamplingTimeOPAMP-1\#ChannelRegularConversion,OffsetNumber-1\#ChannelRegularConversion,Offset-1\#ChannelRegularConversion,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,SamplingTimeOPAMP-2\#ChannelRegularConversion,OffsetNumber-2\#ChannelRegularConversion,Offset-2\#ChannelRegularConversion,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,SamplingTimeOPAMP-3\#ChannelRegularConversion,OffsetNumber-3\#ChannelRegularConversion,Offset-3\#ChannelRegularConversion,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,SamplingTimeOPAMP-4\#ChannelRegularConversion,OffsetNumber-4\#ChannelRegularConversion,Offset-4\#ChannelRegularConversion,Rank-5\#ChannelRegularConversion,Channel-5\#ChannelRegularConversion,SamplingTime-5\#ChannelRegularConversion,SamplingTimeOPAMP-5\#ChannelRegularConversion,OffsetNumber-5\#ChannelRegularConversion,Offset-5\#ChannelRegularConversion,Rank-6\#ChannelRegularConversion,Channel-6\#ChannelRegularConversion,SamplingTime-6\#ChannelRegularConversion,SamplingTimeOPAMP-6\#ChannelRegularConversion,OffsetNumber-6\#ChannelRegularConversion,Offset-6\#ChannelRegularConversion,ExternalTrigConv,EnableInjectedConversion +ADC2.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,Offset-0\#ChannelRegularConversion,NbrOfConversionFlag,ClockPrescaler,LowPowerAutoWait,DMAContinuousRequests,EOCSelection,NbrOfConversion,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,SamplingTimeOPAMP-1\#ChannelRegularConversion,OffsetNumber-1\#ChannelRegularConversion,Offset-1\#ChannelRegularConversion,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,SamplingTimeOPAMP-2\#ChannelRegularConversion,OffsetNumber-2\#ChannelRegularConversion,Offset-2\#ChannelRegularConversion,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,SamplingTimeOPAMP-3\#ChannelRegularConversion,OffsetNumber-3\#ChannelRegularConversion,Offset-3\#ChannelRegularConversion,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,SamplingTimeOPAMP-4\#ChannelRegularConversion,OffsetNumber-4\#ChannelRegularConversion,Offset-4\#ChannelRegularConversion,ExternalTrigConv,EnableInjectedConversion ADC2.LowPowerAutoWait=DISABLE -ADC2.NbrOfConversion=7 +ADC2.NbrOfConversion=5 ADC2.NbrOfConversionFlag=1 ADC2.Offset-0\#ChannelRegularConversion=0 ADC2.Offset-1\#ChannelRegularConversion=0 ADC2.Offset-2\#ChannelRegularConversion=0 ADC2.Offset-3\#ChannelRegularConversion=0 ADC2.Offset-4\#ChannelRegularConversion=0 -ADC2.Offset-5\#ChannelRegularConversion=0 -ADC2.Offset-6\#ChannelRegularConversion=0 ADC2.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE ADC2.OffsetNumber-1\#ChannelRegularConversion=ADC_OFFSET_NONE ADC2.OffsetNumber-2\#ChannelRegularConversion=ADC_OFFSET_NONE ADC2.OffsetNumber-3\#ChannelRegularConversion=ADC_OFFSET_NONE ADC2.OffsetNumber-4\#ChannelRegularConversion=ADC_OFFSET_NONE -ADC2.OffsetNumber-5\#ChannelRegularConversion=ADC_OFFSET_NONE -ADC2.OffsetNumber-6\#ChannelRegularConversion=ADC_OFFSET_NONE ADC2.Rank-0\#ChannelRegularConversion=1 ADC2.Rank-1\#ChannelRegularConversion=2 ADC2.Rank-2\#ChannelRegularConversion=3 ADC2.Rank-3\#ChannelRegularConversion=4 ADC2.Rank-4\#ChannelRegularConversion=5 -ADC2.Rank-5\#ChannelRegularConversion=6 -ADC2.Rank-6\#ChannelRegularConversion=7 -ADC2.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC2.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC2.SamplingTime-2\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC2.SamplingTime-3\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC2.SamplingTime-4\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC2.SamplingTime-5\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC2.SamplingTime-6\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 +ADC2.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 +ADC2.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 +ADC2.SamplingTime-2\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 +ADC2.SamplingTime-3\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 +ADC2.SamplingTime-4\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 ADC2.SamplingTimeOPAMP-1\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 ADC2.SamplingTimeOPAMP-2\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 ADC2.SamplingTimeOPAMP-3\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 ADC2.SamplingTimeOPAMP-4\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 -ADC2.SamplingTimeOPAMP-5\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 -ADC2.SamplingTimeOPAMP-6\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 CAD.formats= CAD.pinconfig= CAD.provider= @@ -154,49 +143,51 @@ Mcu.Name=STM32F302R(B-C)Tx Mcu.Package=LQFP64 Mcu.Pin0=PF0-OSC_IN Mcu.Pin1=PF1-OSC_OUT -Mcu.Pin10=PA4 -Mcu.Pin11=PA5 -Mcu.Pin12=PA6 -Mcu.Pin13=PA7 -Mcu.Pin14=PC4 -Mcu.Pin15=PB0 -Mcu.Pin16=PB1 -Mcu.Pin17=PB10 -Mcu.Pin18=PB12 -Mcu.Pin19=PB13 +Mcu.Pin10=PF4 +Mcu.Pin11=PA4 +Mcu.Pin12=PA5 +Mcu.Pin13=PA6 +Mcu.Pin14=PA7 +Mcu.Pin15=PC4 +Mcu.Pin16=PB0 +Mcu.Pin17=PB1 +Mcu.Pin18=PB10 +Mcu.Pin19=PB12 Mcu.Pin2=PC0 -Mcu.Pin20=PB14 -Mcu.Pin21=PB15 -Mcu.Pin22=PC6 -Mcu.Pin23=PC7 -Mcu.Pin24=PC8 -Mcu.Pin25=PC9 -Mcu.Pin26=PA9 -Mcu.Pin27=PA10 -Mcu.Pin28=PA11 -Mcu.Pin29=PA12 +Mcu.Pin20=PB13 +Mcu.Pin21=PB14 +Mcu.Pin22=PB15 +Mcu.Pin23=PC6 +Mcu.Pin24=PC7 +Mcu.Pin25=PC8 +Mcu.Pin26=PC9 +Mcu.Pin27=PA9 +Mcu.Pin28=PA10 +Mcu.Pin29=PA11 Mcu.Pin3=PC1 -Mcu.Pin30=PA13 -Mcu.Pin31=PA14 -Mcu.Pin32=PA15 -Mcu.Pin33=PB3 -Mcu.Pin34=PB4 -Mcu.Pin35=PB7 -Mcu.Pin36=PB9 -Mcu.Pin37=VP_SYS_VS_Systick -Mcu.Pin38=VP_TIM6_VS_ClockSourceINT +Mcu.Pin30=PA12 +Mcu.Pin31=PA13 +Mcu.Pin32=PA14 +Mcu.Pin33=PA15 +Mcu.Pin34=PB3 +Mcu.Pin35=PB4 +Mcu.Pin36=PB7 +Mcu.Pin37=PB9 +Mcu.Pin38=VP_SYS_VS_Systick +Mcu.Pin39=VP_TIM6_VS_ClockSourceINT Mcu.Pin4=PC2 Mcu.Pin5=PC3 Mcu.Pin6=PA0 Mcu.Pin7=PA1 Mcu.Pin8=PA2 Mcu.Pin9=PA3 -Mcu.PinsNb=39 +Mcu.PinsNb=40 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F302RBTx MxCube.Version=6.11.1 MxDb.Version=DB.6.0.111 +NVIC.ADC1_2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.CAN_RX1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.CAN_SCE_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true @@ -211,13 +202,13 @@ 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.TIM6_DAC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.USB_LP_CAN_RX0_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false PA0.GPIOParameters=GPIO_Label PA0.GPIO_Label=DSEL 8 PA0.Locked=true -PA0.Mode=IN1-Single-Ended -PA0.Signal=ADC1_IN1 +PA0.Signal=GPIO_Output PA1.GPIOParameters=GPIO_Label PA1.GPIO_Label=isense5 PA1.Locked=true @@ -328,6 +319,8 @@ PC2.Signal=ADCx_IN8 PC3.GPIOParameters=GPIO_Label PC3.GPIO_Label=isense13 PC3.Signal=ADCx_IN9 +PC4.GPIOParameters=GPIO_Label +PC4.GPIO_Label=LV_sens PC4.Locked=true PC4.Mode=IN5-Single-Ended PC4.Signal=ADC2_IN5 @@ -353,6 +346,11 @@ PF0-OSC_IN.Signal=RCC_OSC_IN PF1-OSC_OUT.Locked=true PF1-OSC_OUT.Mode=HSE-External-Oscillator PF1-OSC_OUT.Signal=RCC_OSC_OUT +PF4.GPIOParameters=GPIO_Label +PF4.GPIO_Label=isense9 +PF4.Locked=true +PF4.Mode=IN5-Single-Ended +PF4.Signal=ADC1_IN5 PinOutPanel.RotationAngle=0 ProjectManager.AskForMigrate=true ProjectManager.BackupPrevious=false @@ -384,7 +382,7 @@ 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_DMA_Init-DMA-false-HAL-true,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_ADC2_Init-ADC2-false-HAL-true,6-MX_CAN_Init-CAN-false-HAL-true,7-MX_TIM2_Init-TIM2-false-HAL-true,8-MX_TIM3_Init-TIM3-false-HAL-true,9-MX_I2C1_Init-I2C1-false-HAL-true,10-MX_USART1_UART_Init-USART1-false-HAL-true,11-MX_TIM6_Init-TIM6-false-HAL-true,12-MX_IWDG_Init-IWDG-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_ADC2_Init-ADC2-false-HAL-true,6-MX_CAN_Init-CAN-false-HAL-true,7-MX_TIM2_Init-TIM2-false-HAL-true,8-MX_TIM3_Init-TIM3-false-HAL-true,9-MX_I2C1_Init-I2C1-false-HAL-true,10-MX_USART1_UART_Init-USART1-false-HAL-true,11-MX_TIM6_Init-TIM6-false-HAL-true RCC.ADC12outputFreq_Value=64000000 RCC.AHBFreq_Value=16000000 RCC.APB1Freq_Value=16000000 @@ -449,7 +447,7 @@ TIM2.Period=65535 TIM2.Pulse-PWM\ Generation2\ CH2=0 TIM3.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 TIM3.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 -TIM3.IPParameters=Channel-PWM Generation4 CH4,Channel-PWM Generation1 CH1 +TIM3.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation4 CH4 TIM6.IPParameters=Prescaler,Period,TIM_MasterOutputTrigger TIM6.Period=8000-1 TIM6.Prescaler=400