Changeset 38 for trunk/fw_g473rct/Core
- Timestamp:
 - Nov 1, 2025, 5:29:27 PM (2 days ago)
 - Location:
 - trunk/fw_g473rct/Core
 - Files:
 - 
          
- 2 added
 - 6 edited
 
- 
          Inc/iwdg.h (added)
 - 
          Inc/main.h (modified) (1 diff)
 - 
          Inc/stm32g4xx_hal_conf.h (modified) (1 diff)
 - 
          Inc/stm32g4xx_it.h (modified) (1 diff)
 - 
          Src/gpio.c (modified) (2 diffs)
 - 
          Src/iwdg.c (added)
 - 
          Src/main.c (modified) (15 diffs)
 - 
          Src/stm32g4xx_it.c (modified) (4 diffs)
 
 
Legend:
- Unmodified
 - Added
 - Removed
 
- 
        
trunk/fw_g473rct/Core/Inc/main.h
r28 r38 95 95 #define ADC_DATA_READY_GPIO_Port GPIOD 96 96 #define ADC_DATA_READY_EXTI_IRQn EXTI2_IRQn 97 #define FAULT_Pin GPIO_PIN_7 98 #define FAULT_GPIO_Port GPIOB 97 #define FAULT_INT_Pin GPIO_PIN_7 98 #define FAULT_INT_GPIO_Port GPIOB 99 #define FAULT_INT_EXTI_IRQn EXTI9_5_IRQn 99 100 #define COM_POWERPRO_RES_Pin GPIO_PIN_9 100 101 #define COM_POWERPRO_RES_GPIO_Port GPIOB  - 
        
trunk/fw_g473rct/Core/Inc/stm32g4xx_hal_conf.h
r25 r38 47 47 /*#define HAL_HRTIM_MODULE_ENABLED */ 48 48 /*#define HAL_IRDA_MODULE_ENABLED */ 49 /*#define HAL_IWDG_MODULE_ENABLED */ 49 #define HAL_IWDG_MODULE_ENABLED 50 50 #define HAL_I2C_MODULE_ENABLED 51 51 /*#define HAL_I2S_MODULE_ENABLED */  - 
        
trunk/fw_g473rct/Core/Inc/stm32g4xx_it.h
r25 r38 64 64 void DMA1_Channel6_IRQHandler(void); 65 65 void DMA1_Channel7_IRQHandler(void); 66 void EXTI9_5_IRQHandler(void); 66 67 void USART1_IRQHandler(void); 67 68 void USART2_IRQHandler(void);  - 
        
trunk/fw_g473rct/Core/Src/gpio.c
r26 r38 91 91 GPIO_InitStruct.Pin = ADC_DATA_READY_Pin; 92 92 GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; 93 GPIO_InitStruct.Pull = GPIO_ NOPULL;93 GPIO_InitStruct.Pull = GPIO_PULLUP; 94 94 HAL_GPIO_Init(ADC_DATA_READY_GPIO_Port, &GPIO_InitStruct); 95 95 96 /*Configure GPIO pin : FAULT_ Pin */97 GPIO_InitStruct.Pin = FAULT_ Pin;98 GPIO_InitStruct.Mode = GPIO_MODE_I NPUT;96 /*Configure GPIO pin : FAULT_INT_Pin */ 97 GPIO_InitStruct.Pin = FAULT_INT_Pin; 98 GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; 99 99 GPIO_InitStruct.Pull = GPIO_PULLUP; 100 HAL_GPIO_Init(FAULT_ GPIO_Port, &GPIO_InitStruct);100 HAL_GPIO_Init(FAULT_INT_GPIO_Port, &GPIO_InitStruct); 101 101 102 102 /*Configure GPIO pin : COM_POWERPRO_RES_Pin */ … … 110 110 HAL_NVIC_EnableIRQ(EXTI2_IRQn); 111 111 112 HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0); 113 HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); 114 112 115 } 113 116 114 117 /* USER CODE BEGIN 2 */ 115 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)116 {117 if (GPIO_Pin == ADC_DATA_READY_Pin)118 {119 newCurrentValue=1;120 118 121 122 }123 }124 119 /* USER CODE END 2 */  - 
        
