Changeset 55 for trunk/fw_g473rct/Core/Src/main.c
- Timestamp:
- Apr 1, 2026, 9:33:58 AM (5 weeks ago)
- File:
-
- 1 edited
-
trunk/fw_g473rct/Core/Src/main.c (modified) (21 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/fw_g473rct/Core/Src/main.c
r54 r55 22 22 #include "crc.h" 23 23 #include "dma.h" 24 #include "fdcan.h"25 24 #include "i2c.h" 26 25 #include "iwdg.h" 27 26 #include "rtc.h" 28 27 #include "spi.h" 28 #include "tim.h" 29 #include "ucpd.h" 29 30 #include "usart.h" 30 #include "usb.h" 31 #include "usbpd.h" 32 #include "usb_device.h" 31 33 #include "gpio.h" 32 34 … … 53 55 #include "efficiency.h" 54 56 #include "self_discharge.h" 57 #include "ltc_current.h" 55 58 56 59 /* USER CODE END Includes */ … … 65 68 66 69 #define MAX_OVERCURRENT_RETRYS 3 70 #ifdef DEBUG 71 #define MX_IWDG_Init DoNothing 72 #endif 67 73 68 74 /* USER CODE END PD */ … … 81 87 modbus_t modbusData __attribute__((section(".RAM1"))); 82 88 83 __IO uint16_t adc12Data[SAMPLE_ARRAY_SIZE][2] __attribute__((section(".RAM1"))); 84 __IO uint32_t adc1Data[ 1] __attribute__((section(".RAM1")));85 __IO uint32_t adc2Data[ 1] __attribute__((section(".RAM1")));89 90 __IO uint32_t adc1Data[SAMPLE_ARRAY_SIZE] __attribute__((section(".RAM1"))); 91 __IO uint32_t adc2Data[SAMPLE_ARRAY_SIZE] __attribute__((section(".RAM1"))); 86 92 __IO uint32_t adc3Data[3] __attribute__((section(".RAM1"))); 87 __IO uint32_t adc4Data[ 1] __attribute__((section(".RAM1")));93 __IO uint32_t adc4Data[SAMPLE_ARRAY_SIZE] __attribute__((section(".RAM1"))); 88 94 __IO uint32_t adc5Data[4] __attribute__((section(".RAM1"))); 89 95 int silentmode =0; 90 static volatile uint32_t newADC12 Data = 0;96 static volatile uint32_t newADC124Data = 0; 91 97 static volatile uint32_t newADC3Data = 0; 92 static volatile uint32_t newADC4Data = 0;93 98 static volatile uint32_t newADC5Data = 0; 94 99 … … 104 109 void SaveBackupRegister(void); 105 110 void JumpToBootloader(void); 111 void DoNothing(void){}; 106 112 /* USER CODE END PFP */ 107 113 … … 117 123 int main(void) 118 124 { 125 119 126 /* USER CODE BEGIN 1 */ 120 127 … … 160 167 MX_ADC4_Init(); 161 168 MX_ADC5_Init(); 162 MX_FDCAN2_Init();163 MX_FDCAN3_Init();164 169 MX_I2C3_Init(); 165 170 MX_I2C4_Init(); … … 167 172 MX_USART1_UART_Init(); 168 173 MX_USART2_UART_Init(); 169 MX_USB_PCD_Init();170 174 MX_CRC_Init(); 171 175 MX_RTC_Init(); 172 176 MX_IWDG_Init(); 177 MX_TIM3_Init(); 178 MX_USB_Device_Init(); 179 MX_UCPD1_Init(); 173 180 /* USER CODE BEGIN 2 */ 174 181 printf("Test debug io\r\n"); … … 178 185 179 186 startType_t startType = EEPROM_isFirstStart(); 180 187 181 188 switch(startType) 182 189 { … … 212 219 HAL_ADCEx_Calibration_Start(&hadc5, ADC_SINGLE_ENDED); 213 220 HAL_IWDG_Refresh(&hiwdg); 214 221 215 222 //SET_BIT(hadc2.Instance->CFGR, ADC_CFGR_DMAEN); //Enable DMA transfer for ADC slave (ADC12_CCR.MDMA = 0b00 -> MDMA mode disabled) 216 223 //HAL_DMA_Start(hadc2.DMA_Handle,(uint32_t)&hadc2.Instance->DR, (uint32_t)adc2Data,1); //Start ADC slave DMA 217 224 //SET_BIT(hadc1.Instance->CFGR, ADC_CFGR_DMAEN); //Enable DMA transfer for ADC master (ADC12_CCR.MDMA = 0b00 -> MDMA mode disabled) 218 219 //HAL_ADC_Start_DMA(&hadc2, (uint32_t*)adc2Data, 1); 220 if (HAL_ADCEx_MultiModeStart_DMA(&hadc1,(uint32_t *)adc12Data,SAMPLE_ARRAY_SIZE)) //Start ADC interleaved mode 225 if (HAL_ADC_Start_DMA(&hadc1,(uint32_t *)adc1Data,SAMPLE_ARRAY_SIZE)) //Start ADC interleaved mode 221 226 { 222 227 /* Start Error */ 223 228 Error_Handler(); 224 229 } 225 226 if (HAL_ADC_Start_DMA(&hadc 3, (uint32_t *) adc3Data , 3))230 231 if (HAL_ADC_Start_DMA(&hadc2,(uint32_t *)adc2Data,SAMPLE_ARRAY_SIZE)) //Start ADC interleaved mode 227 232 { 228 233 /* Start Error */ … … 230 235 } 231 236 232 if (HAL_ADC_Start_DMA(&hadc4, (uint32_t *) adc4Data , 1)) 237 if (HAL_ADC_Start_DMA(&hadc3, (uint32_t *) adc3Data , 3)) 238 { 239 /* Start Error */ 240 Error_Handler(); 241 } 242 243 if (HAL_ADC_Start_DMA(&hadc4, (uint32_t *) adc4Data , SAMPLE_ARRAY_SIZE)) 233 244 { 234 245 /* Start Error */ … … 265 276 /* USER CODE END 2 */ 266 277 278 /* USBPD initialisation ---------------------------------*/ 279 MX_USBPD_Init(); 280 267 281 /* Infinite loop */ 268 282 /* USER CODE BEGIN WHILE */ … … 270 284 { 271 285 /* USER CODE END WHILE */ 286 USBPD_DPM_Run(); 272 287 273 288 /* USER CODE BEGIN 3 */ 274 289 HAL_IWDG_Refresh(&hiwdg); 275 if (newADC12Data == 1) 276 { 290 if (newADC124Data == 1) 291 { 292 SHUNT_VOLTAGE_Exec( adc4Data[0]); 277 293 //Mit ADC_DIV2,Sample time 12,5Cycklen, ADC Clock 50Mhz, Oversampling 256 278 294 //Tconv = 6400 Takte = 0,128ms Pro Konvertierung. Also für 100 messwerte 12,8mS 279 BATTERY_VOLTAGE_Exec( adc 12Data[SAMPLE_ARRAY_SIZE-1][1]);280 FAST_CURRENT_Exec(adc1 2Data[SAMPLE_ARRAY_SIZE-1][0]);295 BATTERY_VOLTAGE_Exec( adc2Data[SAMPLE_ARRAY_SIZE-1]); 296 FAST_CURRENT_Exec(adc1Data[SAMPLE_ARRAY_SIZE-1]); 281 297 ESR_FAST_Exec(); 282 298 sys_data.s.values.batteryPower = ((int64_t) sys_data.s.values.batteryVoltage * (int64_t)sys_data.s.values.batteryCurrent) / 1000LL; 283 299 sys_data.s.values.power_Fast = ((int64_t) sys_data.s.values.batteryVoltage * (int64_t)sys_data.s.values.fast_current) / 1000LL; 284 newADC12Data = 0; 300 newADC124Data = 0; 301 302 285 303 286 304 287 if (HAL_ADCEx_MultiModeStart_DMA(&hadc1,(uint32_t *)adc12Data,SAMPLE_ARRAY_SIZE)) //Start ADC interleaved mode 288 { 289 /* Start Error */ 290 Error_Handler(); 291 } 305 if (HAL_ADC_Start_DMA(&hadc1,(uint32_t *)adc1Data,SAMPLE_ARRAY_SIZE)) //Start ADC interleaved mode 306 { 307 /* Start Error */ 308 Error_Handler(); 309 } 310 311 if (HAL_ADC_Start_DMA(&hadc2,(uint32_t *)adc2Data,SAMPLE_ARRAY_SIZE)) //Start ADC interleaved mode 312 { 313 /* Start Error */ 314 Error_Handler(); 315 } 316 317 // if (HAL_ADC_Start_DMA(&hadc4, (uint32_t *) adc4Data , SAMPLE_ARRAY_SIZE)) 318 // { 319 // /* Start Error */ 320 // Error_Handler(); 321 // } 322 323 324 292 325 293 326 } … … 296 329 { 297 330 SHUNT_TEMPERATURE_Exec(adc3Data[0]); 298 } 299 300 301 if (newADC4Data == 1) 302 { 303 SHUNT_VOLTAGE_Exec( adc4Data[0]); 304 } 331 LTC_CURRENT_Exec(adc3Data[1], adc3Data[2]); 332 333 } 334 335 336 337 338 339 305 340 306 341 … … 317 352 { 318 353 ADS1260_ConversionFinished(); 319 sys_data.s.values.esrCalcStatus = ESR_Exec();354 //sys_data.s.values.esrCalcStatus = ESR_Exec(); 320 355 321 356 newCurrentValue = 0; … … 343 378 printf("SHORT_CIRCUIT_PROTECTION\n"); 344 379 sys_data.s.values.lvpState = OUTPUTS_LVP_SHORT_PROTECTION; 345 HAL_GPIO_WritePin(DISCHARGE_ENABLE_GPIO_Port, DISCHARGE_ENABLE_Pin, OUTPUTS_DISCHARGE_NOT_ALLOWED);380 OUTPUTS_OverwriteDischargeCtrl_DischargeDisabled(); 346 381 347 382 sys_data.s.values.lvpState = OUTPUTS_OVP_SHORT_PROTECTION; 348 HAL_GPIO_WritePin(CHARGE_ENABLE_GPIO_Port, CHARGE_ENABLE_Pin, OUTPUTS_CHARGE_NOT_ALLOWED);383 OUTPUTS_OverwriteChargeCtrl_ChargeDisabled(); 349 384 } 350 385 … … 410 445 case COMMAND_BATTERY_CURRENT_OFFSET_CAL: 411 446 ADS_1260_BatteryCurrentOffsetCalibrationStart(&sys_data); 412 CurrentOffsetCal(adc1 2Data[SAMPLE_ARRAY_SIZE - 1][0]);447 CurrentOffsetCal(adc1Data[SAMPLE_ARRAY_SIZE - 1]); 413 448 break; 414 449 case COMMAND_BATTERY_CURRENT_OFFSET_COMMONMODE_CAL: ADS_1260_BatteryCurrentOffsetCommonModeErrorComepensationStart(&sys_data); break; … … 416 451 case COMMAND_BATTERY_CURRENT_GAIN_CAL: 417 452 ADS_1260_BatteryCurrentGainCalibrationStart(&sys_data); 418 CurrentGainCal(adc1 2Data[SAMPLE_ARRAY_SIZE - 1][0]);453 CurrentGainCal(adc1Data[SAMPLE_ARRAY_SIZE - 1]); 419 454 break; 420 455 case COMMAND_BATTERY_CURRENT_GAIN_TEMP_SHUNT_CAL: ADS_1260_BatteryCurrentGainTemperatureCalibrationShuntStart(); break; … … 499 534 * in the RCC_OscInitTypeDef structure. 500 535 */ 501 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_LSI 502 |RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE; 536 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSI48 537 |RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE 538 |RCC_OSCILLATORTYPE_LSE; 503 539 RCC_OscInitStruct.HSEState = RCC_HSE_ON; 504 540 RCC_OscInitStruct.LSEState = RCC_LSE_ON; 541 RCC_OscInitStruct.HSIState = RCC_HSI_ON; 542 RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; 505 543 RCC_OscInitStruct.LSIState = RCC_LSI_ON; 506 544 RCC_OscInitStruct.HSI48State = RCC_HSI48_ON; … … 616 654 if (hadc->Instance==ADC1) 617 655 { 618 newADC12 Data=1;656 newADC124Data=1; 619 657 } 620 658 … … 622 660 { 623 661 newADC3Data=1; 624 }625 626 627 if (hadc->Instance==ADC4)628 {629 newADC4Data=1;630 662 } 631 663
Note:
See TracChangeset
for help on using the changeset viewer.
