Changeset 38 for trunk/fw_g473rct/Core


Ignore:
Timestamp:
Nov 1, 2025, 5:29:27 PM (2 days ago)
Author:
f.jahn
Message:
 
Location:
trunk/fw_g473rct/Core
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/fw_g473rct/Core/Inc/main.h

    r28 r38  
    9595#define ADC_DATA_READY_GPIO_Port GPIOD
    9696#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
    99100#define COM_POWERPRO_RES_Pin GPIO_PIN_9
    100101#define COM_POWERPRO_RES_GPIO_Port GPIOB
  • trunk/fw_g473rct/Core/Inc/stm32g4xx_hal_conf.h

    r25 r38  
    4747/*#define HAL_HRTIM_MODULE_ENABLED   */
    4848/*#define HAL_IRDA_MODULE_ENABLED   */
    49 /*#define HAL_IWDG_MODULE_ENABLED   */
     49#define HAL_IWDG_MODULE_ENABLED
    5050#define HAL_I2C_MODULE_ENABLED
    5151/*#define HAL_I2S_MODULE_ENABLED   */
  • trunk/fw_g473rct/Core/Inc/stm32g4xx_it.h

    r25 r38  
    6464void DMA1_Channel6_IRQHandler(void);
    6565void DMA1_Channel7_IRQHandler(void);
     66void EXTI9_5_IRQHandler(void);
    6667void USART1_IRQHandler(void);
    6768void USART2_IRQHandler(void);
  • trunk/fw_g473rct/Core/Src/gpio.c

    r26 r38  
    9191  GPIO_InitStruct.Pin = ADC_DATA_READY_Pin;
    9292  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
    93   GPIO_InitStruct.Pull = GPIO_NOPULL;
     93  GPIO_InitStruct.Pull = GPIO_PULLUP;
    9494  HAL_GPIO_Init(ADC_DATA_READY_GPIO_Port, &GPIO_InitStruct);
    9595
    96   /*Configure GPIO pin : FAULT_Pin */
    97   GPIO_InitStruct.Pin = FAULT_Pin;
    98   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
     96  /*Configure GPIO pin : FAULT_INT_Pin */
     97  GPIO_InitStruct.Pin = FAULT_INT_Pin;
     98  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
    9999  GPIO_InitStruct.Pull = GPIO_PULLUP;
    100   HAL_GPIO_Init(FAULT_GPIO_Port, &GPIO_InitStruct);
     100  HAL_GPIO_Init(FAULT_INT_GPIO_Port, &GPIO_InitStruct);
    101101
    102102  /*Configure GPIO pin : COM_POWERPRO_RES_Pin */
     
    110110  HAL_NVIC_EnableIRQ(EXTI2_IRQn);
    111111
     112  HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
     113  HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
     114
    112115}
    113116
    114117/* 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;
    120118
    121      
    122   }
    123 }
    124119/* USER CODE END 2 */
  • trunk/fw_g473rct/Core/Src/main.c

    r35 r38  
    2424#include "fdcan.h"
    2525#include "i2c.h"
     26#include "iwdg.h"
    2627#include "rtc.h"
    2728#include "spi.h"
     
    6263/* Private define ------------------------------------------------------------*/
    6364/* USER CODE BEGIN PD */
    64 
     65#define MAX_OVERCURRENT_RETRYS  3
    6566/* USER CODE END PD */
    6667
     
    157158  MX_CRC_Init();
    158159  MX_RTC_Init();
     160  MX_IWDG_Init();
    159161  /* USER CODE BEGIN 2 */
    160162  printf("Test debug io\r\n");
     
    165167
    166168  startType_t startType = EEPROM_isFirstStart();
    167 
     169 
    168170  switch(startType)
    169171  {
     
    173175          case FIRST_START_ERROR:                                               EEPROM_fullRestore(&sys_data);            break;
    174176  }
     177  HAL_IWDG_Refresh(&hiwdg);
    175178
    176179  if(HAL_GPIO_ReadPin(GPIO_INPUT_BTN_MODE_GPIO_Port, GPIO_INPUT_BTN_MODE_Pin) == GPIO_PIN_RESET)
     
    183186    }
    184187  }
    185 
     188  HAL_IWDG_Refresh(&hiwdg);
    186189  LoadBackupRegister();
    187190
     
    189192    // Modbus Initialisierung
    190193  mbInit(&modbusData, sys_data.s.parameter.baudrate, sys_data.s.parameter.parityMode, sys_data.s.parameter.stopBit, &huart2);
    191 
     194  HAL_IWDG_Refresh(&hiwdg);
    192195    // STM32G0 Chiptemperatur Kalibrierung
    193196  CHIP_TEMPERATURE_Calibration();
     
    198201  HAL_ADCEx_Calibration_Start(&hadc4, ADC_DIFFERENTIAL_ENDED);
    199202  HAL_ADCEx_Calibration_Start(&hadc5, ADC_SINGLE_ENDED);
    200 
     203  HAL_IWDG_Refresh(&hiwdg);
    201204
    202205  //SET_BIT(hadc2.Instance->CFGR, ADC_CFGR_DMAEN); //Enable DMA transfer for ADC slave (ADC12_CCR.MDMA = 0b00 -> MDMA mode disabled)
     
    232235
    233236  // ADS1260 Initialierung
     237  HAL_IWDG_Refresh(&hiwdg);
    234238  ADS1260_init();
     239  HAL_IWDG_Refresh(&hiwdg);
    235240  printf("ADS1260 Init\n");
    236241  OUTPUTS_Init();
     
    241246    HAL_GPIO_WritePin(LED_ERROR_GPIO_Port, LED_ERROR_Pin, GPIO_PIN_SET);
    242247    HAL_Delay(350);
     248        HAL_IWDG_Refresh(&hiwdg);
    243249    HAL_GPIO_WritePin(LED_ERROR_GPIO_Port, LED_ERROR_Pin, GPIO_PIN_RESET);
    244250    HAL_Delay(350);
     251        HAL_IWDG_Refresh(&hiwdg);
    245252  }
    246253
     
    255262
    256263    /* USER CODE BEGIN 3 */
    257 if (newADC12Data == 1)
     264        HAL_IWDG_Refresh(&hiwdg);
     265        if (newADC12Data == 1)
    258266    {
    259267          //Mit ADC_DIV2,Sample time 12,5Cycklen, ADC Clock 50Mhz, Oversampling 256
     
    306314    }
    307315
    308          // Zeitbasis ms Systick;
     316       
     317       
     318        // Zeitbasis ms Systick;
    309319    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
    319347    // muss immer sowohl das Zeit- als auch das Datumsregister lesen
    320348    // da beide Shadowregister sind sonst wird die Zeit nicht mehr geupdatet
     
    375403          case COMMAND_RESTORE_LAST_SAVED_VALUES:             EEPROM_readConfig(&sys_data);                                                                                               break;
    376404          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;
    378406          case COMMAND_BATTERY_CURRENT_OFFSET_CAL:           
    379407                                ADS_1260_BatteryCurrentOffsetCalibrationStart(&sys_data);
     
    465493  * in the RCC_OscInitTypeDef structure.
    466494  */
    467   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_HSE
    468                               |RCC_OSCILLATORTYPE_LSE;
     495  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_LSI
     496                              |RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;
    469497  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
    470498  RCC_OscInitStruct.LSEState = RCC_LSE_ON;
     499  RCC_OscInitStruct.LSIState = RCC_LSI_ON;
    471500  RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
    472501  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
     
    768797  return  result;
    769798}
     799
     800
    770801/* USER CODE END 4 */
    771802
  • trunk/fw_g473rct/Core/Src/stm32g4xx_it.c

    r25 r38  
    2323/* Private includes ----------------------------------------------------------*/
    2424/* USER CODE BEGIN Includes */
    25 #include "modbus.h"
     25#include "sysdata.h"
     26#include "ads1260.h"
    2627/* USER CODE END Includes */
    2728
     
    6768extern UART_HandleTypeDef huart2;
    6869/* USER CODE BEGIN EV */
    69 
     70extern sys_data_t sys_data;
    7071/* USER CODE END EV */
    7172
     
    321322
    322323/**
     324  * @brief This function handles EXTI line[9:5] interrupts.
     325  */
     326void 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/**
    323338  * @brief This function handles USART1 global interrupt / USART1 wake-up interrupt through EXTI line 25.
    324339  */
     
    344359  HAL_UART_IRQHandler(&huart2);
    345360  /* USER CODE BEGIN USART2_IRQn 1 */
    346 //MODBUS_UART_IRQHandler(&huart2);
     361
    347362  /* USER CODE END USART2_IRQn 1 */
    348363}
    349364
    350365/* USER CODE BEGIN 1 */
     366void 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}
    351381
    352382/* USER CODE END 1 */
Note: See TracChangeset for help on using the changeset viewer.