Changeset 24


Ignore:
Timestamp:
Aug 31, 2025, 6:56:29 PM (3 days ago)
Author:
f.jahn
Message:

Shunt Temperatursensor aktiviert

Location:
trunk/fw_g473rct
Files:
13 edited
2 moved

Legend:

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

    r22 r24  
    4242/* Exported constants --------------------------------------------------------*/
    4343/* USER CODE BEGIN EC */
    44 
     44#define VREF                                                              3000.0
    4545/* USER CODE END EC */
    4646
  • trunk/fw_g473rct/Core/Src/adc.c

    r22 r24  
    5454  */
    5555  hadc1.Instance = ADC1;
    56   hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
     56  hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
    5757  hadc1.Init.Resolution = ADC_RESOLUTION_12B;
    5858  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    9292  sConfig.Channel = ADC_CHANNEL_1;
    9393  sConfig.Rank = ADC_REGULAR_RANK_1;
    94   sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
     94  sConfig.SamplingTime = ADC_SAMPLETIME_6CYCLES_5;
    9595  sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED;
    9696  sConfig.OffsetNumber = ADC_OFFSET_NONE;
     
    122122  */
    123123  hadc2.Instance = ADC2;
    124   hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
     124  hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
    125125  hadc2.Init.Resolution = ADC_RESOLUTION_12B;
    126126  hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    148148  sConfig.Channel = ADC_CHANNEL_3;
    149149  sConfig.Rank = ADC_REGULAR_RANK_1;
     150  sConfig.SamplingTime = ADC_SAMPLETIME_6CYCLES_5;
     151  sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED;
     152  sConfig.OffsetNumber = ADC_OFFSET_NONE;
     153  sConfig.Offset = 0;
     154  if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
     155  {
     156    Error_Handler();
     157  }
     158  /* USER CODE BEGIN ADC2_Init 2 */
     159
     160  /* USER CODE END ADC2_Init 2 */
     161
     162}
     163/* ADC3 init function */
     164void MX_ADC3_Init(void)
     165{
     166
     167  /* USER CODE BEGIN ADC3_Init 0 */
     168
     169  /* USER CODE END ADC3_Init 0 */
     170
     171  ADC_MultiModeTypeDef multimode = {0};
     172  ADC_ChannelConfTypeDef sConfig = {0};
     173
     174  /* USER CODE BEGIN ADC3_Init 1 */
     175
     176  /* USER CODE END ADC3_Init 1 */
     177
     178  /** Common config
     179  */
     180  hadc3.Instance = ADC3;
     181  hadc3.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
     182  hadc3.Init.Resolution = ADC_RESOLUTION_12B;
     183  hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     184  hadc3.Init.GainCompensation = 0;
     185  hadc3.Init.ScanConvMode = ADC_SCAN_ENABLE;
     186  hadc3.Init.EOCSelection = ADC_EOC_SEQ_CONV;
     187  hadc3.Init.LowPowerAutoWait = DISABLE;
     188  hadc3.Init.ContinuousConvMode = ENABLE;
     189  hadc3.Init.NbrOfConversion = 3;
     190  hadc3.Init.DiscontinuousConvMode = DISABLE;
     191  hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START;
     192  hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
     193  hadc3.Init.DMAContinuousRequests = ENABLE;
     194  hadc3.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
     195  hadc3.Init.OversamplingMode = ENABLE;
     196  hadc3.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_256;
     197  hadc3.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_4;
     198  hadc3.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER;
     199  hadc3.Init.Oversampling.OversamplingStopReset = ADC_REGOVERSAMPLING_CONTINUED_MODE;
     200  if (HAL_ADC_Init(&hadc3) != HAL_OK)
     201  {
     202    Error_Handler();
     203  }
     204
     205  /** Configure the ADC multi-mode
     206  */
     207  multimode.Mode = ADC_MODE_INDEPENDENT;
     208  if (HAL_ADCEx_MultiModeConfigChannel(&hadc3, &multimode) != HAL_OK)
     209  {
     210    Error_Handler();
     211  }
     212
     213  /** Configure Regular Channel
     214  */
     215  sConfig.Channel = ADC_CHANNEL_1;
     216  sConfig.Rank = ADC_REGULAR_RANK_1;
    150217  sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
    151218  sConfig.SingleDiff = ADC_SINGLE_ENDED;
    152219  sConfig.OffsetNumber = ADC_OFFSET_NONE;
    153220  sConfig.Offset = 0;
    154   if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
    155   {
    156     Error_Handler();
    157   }
    158   /* USER CODE BEGIN ADC2_Init 2 */
    159 
    160   /* USER CODE END ADC2_Init 2 */
    161 
    162 }
    163 /* ADC3 init function */
    164 void MX_ADC3_Init(void)
    165 {
    166 
    167   /* USER CODE BEGIN ADC3_Init 0 */
    168 
    169   /* USER CODE END ADC3_Init 0 */
    170 
    171   ADC_MultiModeTypeDef multimode = {0};
    172   ADC_ChannelConfTypeDef sConfig = {0};
    173 
    174   /* USER CODE BEGIN ADC3_Init 1 */
    175 
    176   /* USER CODE END ADC3_Init 1 */
    177 
    178   /** Common config
    179   */
    180   hadc3.Instance = ADC3;
    181   hadc3.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
    182   hadc3.Init.Resolution = ADC_RESOLUTION_12B;
    183   hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT;
    184   hadc3.Init.GainCompensation = 0;
    185   hadc3.Init.ScanConvMode = ADC_SCAN_DISABLE;
    186   hadc3.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
    187   hadc3.Init.LowPowerAutoWait = DISABLE;
    188   hadc3.Init.ContinuousConvMode = ENABLE;
    189   hadc3.Init.NbrOfConversion = 1;
    190   hadc3.Init.DiscontinuousConvMode = DISABLE;
    191   hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START;
    192   hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
    193   hadc3.Init.DMAContinuousRequests = ENABLE;
    194   hadc3.Init.Overrun = ADC_OVR_DATA_PRESERVED;
    195   hadc3.Init.OversamplingMode = DISABLE;
    196   if (HAL_ADC_Init(&hadc3) != HAL_OK)
    197   {
    198     Error_Handler();
    199   }
    200 
    201   /** Configure the ADC multi-mode
    202   */
    203   multimode.Mode = ADC_MODE_INDEPENDENT;
    204   if (HAL_ADCEx_MultiModeConfigChannel(&hadc3, &multimode) != HAL_OK)
    205   {
    206     Error_Handler();
    207   }
    208 
    209   /** Configure Regular Channel
    210   */
    211   sConfig.Channel = ADC_CHANNEL_1;
    212   sConfig.Rank = ADC_REGULAR_RANK_1;
    213   sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
    214   sConfig.SingleDiff = ADC_SINGLE_ENDED;
    215   sConfig.OffsetNumber = ADC_OFFSET_NONE;
    216   sConfig.Offset = 0;
     221  if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
     222  {
     223    Error_Handler();
     224  }
     225
     226  /** Configure Regular Channel
     227  */
     228  sConfig.Channel = ADC_CHANNEL_12;
     229  sConfig.Rank = ADC_REGULAR_RANK_2;
     230  if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
     231  {
     232    Error_Handler();
     233  }
     234
     235  /** Configure Regular Channel
     236  */
     237  sConfig.Channel = ADC_CHANNEL_5;
     238  sConfig.Rank = ADC_REGULAR_RANK_3;
    217239  if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
    218240  {
     
    241263  */
    242264  hadc4.Instance = ADC4;
    243   hadc4.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
     265  hadc4.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
    244266  hadc4.Init.Resolution = ADC_RESOLUTION_12B;
    245267  hadc4.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    255277  hadc4.Init.DMAContinuousRequests = ENABLE;
    256278  hadc4.Init.Overrun = ADC_OVR_DATA_PRESERVED;
    257   hadc4.Init.OversamplingMode = DISABLE;
     279  hadc4.Init.OversamplingMode = ENABLE;
     280  hadc4.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_256;
     281  hadc4.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_4;
     282  hadc4.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER;
     283  hadc4.Init.Oversampling.OversamplingStopReset = ADC_REGOVERSAMPLING_CONTINUED_MODE;
    258284  if (HAL_ADC_Init(&hadc4) != HAL_OK)
    259285  {
     
    265291  sConfig.Channel = ADC_CHANNEL_4;
    266292  sConfig.Rank = ADC_REGULAR_RANK_1;
    267   sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
     293  sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
    268294  sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED;
    269295  sConfig.OffsetNumber = ADC_OFFSET_NONE;
     
    295321  */
    296322  hadc5.Instance = ADC5;
    297   hadc5.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV256;
     323  hadc5.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
    298324  hadc5.Init.Resolution = ADC_RESOLUTION_12B;
    299325  hadc5.Init.DataAlign = ADC_DATAALIGN_RIGHT;
     
    309335  hadc5.Init.DMAContinuousRequests = ENABLE;
    310336  hadc5.Init.Overrun = ADC_OVR_DATA_PRESERVED;
    311   hadc5.Init.OversamplingMode = DISABLE;
     337  hadc5.Init.OversamplingMode = ENABLE;
     338  hadc5.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_256;
     339  hadc5.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_4;
     340  hadc5.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER;
     341  hadc5.Init.Oversampling.OversamplingStopReset = ADC_REGOVERSAMPLING_CONTINUED_MODE;
    312342  if (HAL_ADC_Init(&hadc5) != HAL_OK)
    313343  {
     
    319349  sConfig.Channel = ADC_CHANNEL_TEMPSENSOR_ADC5;
    320350  sConfig.Rank = ADC_REGULAR_RANK_1;
    321   sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
     351  sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
    322352  sConfig.SingleDiff = ADC_SINGLE_ENDED;
    323353  sConfig.OffsetNumber = ADC_OFFSET_NONE;
     
    330360  /** Configure Regular Channel
    331361  */
    332   sConfig.Channel = ADC_CHANNEL_1;
     362  sConfig.Channel = ADC_CHANNEL_VBAT;
    333363  sConfig.Rank = ADC_REGULAR_RANK_2;
    334364  if (HAL_ADC_ConfigChannel(&hadc5, &sConfig) != HAL_OK)
     
    339369  /** Configure Regular Channel
    340370  */
     371  sConfig.Channel = ADC_CHANNEL_2;
    341372  sConfig.Rank = ADC_REGULAR_RANK_3;
    342373  if (HAL_ADC_ConfigChannel(&hadc5, &sConfig) != HAL_OK)
     
    347378  /** Configure Regular Channel
    348379  */
     380  sConfig.Channel = ADC_CHANNEL_1;
    349381  sConfig.Rank = ADC_REGULAR_RANK_4;
    350382  if (HAL_ADC_ConfigChannel(&hadc5, &sConfig) != HAL_OK)
     
    375407  */
    376408    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12;
    377     PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK;
     409    PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_PLL;
    378410    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    379411    {
     
    428460  */
    429461    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12;
    430     PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK;
     462    PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_PLL;
    431463    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    432464    {
     
    443475    /**ADC2 GPIO Configuration
    444476    PA6     ------> ADC2_IN3
    445     */
    446     GPIO_InitStruct.Pin = ADC2_IN3_UBAT__Pin;
     477    PA7     ------> ADC2_IN4
     478    */
     479    GPIO_InitStruct.Pin = ADC2_IN3_UBAT__Pin|GPIO_PIN_7;
    447480    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
    448481    GPIO_InitStruct.Pull = GPIO_NOPULL;
    449     HAL_GPIO_Init(ADC2_IN3_UBAT__GPIO_Port, &GPIO_InitStruct);
     482    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    450483
    451484    /* ADC2 DMA Init */
     
    480513  */
    481514    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345;
    482     PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_SYSCLK;
     515    PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_PLL;
    483516    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    484517    {
     
    534567  */
    535568    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345;
    536     PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_SYSCLK;
     569    PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_PLL;
    537570    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    538571    {
     
    587620  */
    588621    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC345;
    589     PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_SYSCLK;
     622    PeriphClkInit.Adc345ClockSelection = RCC_ADC345CLKSOURCE_PLL;
    590623    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    591624    {
     
    672705    /**ADC2 GPIO Configuration
    673706    PA6     ------> ADC2_IN3
    674     */
    675     HAL_GPIO_DeInit(ADC2_IN3_UBAT__GPIO_Port, ADC2_IN3_UBAT__Pin);
     707    PA7     ------> ADC2_IN4
     708    */
     709    HAL_GPIO_DeInit(GPIOA, ADC2_IN3_UBAT__Pin|GPIO_PIN_7);
    676710
    677711    /* ADC2 DMA DeInit */
  • trunk/fw_g473rct/Core/Src/main.c

    r20 r24  
    148148  RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV2;
    149149  RCC_OscInitStruct.PLL.PLLN = 16;
    150   RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
     150  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
    151151  RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
    152152  RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
  • trunk/fw_g473rct/SES/inc/fast_current.h

    r20 r24  
    2020
    2121//--- GLOBALE FUNKTIONS PROTOTYPEN ---------------------------------------------
    22 void FAST_CURRENT_Exec(uint32_t newvalP, uint32_t newvalM );
     22void FAST_CURRENT_Exec(uint32_t newVal );
    2323
    2424#endif //
  • trunk/fw_g473rct/SES/inc/int_bat_voltage.h

    r23 r24  
    2626* @retval       kein
    2727*/
    28 void REF_VOLTAGE_Exec(uint32_t newval);
     28void INT_BAT_VOLTAGE_Exec(uint32_t newval);
    2929
    3030#endif // __REF_VOLTAGE_H
  • trunk/fw_g473rct/SES/smartPro.emProject

    r22 r24  
    185185      <file file_name="inc/esr.h" />
    186186      <file file_name="inc/fast_current.h" />
     187      <file file_name="inc/int_bat_voltage.h" />
    187188      <file file_name="inc/modbus.h" />
    188189      <file file_name="inc/outputs.h" />
    189       <file file_name="inc/ref_voltage.h" />
    190190      <file file_name="inc/rtc.h" />
    191191      <file file_name="inc/self_discharge.h" />
     
    212212      <file file_name="src/esr.c" />
    213213      <file file_name="src/fast_current.c" />
     214      <file file_name="src/int_bat_voltage.c" />
    214215      <file file_name="src/main.c" />
    215216      <file file_name="src/modbus.c" />
    216217      <file file_name="src/outputs.c" />
    217       <file file_name="src/ref_voltage.c" />
    218218      <file file_name="src/self_discharge.c" />
    219219      <file file_name="src/shunt_temperature.c" />
  • trunk/fw_g473rct/SES/src/battery_voltage.c

    r22 r24  
    1313#include "main.h"
    1414#include "sysdata.h"
    15 
     15#include <stdio.h>
    1616//      --- EXTERNE VARIABLEN --------------------------------------------------------
    1717
    1818//      --- LOKALE DEFINES - bitte hier dokumentieren --------------------------------
    19 #define BATTERY_VOLTAGE_FILTER  256
     19#define BATTERY_VOLTAGE_FILTER  32
    2020
    2121
    22 #define BATTERY_VOLTAGE_VOLTAGE_DIVIDER       6
    23 #define ADC_RESOLUTION                                            65536 //65536/2 da im differential mode
    24 #define ADC_OFFSET                                                        0
    25 #define VREF                                                              3000
     22#define BATTERY_VOLTAGE_VOLTAGE_DIVIDER       6.0
     23#define ADC_RESOLUTION                                            32768.0 //65536/2 da im differential mode
     24#define ADC_OFFSET                                                        32768.0
     25
    2626//      --- LOKALE TYPE DEFS - bitte hier dokumentieren-------------------------------
    2727
     
    3737
    3838
    39 void BATTERY_VOLTAGE_Exec(int32_t newvalP )
     39void BATTERY_VOLTAGE_Exec(int32_t newVal)
    4040{
    4141  static int measCounter;
    42   static unsigned long avgsumP = 0;
    43   int32_t avgvalP;
    44 
     42  static unsigned long avgSum = 0;
     43  int32_t avgVal;
    4544  if (measCounter < INT32_MAX) measCounter++;
    4645
    4746
    4847  // Filterlängen in 2er-Potenzen --> Compiler optimiert
    49   avgsumP -= avgsumP / BATTERY_VOLTAGE_FILTER;
    50   avgsumP += newvalP;
    51   avgvalP = avgsumP / BATTERY_VOLTAGE_FILTER;
     48  avgSum -= avgSum / BATTERY_VOLTAGE_FILTER;
     49  avgSum += newVal;
     50  avgVal =  avgSum / BATTERY_VOLTAGE_FILTER;
    5251
    5352 
     
    5554
    5655  //Umrechung auf Eingangsspannung am Gerät mit Teiler
    57   sys_data.s.values.batteryVoltage = ((avgvalP-2048) * 3000 * BATTERY_VOLTAGE_VOLTAGE_DIVIDER ) / 2048;
     56  sys_data.s.values.batteryVoltage = ((avgVal-ADC_OFFSET) * VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER ) / ADC_RESOLUTION;
    5857
    5958 
     
    7574
    7675
    77   //Berechnung schnellen Wert ohne Glättung:
     76  //Berechnung schnelle Wert ohne Glättung:
    7877  //Umrechung auf Eingangsspannung am Gerät mit Teiler
    79   sys_data.s.values.fast_voltage = ((newvalP-ADC_OFFSET) * VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER ) / ADC_RESOLUTION;
     78  sys_data.s.values.fast_voltage = ((newVal-ADC_OFFSET) * VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER ) / ADC_RESOLUTION;
    8079
    8180
  • trunk/fw_g473rct/SES/src/chip_temperature.c

    r20 r24  
    2424//      --- LOKALE VARIABLEN - bitte hier dokumentieren ------------------------------
    2525uint32_t calTemperatureSensor30Value;  // Kalibrierungswert für den Temperatursensor auf dem STM32G0 (Werksmäßig im SCB Bereich gespeichert wird beim Programmstart ausgelesen)
    26 uint32_t calTemperatureSensor130Value; // Kalibrierungswert für den Temperatursensor auf dem STM32G0 (Werksmäßig im SCB Bereich gespeichert wird beim Programmstart ausgelesen)
     26uint32_t calTemperatureSensor110Value; // Kalibrierungswert für den Temperatursensor auf dem STM32G0 (Werksmäßig im SCB Bereich gespeichert wird beim Programmstart ausgelesen)
    2727uint32_t calTemperatureSensorDiff;     // Differenz calTemperatureSensor130Value und calTemperatureSensor30Value wird für die Kalibrierung des internen Temperatursensors bentigt
    2828                                                              // Daten Temperaturanzeige µProzessor
    29 
     29double slope;
    3030//      --- LOKALE FUNKTIONS PROTOTYPEN ----------------------------------------------
    3131
     
    4646  uint16_t * pCalibrationData;
    4747  float calibrationData30;
    48   float calibrationData130;
     48  float calibrationData110;
    4949
    5050  // lade Temperatur Kalibrierungswert (Wert bei 30°C)
     
    5555  //Berechnung Spannung in mV bei CAL Punk 30°C
    5656  //Kalbibrierung wurde mit 12 Bit und 3000mV Vref durchgeführt
    57   calibrationData30 = calibrationData30 / 4096;
    58   calTemperatureSensor30Value = calibrationData30 * 3000 ;      // jetzt haben wir die Kalibrierungsspannung in Volt bei 30°C;
     57  calTemperatureSensor30Value = (calibrationData30 * 3000) / 4096 ;      // jetzt haben wir die Kalibrierungsspannung in Volt bei 30°C;
    5958
    6059  pCalibrationData = (uint16_t *)TEMPSENSOR_CAL2_ADDR;
    61   calibrationData130  = * pCalibrationData;
     60  calibrationData110  = * pCalibrationData;
    6261
    63   //Berechnung Spannung in mV bei CAL Punk 130°C
     62  //Berechnung Spannung in mV bei CAL Punk 110°C
    6463  //Kalbibrierung wurde mit 12 Bit und 3000mV Vref durchgeführt
    65   calibrationData130 = calibrationData130 / 4096;
    66   calTemperatureSensor130Value = calibrationData130 * 3000;      // jetzt haben wir die Kalibrierungsspannung in Volt bei 130°C;
     64  calTemperatureSensor110Value = (calibrationData110 * 3000 / 4096);      // jetzt haben wir die Kalibrierungsspannung in Volt bei 110°C;
    6765
    6866  // Spannungsdifferenz bei 100 Kelvin Temperatureunterschied
    69   calTemperatureSensorDiff = (calTemperatureSensor130Value - calTemperatureSensor30Value);
     67  // Slope enthält die Änderung in mV pro °C
     68  calTemperatureSensorDiff = (calTemperatureSensor110Value - calTemperatureSensor30Value);
     69  slope = (double) calTemperatureSensorDiff / (TEMPSENSOR_CAL2_TEMP - TEMPSENSOR_CAL1_TEMP);
     70
     71
    7072}
    7173
    7274void CHIP_TEMPERATURE_Exec(uint32_t chiptemperature)
    7375{
    74     int32_t voltage;
     76    double voltage;
    7577    //Aktuelle Spannung am Temp Sensor
    76     voltage = (3300 * chiptemperature) / 65536;
     78    voltage = (3000 * chiptemperature) / 65536;
    7779
    7880
    7981    voltage = voltage - calTemperatureSensor30Value;
    80     voltage = voltage * 100000; //100000 da Kalibrierwerte 100 Kelvin Delta T haben und wir alles in m°C rechnen
    81     voltage = voltage / (int32_t)(calTemperatureSensorDiff);
    82     voltage = voltage + 30000; //30000 da Erste Kalibrierpunkt bei 30°C --> 30 000 m°C
     82    voltage = voltage  / slope;
     83    voltage = voltage + 30.0;
    8384
    84     //Durch 10 teilen, damit es in 16 Bit signed modbus register passt
    85     sys_data.s.values.chipTemperature = voltage /10 ;
     85        //*100 für Kommastellen
     86    sys_data.s.values.chipTemperature = voltage * 100 ;
    8687
    8788        calc_temp_compensation();
  • trunk/fw_g473rct/SES/src/fast_current.c

    r20 r24  
    1717
    1818//      --- LOKALE DEFINES - bitte hier dokumentieren --------------------------------
    19 //#define FAST_CURRENT_FILTER  2
    20 
    21 
    2219
    2320#define I_SENSE_GAIN    40.0
     21#define ADC_OFFSET                                                        32768
     22#define ADC_RESOLUTION                                            32768 //65536/2 da im differential mode
    2423
    2524
     
    5150
    5251
    53 void FAST_CURRENT_Exec(uint32_t newvalP, uint32_t newvalM )
     52void FAST_CURRENT_Exec(uint32_t newVal )
    5453{
    55   static int measCounter;
    56   static unsigned long avgsumP = 0;
    57   uint32_t avgvalP;
    58 
    59   if (measCounter < INT32_MAX) measCounter++;
    60 
    61 
    62   // Filterlängen in 2er-Potenzen --> Compiler optimiert
    63  // avgsumP -= avgsumP / FAST_CURRENT_FILTER;
    64  // avgsumP += newvalP;
    65 //  avgvalP = avgsumP / FAST_CURRENT_FILTER;
    66 
    67 //  static unsigned long avgsumM = 0;
    68 //  uint32_t avgvalM;
    69   // Filterlängen in 2er-Potenzen --> Compiler optimiert
    70 //  avgsumM -= avgsumM / FAST_CURRENT_FILTER;
    71 //  avgsumM += newvalM;
    72 //  avgvalM = avgsumM / FAST_CURRENT_FILTER;
    73 
    74 
    75   //Berechne Differenzspannung am ADC Eingnag
    76   double diff;
    77   diff = (int32_t) newvalP - (int32_t) newvalM;
    78   diff = (diff * sys_data.s.values.realVdd)  / 65536;
    79 
     54 
    8055  //Umrechung auf Strom
    8156  double temp_current;
    82   temp_current = (diff / I_SENSE_GAIN) /  SHUNT_RESISTOR;
     57  temp_current = ((int32_t) newVal - ADC_OFFSET) * VREF ;
     58  temp_current = temp_current / ADC_RESOLUTION;
     59  temp_current = temp_current / I_SENSE_GAIN ;
     60  temp_current = temp_current / SHUNT_RESISTOR ;
    8361  sys_data.s.values.fast_current = temp_current * (sys_data.s.parameter.batteryCurrentGainCorrectionFaktor / 1000000.0);
    8462 
  • trunk/fw_g473rct/SES/src/int_bat_voltage.c

    r23 r24  
    1212#include "main.h"
    1313#include "sysdata.h"
     14#include "int_bat_voltage.h"
    1415//      --- EXTERNE VARIABLEN --------------------------------------------------------
    1516
     
    3435
    3536//      --- GLOBALE FUNKTIONEN - bitte in Header dokumentieren------------------------
    36 void REF_VOLTAGE_Exec(uint32_t newval)
     37void INT_BAT_VOLTAGE_Exec(uint32_t newval)
    3738{
    38    static unsigned long avgsum = 0;
    39    uint32_t avgval;
    40    // Filterlängen in 2er-Potenzen --> Compiler optimiert
    41    avgsum -= avgsum / REF_FILTER;
    42    avgsum += newval;
    43    avgval = avgsum / REF_FILTER;
    44 
    4539  // Messung Externe Spannung basierend auf 3,3V Versorgungsspannung
    4640  // Nur für Debug Zwecke
    47   sys_data.s.values.voltageVref =  (avgval * 3300) / 65536;
     41  sys_data.s.values.voltageVref = VREF;
    4842 
    49   // Ermittlung Vdd als Referenz
    50   sys_data.s.values.realVdd =  3000L * 65536 / avgval;;
     43 
     44  sys_data.s.values.realVdd =  3 * (newval * VREF) / 65536;
    5145}
    5246/*************************** End of file ****************************/
  • trunk/fw_g473rct/SES/src/main.c

    r23 r24  
    3939#include "battery_voltage.h"
    4040#include "ads1260.h"
     41#include "shunt_voltage.h"
     42#include "fast_current.h"
     43#include "int_bat_voltage.h"
     44#include "chip_temperature.h"
     45#include "shunt_temperature.h"
    4146/* USER CODE END Includes */
    4247
     
    6166modbus_t modbusData __attribute__((section(".RAM1")));
    6267
    63 __IO uint16_t adc12Data[2] __attribute__((section(".RAM1")));
     68__IO uint16_t adc12Data[100][2] __attribute__((section(".RAM1")));
    6469__IO uint32_t adc1Data[1] __attribute__((section(".RAM1")));
    6570__IO uint32_t adc2Data[1] __attribute__((section(".RAM1")));
     
    6873__IO uint32_t adc5Data[4] __attribute__((section(".RAM1")));
    6974int silentmode =0;
    70 static volatile uint32_t newADC1Data = 0;
    71 static volatile uint32_t newADC2Data = 0;
     75static volatile uint32_t newADC12Data = 0;
     76static volatile uint32_t newADC3Data = 0;
     77static volatile uint32_t newADC4Data = 0;
     78static volatile uint32_t newADC5Data = 0;
    7279/* USER CODE END PV */
    7380
     
    95102    uint8_t firstStartCatcher;
    96103        int mode_button_disable_time=0;
     104        uint32_t adc12_time;
     105        uint32_t adc12_lasttime;
    97106  /* USER CODE END 1 */
    98107
     
    160169
    161170    // STM32G0 Chiptemperatur Kalibrierung
    162   CHIP_TEMPERATURE_Calibration(/*&sys_data*/);
     171  CHIP_TEMPERATURE_Calibration();
    163172
    164173  HAL_ADCEx_Calibration_Start(&hadc1, ADC_DIFFERENTIAL_ENDED);
     
    169178
    170179
    171 
    172180  //SET_BIT(hadc2.Instance->CFGR, ADC_CFGR_DMAEN); //Enable DMA transfer for ADC slave (ADC12_CCR.MDMA = 0b00 -> MDMA mode disabled)
    173181  //HAL_DMA_Start(hadc2.DMA_Handle,(uint32_t)&hadc2.Instance->DR, (uint32_t)adc2Data,1); //Start ADC slave DMA
     
    175183 
    176184    //HAL_ADC_Start_DMA(&hadc2, (uint32_t*)adc2Data, 1);
    177   if (HAL_ADCEx_MultiModeStart_DMA(&hadc1,(uint32_t *)adc12Data,1))  //Start ADC interleaved mode
     185  if (HAL_ADCEx_MultiModeStart_DMA(&hadc1,(uint32_t *)adc12Data,100))  //Start ADC interleaved mode
    178186  {
    179187     /* Start Error */
    180188     Error_Handler();
    181189  }
     190
     191  if (HAL_ADC_Start_DMA(&hadc3, (uint32_t *) adc3Data , 3))
     192  {
     193     /* Start Error */
     194     Error_Handler();
     195  }
     196
     197  if (HAL_ADC_Start_DMA(&hadc4, (uint32_t *) adc4Data , 1))
     198  {
     199     /* Start Error */
     200     Error_Handler();
     201  }
     202
    182203
    183204  if (HAL_ADC_Start_DMA(&hadc5, (uint32_t *) adc5Data , 4))
     
    196217
    197218    /* USER CODE BEGIN 3 */
    198         if (newADC1Data == 1)
    199     {
    200           BATTERY_VOLTAGE_Exec( adc12Data[1]);
    201         }
    202 
     219        if (newADC12Data == 1)
     220    {
     221          //Mit ADC_DIV2,Sample time 12,5Cycklen, ADC Clock 50Mhz, Oversampling 256
     222          //Tconv = 6400 Takte = 0,128ms Pro Konvertierung. Also für 100 messwerte 12,8mS
     223          BATTERY_VOLTAGE_Exec( adc12Data[0][1]);
     224          FAST_CURRENT_Exec(adc12Data[0][0]);
     225          newADC12Data = 0;
     226          adc12_time = HAL_GetTick() - adc12_lasttime;
     227          adc12_lasttime = HAL_GetTick();
     228
     229        }
     230
     231
     232        if (newADC3Data == 1)
     233    {
     234          SHUNT_TEMPERATURE_Exec(adc3Data[0]);
     235        }
     236
     237
     238        if (newADC4Data == 1)
     239    {
     240          SHUNT_VOLTAGE_Exec( adc4Data[0]);
     241        }
     242
     243
     244        if (newADC5Data == 1)
     245    {
     246          CHIP_TEMPERATURE_Exec(adc5Data[0]);
     247          INT_BAT_VOLTAGE_Exec( adc5Data[1]);
     248          sys_data.s.values.ovp_sense =  (adc5Data[2] * VREF * 21 ) / 65536.0;
     249      sys_data.s.values.lvp_sense =  (adc5Data[3] * VREF * 21 ) / 65536.0;
     250        }
    203251
    204252        if(sys_data.s.parameter.command != 0)
     
    327375    if (hadc->Instance==ADC1)
    328376        {
    329           newADC1Data=1;
    330         }
    331 
    332         if (hadc->Instance==ADC2)
     377          newADC12Data=1;
     378        }
     379
     380        if (hadc->Instance==ADC3)
    333381        {
    334           newADC2Data=1;
     382          newADC3Data=1;
     383        }
     384
     385
     386        if (hadc->Instance==ADC4)
     387        {
     388          newADC4Data=1;
     389        }
     390
     391        if (hadc->Instance==ADC5)
     392        {
     393          newADC5Data=1;
    335394        }
    336395 }
  • trunk/fw_g473rct/SES/src/modbus.c

    r23 r24  
    183183        }
    184184       
    185         uint32_t fixedDelayInBitDurations = (FAST_BAUDRATE_INTERFRAME_DELAY_us * baudrate) / 1000000UL + 1UL;
    186 //      HAL_UART_EnableReceiverTimeout( usart);
    187 //      HAL_UART_ReceiverTimeout_Config(usart,  fixedDelayInBitDurations);
    188 
    189     if(HAL_UARTEx_ReceiveToIdle_DMA(mb_data->uart, mb_data->rx_buffer, RXBUFFERSIZE) != HAL_OK)
     185       
     186        HAL_UART_EnableReceiverTimeout( usart);
     187        HAL_UART_ReceiverTimeout_Config(usart,  3.5 * nrOfBitsPerChar);
     188        SET_BIT(usart->Instance->CR1, USART_CR1_RTOIE);
     189
     190
     191    if(HAL_UART_Receive_DMA(mb_data->uart, mb_data->rx_buffer, RXBUFFERSIZE) != HAL_OK)
    190192    {
    191193      printf("uart error \n\r");
     
    202204    modbusData.mb_rx_frame_complete = 1;
    203205    modbusData.setRxLed = false;
    204         modbusData.rx_head= 0;
    205 
     206        modbusData.rx_head = huart->RxXferSize - __HAL_DMA_GET_COUNTER(huart->hdmarx);
     207       
    206208
    207209  if (huart->ErrorCode == HAL_UART_ERROR_RTO)
    208210  {
    209         printf("MB RTO Event! \n\r");
     211
     212        // printf("MB RTO Event! \n\r");
     213        // Kein Fehler, normale Funktion
    210214  }
    211215  if (huart->ErrorCode == HAL_UART_ERROR_FE)
     
    240244
    241245
    242   if(HAL_UARTEx_ReceiveToIdle_DMA(huart, huart->pRxBuffPtr, RXBUFFERSIZE) != HAL_OK)
     246 
     247  if(HAL_UART_Receive_DMA(huart, huart->pRxBuffPtr, RXBUFFERSIZE) != HAL_OK)
    243248   {
    244249     printf("Uart Error bei neustart nach Fehler \n\r");
     
    250255}
    251256
    252 void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
    253 {
    254   //printf("MB rxEvent!RX=%d \n\r",Size);
    255   modbusData.setRxLed = true;
    256 
    257   modbusData.mb_rx_frame_complete = 1;
    258   modbusData.rx_head= Size +1;
    259 
    260   if(HAL_UARTEx_ReceiveToIdle_DMA(huart, huart->pRxBuffPtr, RXBUFFERSIZE) != HAL_OK)
    261    {
    262      printf("uart error \n\r");
    263   //   while(1)
    264   //   {
    265   //   }     
    266    }   
    267  
    268 
    269 }
     257//void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
     258//{
     259//  //printf("MB rxEvent!RX=%d \n\r",Size);
     260//  modbusData.setRxLed = true;
     261
     262//  modbusData.mb_rx_frame_complete = 1;
     263//  modbusData.rx_head= Size +1;
     264
     265//  if(HAL_UART_Receive_DMA(huart, huart->pRxBuffPtr, RXBUFFERSIZE) != HAL_OK)
     266//   {
     267//     printf("uart error \n\r");
     268//  //   while(1)
     269//  //   {
     270//  //   }     
     271//   }   
     272 
     273
     274//}
    270275
    271276void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
  • trunk/fw_g473rct/SES/src/shunt_temperature.c

    r20 r24  
    3838void SHUNT_TEMPERATURE_Exec(int32_t adcval)
    3939{
    40   int32_t temp;
     40  double temp;
    4141
    4242
    4343  //Umrechnung Spannung in mV
    44   temp =  (adcval * 3300 ) / 65536;
     44  temp =  (adcval * VREF ) / 65536.0;
    4545
    46   //Umrechnung in °C mit PT 1000 Sensor
    47 //  temp = temp - 747;
    48 //  temp = temp * 70.406;
    4946
    5047  //Umrechnung in °C mit LM61 Sensor
    5148  temp = temp - 600;
    52   temp = temp * 100;
     49  temp = temp / 10;
    5350
    5451  //2Nackommastellen
    5552  //milli grad in grad * 100 /festkomma
    56   sys_data.s.values.shuntTemperature = temp / 10;
     53  sys_data.s.values.shuntTemperature = temp * 100;
    5754
    5855
  • trunk/fw_g473rct/SES/src/shunt_voltage.c

    r20 r24  
    1717
    1818//      --- LOKALE DEFINES - bitte hier dokumentieren --------------------------------
    19 
    20 #define SHUNT_VOLTAGE_DIVIDER       6
     19#define ADC_RESOLUTION                                            32768 //65536/2 da im differential mode
     20#define ADC_OFFSET                                                        32768
     21#define SHUNT_VOLTAGE_DIVIDER                             6
    2122//      --- LOKALE TYPE DEFS - bitte hier dokumentieren-------------------------------
    2223
     
    4445void SHUNT_VOLTAGE_Exec(int32_t newval)
    4546{
    46    static unsigned long avgsum = 0;
    47    uint32_t avgval;
    48    // Filterlängen in 2er-Potenzen --> Compiler optimiert
    49    //avgsum -= avgsum/SHUNT_FILTER;
    50    //avgsum += newval;
    51    //avgval = avgsum / SHUNT_FILTER;
    52 
    53    sys_data.s.values.shuntVoltage =  (newval * (uint64_t)sys_data.s.values.realVdd * SHUNT_VOLTAGE_DIVIDER ) / 65536;
     47   sys_data.s.values.shuntVoltage =  ((newval-ADC_OFFSET) * VREF * SHUNT_VOLTAGE_DIVIDER ) / ADC_RESOLUTION;
    5448
    5549}
  • trunk/fw_g473rct/fw_g473rct.ioc

    r23 r24  
    11#MicroXplorer Configuration settings - do not modify
    22ADC1.Channel-20\#ChannelRegularConversion=ADC_CHANNEL_1
    3 ADC1.ClockPrescaler=ADC_CLOCK_ASYNC_DIV256
     3ADC1.ClockPrescaler=ADC_CLOCK_ASYNC_DIV1
    44ADC1.CommonPathInternal=null|null|null|null
    55ADC1.ContinuousConvMode=ENABLE
     
    77ADC1.DMAContinuousRequests=ENABLE
    88ADC1.EOCSelection=ADC_EOC_SINGLE_CONV
    9 ADC1.IPParameters=Rank-20\#ChannelRegularConversion,master,SingleDiff-20\#ChannelRegularConversion,Channel-20\#ChannelRegularConversion,SamplingTime-20\#ChannelRegularConversion,OffsetNumber-20\#ChannelRegularConversion,NbrOfConversionFlag,Mode,DMAAccessModeView,ContinuousConvMode,OversamplingMode,DMAContinuousRequests,Overrun,ClockPrescaler,EOCSelection,RightBitShift,Ratio,CommonPathInternal
     9ADC1.IPParameters=Rank-20\#ChannelRegularConversion,master,SingleDiff-20\#ChannelRegularConversion,Channel-20\#ChannelRegularConversion,SamplingTime-20\#ChannelRegularConversion,OffsetNumber-20\#ChannelRegularConversion,NbrOfConversionFlag,Mode,DMAAccessModeView,ContinuousConvMode,OversamplingMode,DMAContinuousRequests,Overrun,ClockPrescaler,EOCSelection,NbrOfConversion,RightBitShift,Ratio,CommonPathInternal
    1010ADC1.Mode=ADC_DUALMODE_REGSIMULT
     11ADC1.NbrOfConversion=1
    1112ADC1.NbrOfConversionFlag=1
    1213ADC1.OffsetNumber-20\#ChannelRegularConversion=ADC_OFFSET_NONE
     
    1617ADC1.Ratio=ADC_OVERSAMPLING_RATIO_256
    1718ADC1.RightBitShift=ADC_RIGHTBITSHIFT_4
    18 ADC1.SamplingTime-20\#ChannelRegularConversion=ADC_SAMPLETIME_640CYCLES_5
     19ADC1.SamplingTime-20\#ChannelRegularConversion=ADC_SAMPLETIME_6CYCLES_5
    1920ADC1.SingleDiff-20\#ChannelRegularConversion=ADC_DIFFERENTIAL_ENDED
    2021ADC1.master=1
    2122ADC2.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_3
    22 ADC2.ClockPrescaler=ADC_CLOCK_ASYNC_DIV256
     23ADC2.ClockPrescaler=ADC_CLOCK_ASYNC_DIV1
    2324ADC2.CommonPathInternal=null|null|null|null
    2425ADC2.DMAAccessModeView=ENABLE
    2526ADC2.DMAContinuousRequests=ENABLE
    2627ADC2.EOCSelection=ADC_EOC_SINGLE_CONV
    27 ADC2.IPParameters=Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,OffsetNumber-4\#ChannelRegularConversion,NbrOfConversionFlag,Mode,DMAAccessModeView,EOCSelection,DMAContinuousRequests,Overrun,ClockPrescaler,OversamplingMode,RightBitShift,Ratio,CommonPathInternal
     28ADC2.IPParameters=Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,OffsetNumber-4\#ChannelRegularConversion,NbrOfConversionFlag,Mode,DMAAccessModeView,EOCSelection,DMAContinuousRequests,Overrun,ClockPrescaler,OversamplingMode,RightBitShift,Ratio,SingleDiff-4\#ChannelRegularConversion,CommonPathInternal
    2829ADC2.Mode=ADC_DUALMODE_REGSIMULT
    2930ADC2.NbrOfConversionFlag=1
     
    3435ADC2.Ratio=ADC_OVERSAMPLING_RATIO_256
    3536ADC2.RightBitShift=ADC_RIGHTBITSHIFT_4
    36 ADC2.SamplingTime-4\#ChannelRegularConversion=ADC_SAMPLETIME_640CYCLES_5
     37ADC2.SamplingTime-4\#ChannelRegularConversion=ADC_SAMPLETIME_6CYCLES_5
     38ADC2.SingleDiff-4\#ChannelRegularConversion=ADC_DIFFERENTIAL_ENDED
    3739ADC3.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_1
    38 ADC3.ClockPrescaler=ADC_CLOCK_ASYNC_DIV256
     40ADC3.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_12
     41ADC3.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_5
     42ADC3.ClockPrescaler=ADC_CLOCK_ASYNC_DIV1
    3943ADC3.CommonPathInternal=null|null|null|null
    4044ADC3.ContinuousConvMode=ENABLE
    4145ADC3.DMAContinuousRequests=ENABLE
    42 ADC3.IPParameters=Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,OffsetNumber-1\#ChannelRegularConversion,NbrOfConversionFlag,master,DMAContinuousRequests,ContinuousConvMode,ClockPrescaler,CommonPathInternal
     46ADC3.EOCSelection=ADC_EOC_SEQ_CONV
     47ADC3.IPParameters=Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,OffsetNumber-1\#ChannelRegularConversion,NbrOfConversionFlag,master,DMAContinuousRequests,ContinuousConvMode,ClockPrescaler,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,OffsetNumber-2\#ChannelRegularConversion,NbrOfConversion,EOCSelection,Overrun,OversamplingMode,RightBitShift,Ratio,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,OffsetNumber-4\#ChannelRegularConversion,CommonPathInternal
     48ADC3.NbrOfConversion=3
    4349ADC3.NbrOfConversionFlag=1
    4450ADC3.OffsetNumber-1\#ChannelRegularConversion=ADC_OFFSET_NONE
     51ADC3.OffsetNumber-2\#ChannelRegularConversion=ADC_OFFSET_NONE
     52ADC3.OffsetNumber-4\#ChannelRegularConversion=ADC_OFFSET_NONE
     53ADC3.Overrun=ADC_OVR_DATA_OVERWRITTEN
     54ADC3.OversamplingMode=ENABLE
    4555ADC3.Rank-1\#ChannelRegularConversion=1
    46 ADC3.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5
     56ADC3.Rank-2\#ChannelRegularConversion=2
     57ADC3.Rank-4\#ChannelRegularConversion=3
     58ADC3.Ratio=ADC_OVERSAMPLING_RATIO_256
     59ADC3.RightBitShift=ADC_RIGHTBITSHIFT_4
     60ADC3.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_640CYCLES_5
     61ADC3.SamplingTime-2\#ChannelRegularConversion=ADC_SAMPLETIME_640CYCLES_5
     62ADC3.SamplingTime-4\#ChannelRegularConversion=ADC_SAMPLETIME_640CYCLES_5
    4763ADC3.master=1
    4864ADC4.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_4
    49 ADC4.ClockPrescaler=ADC_CLOCK_ASYNC_DIV256
     65ADC4.ClockPrescaler=ADC_CLOCK_ASYNC_DIV1
    5066ADC4.CommonPathInternal=null|null|null|null
    5167ADC4.ContinuousConvMode=ENABLE
    5268ADC4.DMAContinuousRequests=ENABLE
    53 ADC4.IPParameters=Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SingleDiff-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,OffsetNumber-3\#ChannelRegularConversion,NbrOfConversionFlag,ContinuousConvMode,DMAContinuousRequests,ClockPrescaler,CommonPathInternal
     69ADC4.IPParameters=Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SingleDiff-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,OffsetNumber-3\#ChannelRegularConversion,NbrOfConversionFlag,ContinuousConvMode,DMAContinuousRequests,ClockPrescaler,OversamplingMode,RightBitShift,Ratio,CommonPathInternal
    5470ADC4.NbrOfConversionFlag=1
    5571ADC4.OffsetNumber-3\#ChannelRegularConversion=ADC_OFFSET_NONE
     72ADC4.OversamplingMode=ENABLE
    5673ADC4.Rank-3\#ChannelRegularConversion=1
    57 ADC4.SamplingTime-3\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5
     74ADC4.Ratio=ADC_OVERSAMPLING_RATIO_256
     75ADC4.RightBitShift=ADC_RIGHTBITSHIFT_4
     76ADC4.SamplingTime-3\#ChannelRegularConversion=ADC_SAMPLETIME_640CYCLES_5
    5877ADC4.SingleDiff-3\#ChannelRegularConversion=ADC_DIFFERENTIAL_ENDED
    5978ADC5.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_TEMPSENSOR_ADC5
    60 ADC5.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_1
    61 ADC5.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_1
     79ADC5.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_VBAT
     80ADC5.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_2
    6281ADC5.Channel-5\#ChannelRegularConversion=ADC_CHANNEL_1
    63 ADC5.ClockPrescaler=ADC_CLOCK_ASYNC_DIV256
     82ADC5.ClockPrescaler=ADC_CLOCK_ASYNC_DIV1
    6483ADC5.CommonPathInternal=null|ADC_CHANNEL_TEMPSENSOR_ADC1|ADC_CHANNEL_VBAT|null
    6584ADC5.ContinuousConvMode=ENABLE
    6685ADC5.DMAContinuousRequests=ENABLE
    6786ADC5.EOCSelection=ADC_EOC_SEQ_CONV
    68 ADC5.IPParameters=Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,OffsetNumber-2\#ChannelRegularConversion,NbrOfConversionFlag,ContinuousConvMode,DMAContinuousRequests,EOCSelection,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,OffsetNumber-3\#ChannelRegularConversion,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,OffsetNumber-4\#ChannelRegularConversion,NbrOfConversion,Rank-5\#ChannelRegularConversion,Channel-5\#ChannelRegularConversion,SamplingTime-5\#ChannelRegularConversion,OffsetNumber-5\#ChannelRegularConversion,ClockPrescaler,CommonPathInternal
     87ADC5.IPParameters=Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,OffsetNumber-2\#ChannelRegularConversion,NbrOfConversionFlag,ContinuousConvMode,DMAContinuousRequests,EOCSelection,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,OffsetNumber-3\#ChannelRegularConversion,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,OffsetNumber-4\#ChannelRegularConversion,NbrOfConversion,Rank-5\#ChannelRegularConversion,Channel-5\#ChannelRegularConversion,SamplingTime-5\#ChannelRegularConversion,OffsetNumber-5\#ChannelRegularConversion,ClockPrescaler,OversamplingMode,RightBitShift,Ratio,CommonPathInternal
    6988ADC5.NbrOfConversion=4
    7089ADC5.NbrOfConversionFlag=1
     
    7392ADC5.OffsetNumber-4\#ChannelRegularConversion=ADC_OFFSET_NONE
    7493ADC5.OffsetNumber-5\#ChannelRegularConversion=ADC_OFFSET_NONE
     94ADC5.OversamplingMode=ENABLE
    7595ADC5.Rank-2\#ChannelRegularConversion=1
    7696ADC5.Rank-3\#ChannelRegularConversion=2
    7797ADC5.Rank-4\#ChannelRegularConversion=3
    7898ADC5.Rank-5\#ChannelRegularConversion=4
    79 ADC5.SamplingTime-2\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5
    80 ADC5.SamplingTime-3\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5
    81 ADC5.SamplingTime-4\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5
    82 ADC5.SamplingTime-5\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5
     99ADC5.Ratio=ADC_OVERSAMPLING_RATIO_256
     100ADC5.RightBitShift=ADC_RIGHTBITSHIFT_4
     101ADC5.SamplingTime-2\#ChannelRegularConversion=ADC_SAMPLETIME_640CYCLES_5
     102ADC5.SamplingTime-3\#ChannelRegularConversion=ADC_SAMPLETIME_640CYCLES_5
     103ADC5.SamplingTime-4\#ChannelRegularConversion=ADC_SAMPLETIME_640CYCLES_5
     104ADC5.SamplingTime-5\#ChannelRegularConversion=ADC_SAMPLETIME_640CYCLES_5
    83105CAD.formats=
    84106CAD.pinconfig=
     
    256278Mcu.Pin12=PA5
    257279Mcu.Pin13=PA6
    258 Mcu.Pin14=PC4
    259 Mcu.Pin15=PC5
    260 Mcu.Pin16=PB0
    261 Mcu.Pin17=PB1
    262 Mcu.Pin18=PB10
    263 Mcu.Pin19=PB11
     280Mcu.Pin14=PA7
     281Mcu.Pin15=PC4
     282Mcu.Pin16=PC5
     283Mcu.Pin17=PB0
     284Mcu.Pin18=PB1
     285Mcu.Pin19=PB10
    264286Mcu.Pin2=PC15-OSC32_OUT
    265 Mcu.Pin20=PB12
    266 Mcu.Pin21=PB13
    267 Mcu.Pin22=PB14
    268 Mcu.Pin23=PB15
    269 Mcu.Pin24=PC6
    270 Mcu.Pin25=PC7
    271 Mcu.Pin26=PC8
    272 Mcu.Pin27=PC9
    273 Mcu.Pin28=PA8
    274 Mcu.Pin29=PA9
     287Mcu.Pin20=PB11
     288Mcu.Pin21=PB12
     289Mcu.Pin22=PB13
     290Mcu.Pin23=PB14
     291Mcu.Pin24=PB15
     292Mcu.Pin25=PC6
     293Mcu.Pin26=PC7
     294Mcu.Pin27=PC8
     295Mcu.Pin28=PC9
     296Mcu.Pin29=PA8
    275297Mcu.Pin3=PF0-OSC_IN
    276 Mcu.Pin30=PA10
    277 Mcu.Pin31=PA11
    278 Mcu.Pin32=PA12
    279 Mcu.Pin33=PA13
    280 Mcu.Pin34=PA14
    281 Mcu.Pin35=PA15
    282 Mcu.Pin36=PC10
    283 Mcu.Pin37=PC11
    284 Mcu.Pin38=PC12
    285 Mcu.Pin39=PD2
     298Mcu.Pin30=PA9
     299Mcu.Pin31=PA10
     300Mcu.Pin32=PA11
     301Mcu.Pin33=PA12
     302Mcu.Pin34=PA13
     303Mcu.Pin35=PA14
     304Mcu.Pin36=PA15
     305Mcu.Pin37=PC10
     306Mcu.Pin38=PC11
     307Mcu.Pin39=PC12
    286308Mcu.Pin4=PF1-OSC_OUT
    287 Mcu.Pin40=PB3
    288 Mcu.Pin41=PB4
    289 Mcu.Pin42=PB5
    290 Mcu.Pin43=PB6
    291 Mcu.Pin44=PB7
    292 Mcu.Pin45=PB9
    293 Mcu.Pin46=VP_ADC5_TempSens_Input
    294 Mcu.Pin47=VP_ADC5_Vbat_Input
    295 Mcu.Pin48=VP_CRC_VS_CRC
    296 Mcu.Pin49=VP_SYS_V_VREFBUF
     309Mcu.Pin40=PD2
     310Mcu.Pin41=PB3
     311Mcu.Pin42=PB4
     312Mcu.Pin43=PB5
     313Mcu.Pin44=PB6
     314Mcu.Pin45=PB7
     315Mcu.Pin46=PB9
     316Mcu.Pin47=VP_ADC5_TempSens_Input
     317Mcu.Pin48=VP_ADC5_Vbat_Input
     318Mcu.Pin49=VP_CRC_VS_CRC
    297319Mcu.Pin5=PC0
    298 Mcu.Pin50=VP_SYS_VS_Systick
    299 Mcu.Pin51=VP_SYS_VS_DBSignals
     320Mcu.Pin50=VP_SYS_V_VREFBUF
     321Mcu.Pin51=VP_SYS_VS_Systick
     322Mcu.Pin52=VP_SYS_VS_DBSignals
    300323Mcu.Pin6=PC1
    301324Mcu.Pin7=PA0
    302325Mcu.Pin8=PA1
    303326Mcu.Pin9=PA2
    304 Mcu.PinsNb=52
     327Mcu.PinsNb=53
    305328Mcu.ThirdPartyNb=0
    306329Mcu.UserConstants=
     
    366389PA6.GPIOParameters=GPIO_Label
    367390PA6.GPIO_Label=ADC2_IN3_UBAT+
    368 PA6.Mode=IN3-Single-Ended
     391PA6.Mode=IN3-Differential
    369392PA6.Signal=ADC2_IN3
     393PA7.Mode=IN3-Differential
     394PA7.Signal=ADC2_IN4
    370395PA8.GPIOParameters=GPIO_Label
    371396PA8.GPIO_Label=LVP_SENSE
     
    502527ProjectManager.UnderRoot=false
    503528ProjectManager.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_ADC3_Init-ADC3-false-HAL-true,7-MX_ADC4_Init-ADC4-false-HAL-true,8-MX_ADC5_Init-ADC5-false-HAL-true,9-MX_FDCAN2_Init-FDCAN2-false-HAL-true,10-MX_FDCAN3_Init-FDCAN3-false-HAL-true,11-MX_I2C3_Init-I2C3-false-HAL-true,12-MX_I2C4_Init-I2C4-false-HAL-true,13-MX_SPI3_Init-SPI3-false-HAL-true,14-MX_USART1_UART_Init-USART1-false-HAL-true,15-MX_USART2_UART_Init-USART2-false-HAL-true,16-MX_USB_PCD_Init-USB-false-HAL-true,17-MX_CRC_Init-CRC-false-HAL-true
    504 RCC.ADC12Freq_Value=100000000
    505 RCC.ADC345Freq_Value=100000000
     529RCC.ADC12CLockSelection=RCC_ADC12CLKSOURCE_PLL
     530RCC.ADC12Freq_Value=50000000
     531RCC.ADC345CLockSelection=RCC_ADC345CLKSOURCE_PLL
     532RCC.ADC345Freq_Value=50000000
    506533RCC.AHBFreq_Value=100000000
    507534RCC.APB1Freq_Value=100000000
     
    526553RCC.I2C4Freq_Value=100000000
    527554RCC.I2SFreq_Value=100000000
    528 RCC.IPParameters=ADC12Freq_Value,ADC345Freq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CK48CLockSelection,CRSFreq_Value,CortexFreq_Value,EXTERNAL_CLOCK_VALUE,FCLKCortexFreq_Value,FDCANFreq_Value,FamilyName,HCLKFreq_Value,HRTIM1Freq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2C4Freq_Value,I2SFreq_Value,LPTIM1Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLM,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSourceVirtual,PWRFreq_Value,QSPIFreq_Value,RNGFreq_Value,SAI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,UART5Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value
     555RCC.IPParameters=ADC12CLockSelection,ADC12Freq_Value,ADC345CLockSelection,ADC345Freq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CK48CLockSelection,CRSFreq_Value,CortexFreq_Value,EXTERNAL_CLOCK_VALUE,FCLKCortexFreq_Value,FDCANFreq_Value,FamilyName,HCLKFreq_Value,HRTIM1Freq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2C4Freq_Value,I2SFreq_Value,LPTIM1Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLM,PLLN,PLLP,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSourceVirtual,PWRFreq_Value,QSPIFreq_Value,RNGFreq_Value,SAI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,UART5Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value
    529556RCC.LPTIM1Freq_Value=100000000
    530557RCC.LPUART1Freq_Value=100000000
     
    534561RCC.PLLM=RCC_PLLM_DIV2
    535562RCC.PLLN=16
    536 RCC.PLLPoutputFreq_Value=100000000
     563RCC.PLLP=RCC_PLLP_DIV4
     564RCC.PLLPoutputFreq_Value=50000000
    537565RCC.PLLQoutputFreq_Value=100000000
    538566RCC.PLLRCLKFreq_Value=100000000
Note: See TracChangeset for help on using the changeset viewer.