trunk/fw_g473rct/Core/Src/main.c
r35 r38 24 24 #include "fdcan.h" 25 25 #include "i2c.h" 26 #include "iwdg.h" 26 27 #include "rtc.h" 27 28 #include "spi.h" … … 62 63 /* Private define ------------------------------------------------------------*/ 63 64 /* USER CODE BEGIN PD */ 64 65 #define MAX_OVERCURRENT_RETRYS 3 65 66 /* USER CODE END PD */ 66 67 … … 157 158 MX_CRC_Init(); 158 159 MX_RTC_Init(); 160 MX_IWDG_Init(); 159 161 /* USER CODE BEGIN 2 */ 160 162 printf("Test debug io\r\n"); … … 165 167 166 168 startType_t startType = EEPROM_isFirstStart(); 167 169 168 170 switch(startType) 169 171 { … … 173 175 case FIRST_START_ERROR: EEPROM_fullRestore(&sys_data); break; 174 176 } 177 HAL_IWDG_Refresh(&hiwdg); 175 178 176 179 if(HAL_GPIO_ReadPin(GPIO_INPUT_BTN_MODE_GPIO_Port, GPIO_INPUT_BTN_MODE_Pin) == GPIO_PIN_RESET) … … 183 186 } 184 187 } 185 188 HAL_IWDG_Refresh(&hiwdg); 186 189 LoadBackupRegister(); 187 190 … … 189 192 // Modbus Initialisierung 190 193 mbInit(&modbusData, sys_data.s.parameter.baudrate, sys_data.s.parameter.parityMode, sys_data.s.parameter.stopBit, &huart2); 191 194 HAL_IWDG_Refresh(&hiwdg); 192 195 // STM32G0 Chiptemperatur Kalibrierung 193 196 CHIP_TEMPERATURE_Calibration(); … … 198 201 HAL_ADCEx_Calibration_Start(&hadc4, ADC_DIFFERENTIAL_ENDED); 199 202 HAL_ADCEx_Calibration_Start(&hadc5, ADC_SINGLE_ENDED); 200 203 HAL_IWDG_Refresh(&hiwdg); 201 204 202 205 //SET_BIT(hadc2.Instance->CFGR, ADC_CFGR_DMAEN); //Enable DMA transfer for ADC slave (ADC12_CCR.MDMA = 0b00 -> MDMA mode disabled) … … 232 235 233 236 // ADS1260 Initialierung 237 HAL_IWDG_Refresh(&hiwdg); 234 238 ADS1260_init(); 239 HAL_IWDG_Refresh(&hiwdg); 235 240 printf("ADS1260 Init\n"); 236 241 OUTPUTS_Init(); … … 241 246 HAL_GPIO_WritePin(LED_ERROR_GPIO_Port, LED_ERROR_Pin, GPIO_PIN_SET); 242 247 HAL_Delay(350); 248 HAL_IWDG_Refresh(&hiwdg); 243 249 HAL_GPIO_WritePin(LED_ERROR_GPIO_Port, LED_ERROR_Pin, GPIO_PIN_RESET); 244 250 HAL_Delay(350); 251 HAL_IWDG_Refresh(&hiwdg); 245 252 } 246 253 … … 255 262 256 263 /* USER CODE BEGIN 3 */ 257 if (newADC12Data == 1) 264 HAL_IWDG_Refresh(&hiwdg); 265 if (newADC12Data == 1) 258 266 { 259 267 //Mit ADC_DIV2,Sample time 12,5Cycklen, ADC Clock 50Mhz, Oversampling 256 … … 306 314 } 307 315 308 // Zeitbasis ms Systick; 316 317 318 // Zeitbasis ms Systick; 309 319 newTime = HAL_GetTick(); 310 timeDiff = newTime - oldTime; 311 oldTime = newTime; 312 313 if ((mode_button_disable_time > 0) && (timeDiff > 0)) 314 { 315 mode_button_disable_time--; 316 } 317 318 // Zeitbasis Sekunde ber RTC 320 321 if (newTime != oldTime) { 322 323 oldTime = newTime; 324 325 if (mode_button_disable_time > 0) 326 { 327 mode_button_disable_time--; 328 } 329 330 } 331 332 333 if (sys_data.s.values.overcurrentRetryCounter > MAX_OVERCURRENT_RETRYS) 334 { 335 printf("SHORT_CIRCUIT_PROTECTION\n"); 336 sys_data.s.values.lvpState = OUTPUTS_LVP_SHORT_PROTECTION; 337 HAL_GPIO_WritePin(DISCHARGE_ENABLE_GPIO_Port, DISCHARGE_ENABLE_Pin, OUTPUTS_DISCHARGE_NOT_ALLOWED); 338 339 sys_data.s.values.lvpState = OUTPUTS_OVP_SHORT_PROTECTION; 340 HAL_GPIO_WritePin(CHARGE_ENABLE_GPIO_Port, CHARGE_ENABLE_Pin, OUTPUTS_CHARGE_NOT_ALLOWED); 341 342 343 344 } 345 346 // Zeitbasis Sekunde über RTC 319 347 // muss immer sowohl das Zeit- als auch das Datumsregister lesen 320 348 // da beide Shadowregister sind sonst wird die Zeit nicht mehr geupdatet … … 375 403 case COMMAND_RESTORE_LAST_SAVED_VALUES: EEPROM_readConfig(&sys_data); break; 376 404 case COMMAND_STORE_WITH_SERIAL_NUMBER: EEPROM_storeConfig(&sys_data,1); break; // Seriennummer schreiben 377 case COMMAND_RESTART: NVIC_SystemReset();break;405 case COMMAND_RESTART: while(1); break; 378 406 case COMMAND_BATTERY_CURRENT_OFFSET_CAL: 379 407 ADS_1260_BatteryCurrentOffsetCalibrationStart(&sys_data); … … 465 493 * in the RCC_OscInitTypeDef structure. 466 494 */ 467 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_ HSE468 |RCC_OSCILLATORTYPE_ LSE;495 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_LSI 496 |RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE; 469 497 RCC_OscInitStruct.HSEState = RCC_HSE_ON; 470 498 RCC_OscInitStruct.LSEState = RCC_LSE_ON; 499 RCC_OscInitStruct.LSIState = RCC_LSI_ON; 471 500 RCC_OscInitStruct.HSI48State = RCC_HSI48_ON; 472 501 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; … … 768 797 return result; 769 798 } 799 800 770 801 /* USER CODE END 4 */ 771 802  - 
        
