Ignore:
Timestamp:
Jun 5, 2026, 1:30:00 PM (5 days ago)
Author:
f.jahn
Message:

vor cube code generierung

Location:
trunk/fw_g473rct/Core/Src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/fw_g473rct/Core/Src/adc.c

    r55 r71  
    5454  */
    5555  hadc1.Instance = ADC1;
    56   hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
     56  hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1;
    5757  hadc1.Init.Resolution = ADC_RESOLUTION_12B;
    5858  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    120120  */
    121121  hadc2.Instance = ADC2;
    122   hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
     122  hadc2.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1;
    123123  hadc2.Init.Resolution = ADC_RESOLUTION_12B;
    124124  hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    179179  */
    180180  hadc3.Instance = ADC3;
    181   hadc3.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
     181  hadc3.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
    182182  hadc3.Init.Resolution = ADC_RESOLUTION_12B;
    183183  hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    192192  hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
    193193  hadc3.Init.DMAContinuousRequests = ENABLE;
    194   hadc3.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
     194  hadc3.Init.Overrun = ADC_OVR_DATA_PRESERVED;
    195195  hadc3.Init.OversamplingMode = ENABLE;
    196196  hadc3.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_256;
     
    263263  */
    264264  hadc4.Instance = ADC4;
    265   hadc4.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
     265  hadc4.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1;
    266266  hadc4.Init.Resolution = ADC_RESOLUTION_12B;
    267267  hadc4.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    276276  hadc4.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
    277277  hadc4.Init.DMAContinuousRequests = DISABLE;
    278   hadc4.Init.Overrun = ADC_OVR_DATA_PRESERVED;
     278  hadc4.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
    279279  hadc4.Init.OversamplingMode = ENABLE;
    280280  hadc4.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_256;
     
    291291  sConfig.Channel = ADC_CHANNEL_4;
    292292  sConfig.Rank = ADC_REGULAR_RANK_1;
    293   sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
     293  sConfig.SamplingTime = ADC_SAMPLETIME_6CYCLES_5;
    294294  sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED;
    295295  sConfig.OffsetNumber = ADC_OFFSET_NONE;
     
    321321  */
    322322  hadc5.Instance = ADC5;
    323   hadc5.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
     323  hadc5.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
    324324  hadc5.Init.Resolution = ADC_RESOLUTION_12B;
    325325  hadc5.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    596596    hdma_adc4.Init.PeriphInc = DMA_PINC_DISABLE;
    597597    hdma_adc4.Init.MemInc = DMA_MINC_ENABLE;
    598     hdma_adc4.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
     598    hdma_adc4.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
    599599    hdma_adc4.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
    600600    hdma_adc4.Init.Mode = DMA_NORMAL;
     
    788788
    789789/* USER CODE BEGIN 1 */
    790 
     790uint32_t GetADCClockHz(void)
     791{
     792    uint32_t hclk = HAL_RCC_GetHCLKFreq();
     793
     794    uint32_t ckmode =
     795        (ADC12_COMMON->CCR & ADC_CCR_CKMODE) >> ADC_CCR_CKMODE_Pos;
     796
     797    switch (ckmode)
     798    {
     799        case 0x1:     // HCLK/1
     800            return hclk;
     801
     802        case 0x2:     // HCLK/2
     803            return hclk / 2;
     804
     805        case 0x3:     // HCLK/4
     806            return hclk / 4;
     807
     808        default:      // Asynchroner ADC-Takt
     809            // Hier muss die RCC-Konfiguration ausgewertet werden
     810            // (PLL, SYSCLK, HSI usw.)
     811            return 0;
     812    }
     813}
     814
     815float GetADCSampleRate(void)
     816{
     817    uint32_t adc_clk = GetADCClockHz();
     818
     819    if(adc_clk == 0)
     820        return 0.0f;
     821
     822    float sample_cycles = 6.5f;
     823    float conversion_cycles = 12.5f;
     824
     825    return adc_clk / (sample_cycles + conversion_cycles);
     826}
    791827/* USER CODE END 1 */
    792828
  • trunk/fw_g473rct/Core/Src/main.c

    r70 r71  
    8686/* USER CODE BEGIN PV */
    8787
     88
    8889uint32_t bootLoaderMark __attribute__((section(".no_init")));
    8990
     
    9192
    9293
    93 __IO uint32_t adc1Data[SAMPLE_ARRAY_SIZE];
    94 __IO uint32_t adc2Data[SAMPLE_ARRAY_SIZE];
     94__IO uint32_t adc1Data[SAMPLE_ARRAY_SIZE] __attribute__((section(".RAM1_CRC")));
     95__IO uint32_t adc2Data[SAMPLE_ARRAY_SIZE] __attribute__((section(".RAM1_CRC")));
    9596__IO uint32_t adc3Data[3];
    96 __IO uint32_t adc4Data[SAMPLE_ARRAY_SIZE];
     97__IO uint32_t adc4Data[SAMPLE_ARRAY_SIZE] __attribute__((section(".RAM1_CRC")));
    9798__IO uint32_t adc5Data[4];
    98 int silentmode =0;
     99int silentmode = 0;
    99100static volatile uint32_t newADC124Data = 0;
    100101static volatile uint32_t newADC3Data = 0;
     
    119120void DoNothing(void){};
    120121void processUSB(ring_buffer_t* const ring_in_buff, ring_buffer_t* const ring_out_buff);
    121 
     122void ADC2_SetOffset(uint32_t channel, int16_t offset);
    122123/* USER CODE END PFP */
    123124
     
    135136
    136137  /* USER CODE BEGIN 1 */
    137 
    138   CheckRAMHWParity();
     138 
     139  //CheckRAMHWParity();
    139140
    140141  if (bootLoaderMark == GOTO_SYSTEM_BOOTLOADER_MARK)
     
    143144          JumpToBootloader();
    144145  }
    145 
     146 
    146147  uint8_t firstStartCatcher;
    147148  int mode_button_disable_time=0;
     
    161162
    162163  /* USER CODE BEGIN Init */
    163 
     164 
    164165  /* USER CODE END Init */
    165166
     
    170171  printf("System core clock: %uMHz\n", SystemCoreClock / 1000000U);
    171172  /* USER CODE END SysInit */
    172 
     173 
    173174  /* Initialize all configured peripherals */
    174175  MX_GPIO_Init();
     
    186187  MX_CRC_Init();
    187188  MX_RTC_Init();
    188   MX_IWDG_Init();
     189 // MX_IWDG_Init();
    189190  MX_TIM3_Init();
    190191  MX_USB_Device_Init();
     
    192193  /* USER CODE BEGIN 2 */
    193194  printf("Test debug io\r\n");
     195  printf("adc samplerate  core clock: %d kHz\r\n", (uint32_t) GetADCSampleRate() / 1000U);
    194196  SYS_DATA_Init();
    195197  WH_COUNTER_Init();
    196198  AH_COUNTER_Init();
    197 
     199 
    198200  startType_t startType = EEPROM_isFirstStart();
    199201
     
    205207          case FIRST_START_ERROR:                                               EEPROM_fullRestore(&sys_data);            break;
    206208  }
     209 
    207210  HAL_IWDG_Refresh(&hiwdg);
    208211
     
    218221  HAL_IWDG_Refresh(&hiwdg);
    219222  LoadBackupRegister();
    220 
     223 
    221224  // Modbus Initialisierung
    222225  mbInit(&modbusData, sys_data.s.parameter.baudrate, sys_data.s.parameter.parityMode, sys_data.s.parameter.stopBit, &huart2);
    223226  HAL_IWDG_Refresh(&hiwdg);
    224     // STM32G0 Chiptemperatur Kalibrierung
     227  // STM32G0 Chiptemperatur Kalibrierung
    225228  CHIP_TEMPERATURE_Calibration();
    226229
     
    247250  printf("ADS1260 Init\n");
    248251  OUTPUTS_Init();
    249 
     252 
    250253  //Display Adress with Error LED blinks
    251254  for (int n = 0; n < sys_data.s.parameter.slave_address; n++)
     
    260263        HAL_IWDG_Refresh(&hiwdg);
    261264  }
    262 
     265 
    263266  /* USER CODE END 2 */
    264267
    265268  /* USBPD initialisation ---------------------------------*/
    266269  MX_USBPD_Init();
    267 
     270 
    268271  /* Infinite loop */
    269272  /* USER CODE BEGIN WHILE */
     
    274277
    275278    /* USER CODE BEGIN 3 */
    276         HAL_IWDG_Refresh(&hiwdg);
    277         if (newADC124Data == 1)
     279    HAL_IWDG_Refresh(&hiwdg);
     280    if (newADC124Data == 7)
    278281    {
    279282          SHUNT_VOLTAGE_Exec( adc4Data[0]);
     
    287290          newADC124Data = 0;
    288291
     292        //Auskommentiert, bringt komiscxherweise Spannungsschwankungen, beim loggen,... Spannung springt bis zu 50mv
     293        //   HAL_ADCEx_Calibration_Start(&hadc1, ADC_DIFFERENTIAL_ENDED);
     294        //   HAL_ADCEx_Calibration_Start(&hadc2, ADC_DIFFERENTIAL_ENDED);
     295        //   HAL_ADCEx_Calibration_Start(&hadc4, ADC_DIFFERENTIAL_ENDED);
     296
     297
     298
     299
    289300          if (HAL_ADC_Start_DMA(&hadc1,(uint32_t*)adc1Data,SAMPLE_ARRAY_SIZE)) Error_Handler(); //Start ADC interleaved mode
    290301          if (HAL_ADC_Start_DMA(&hadc2,(uint32_t*)adc2Data,SAMPLE_ARRAY_SIZE)) Error_Handler(); //Start ADC interleaved mode
     302          if (HAL_ADC_Start_DMA(&hadc4,(uint32_t*)adc4Data,SAMPLE_ARRAY_SIZE)) Error_Handler(); //Start ADC interleaved mode
    291303        }
    292304
     
    356368      if (silentmode == 0)
    357369      {
    358         HAL_GPIO_TogglePin(LED_FUNCTION_GPIO_Port, LED_FUNCTION_Pin);
     370        //HAL_GPIO_TogglePin(LED_FUNCTION_GPIO_Port, LED_FUNCTION_Pin);
    359371                //HAL_GPIO_TogglePin(AUX_EN_GPIO_Port, AUX_EN_Pin);
    360372      }
     
    379391
    380392      sys_data.s.values.efficiency = EFFICIENCY_Exec();
    381 
    382 #ifdef DEBUG
    383           /*if (sys_data.s.values.onTime % 5U == 0U)
    384           {
    385                   static char* Buf = "Hello everybody!\r\n";
    386                   const unsigned BufLen = strlen(Buf);
    387                   CDC_Transmit_FS((uint8_t*)Buf, BufLen - 1);
    388           }*/
    389 #endif
    390393    }
    391394
     
    421424          case COMMAND_SET_RDP_LEVEL1_AND_BOOTSEL:            SetBootFromFlashAndReadOutProtection();                                                                     break;
    422425                  case COMMAND_GOTO_SYS_BOOTLOADER:                                       bootLoaderMark = GOTO_SYSTEM_BOOTLOADER_MARK;
    423                                                                                                                           HAL_NVIC_SystemReset();
     426                                                                                                                          HAL_NVIC_SystemReset();                                                                                                         break;
     427                  case COMMAND_SET_VOLTAGE_MEAS_TO_ZERO:                          BATTERY_VOLTAGE_ZeroCal();                                                                                              break;         
     428                                                                                                                       
    424429          default:                                            printf("UNKNOWN COMMAND\n");
    425430        }
     
    799804 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
    800805 {
    801     if (hadc->Instance==ADC1)
     806        if (hadc->Instance==ADC1)
    802807        {
    803           newADC124Data=1;
    804         }
    805 
    806         if (hadc->Instance==ADC3)
     808          newADC124Data |= 1;
     809        }
     810        else if (hadc->Instance == ADC2)
     811        {
     812          newADC124Data |= 2;
     813        }
     814        else if (hadc->Instance==ADC3)
    807815        {
    808816          newADC3Data=1;
    809817        }
    810 
    811         if (hadc->Instance==ADC5)
     818        else if (hadc->Instance==ADC4)
     819        {
     820          newADC124Data |=4;
     821        }
     822        else if (hadc->Instance==ADC5)
    812823        {
    813824          newADC5Data=1;
     
    10661077        }
    10671078}
     1079
    10681080
    10691081/* USER CODE END 4 */
  • trunk/fw_g473rct/Core/Src/stm32g4xx_it.c

    r69 r71  
    429429
    430430/* USER CODE BEGIN 1 */
     431
    431432void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
    432433{
  • trunk/fw_g473rct/Core/Src/system_stm32g4xx.c

    r20 r71  
    189189#endif /* USER_VECT_TAB_ADDRESS */
    190190}
     191
    191192
    192193/**
  • trunk/fw_g473rct/Core/Src/tim.c

    r55 r71  
    6363  }
    6464  /* USER CODE BEGIN TIM3_Init 2 */
    65   HAL_TIM_Base_Start(&htim3);
     65  HAL_TIM_Base_Start_IT(&htim3);
    6666
    6767  /* USER CODE END TIM3_Init 2 */
  • trunk/fw_g473rct/Core/Src/ucpd.c

    r58 r71  
    2121#include "ucpd.h"
    2222
     23
    2324/* USER CODE BEGIN 0 */
     25
     26#include "stm32g4xx_ll_bus.h"
     27
     28#include "stm32g4xx_ll_gpio.h"
     29#include "stm32g4xx_ll_dma.h"
     30
    2431
    2532/* USER CODE END 0 */
Note: See TracChangeset for help on using the changeset viewer.