trunk/fw_g473rct/Core/Src/stm32g4xx_it.c
r25 r38 23 23 /* Private includes ----------------------------------------------------------*/ 24 24 /* USER CODE BEGIN Includes */ 25 #include "modbus.h" 25 #include "sysdata.h" 26 #include "ads1260.h" 26 27 /* USER CODE END Includes */ 27 28 … … 67 68 extern UART_HandleTypeDef huart2; 68 69 /* USER CODE BEGIN EV */ 69 70 extern sys_data_t sys_data; 70 71 /* USER CODE END EV */ 71 72 … … 321 322 322 323 /** 324 * @brief This function handles EXTI line[9:5] interrupts. 325 */ 326 void EXTI9_5_IRQHandler(void) 327 { 328 /* USER CODE BEGIN EXTI9_5_IRQn 0 */ 329 330 /* USER CODE END EXTI9_5_IRQn 0 */ 331 HAL_GPIO_EXTI_IRQHandler(FAULT_INT_Pin); 332 /* USER CODE BEGIN EXTI9_5_IRQn 1 */ 333 334 /* USER CODE END EXTI9_5_IRQn 1 */ 335 } 336 337 /** 323 338 * @brief This function handles USART1 global interrupt / USART1 wake-up interrupt through EXTI line 25. 324 339 */ … … 344 359 HAL_UART_IRQHandler(&huart2); 345 360 /* USER CODE BEGIN USART2_IRQn 1 */ 346 //MODBUS_UART_IRQHandler(&huart2); 361 347 362 /* USER CODE END USART2_IRQn 1 */ 348 363 } 349 364 350 365 /* USER CODE BEGIN 1 */ 366 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) 367 { 368 if (GPIO_Pin == ADC_DATA_READY_Pin) 369 { 370 newCurrentValue=1; 371 } 372 else if (GPIO_Pin == FAULT_INT_Pin) 373 { 374 sys_data.s.values.overcurrentRetryCounter++; 375 sys_data.s.values.overcurrentEventsTotal++; 376 377 } 378 379 380 } 351 381 352 382 /* USER CODE END 1 */  
Note: See TracChangeset
          for help on using the changeset viewer.
      