| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- /**
- ******************************************************************************
- * @file parameters_conversion.h
- * @author Motor Control SDK Team, ST Microelectronics
- * @brief This file includes the proper Parameter conversion on the base
- * of stdlib for the first drive
- ******************************************************************************
- * @attention
- *
- * <h2><center>© Copyright (c) 2019 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under Ultimate Liberty license
- * SLA0044, the "License"; You may not use this file except in compliance with
- * the License. You may obtain a copy of the License at:
- * www.st.com/SLA0044
- *
- ******************************************************************************
- */
- /* Define to prevent recursive inclusion -------------------------------------*/
- #ifndef __PARAMETERS_CONVERSION_H
- #define __PARAMETERS_CONVERSION_H
- #include "mc_math.h"
- #include "parameters_conversion_f10x.h"
- #include "pmsm_motor_parameters.h"
- #include "drive_parameters.h"
- #include "power_stage_parameters.h"
- #define ADC_REFERENCE_VOLTAGE 3.30
- /************************* CONTROL FREQUENCIES & DELAIES **********************/
- #define TF_REGULATION_RATE (uint32_t) ((uint32_t)(PWM_FREQUENCY)/(REGULATION_EXECUTION_RATE))
- /* TF_REGULATION_RATE_SCALED is TF_REGULATION_RATE divided by PWM_FREQ_SCALING to allow more dynamic */
- #define TF_REGULATION_RATE_SCALED (uint16_t) ((uint32_t)(PWM_FREQUENCY)/(REGULATION_EXECUTION_RATE*PWM_FREQ_SCALING))
- /* DPP_CONV_FACTOR is introduce to compute the right DPP with TF_REGULATOR_SCALED */
- #define DPP_CONV_FACTOR (65536/PWM_FREQ_SCALING)
- #define REP_COUNTER (uint16_t) ((REGULATION_EXECUTION_RATE *2u)-1u)
- #define SYS_TICK_FREQUENCY 2000
- #define UI_TASK_FREQUENCY_HZ 10
- #define SERIAL_COM_TIMEOUT_INVERSE 25
- #define SERIAL_COM_ATR_TIME_MS 20
- #define MEDIUM_FREQUENCY_TASK_RATE (uint16_t)SPEED_LOOP_FREQUENCY_HZ
- #define INRUSH_CURRLIMIT_DELAY_COUNTS (uint16_t)(INRUSH_CURRLIMIT_DELAY_MS * \
- ((uint16_t)SPEED_LOOP_FREQUENCY_HZ)/1000u -1u)
- #define MF_TASK_OCCURENCE_TICKS (SYS_TICK_FREQUENCY/SPEED_LOOP_FREQUENCY_HZ)-1u
- #define UI_TASK_OCCURENCE_TICKS (SYS_TICK_FREQUENCY/UI_TASK_FREQUENCY_HZ)-1u
- #define SERIALCOM_TIMEOUT_OCCURENCE_TICKS (SYS_TICK_FREQUENCY/SERIAL_COM_TIMEOUT_INVERSE)-1u
- #define SERIALCOM_ATR_TIME_TICKS (uint16_t)(((SYS_TICK_FREQUENCY * SERIAL_COM_ATR_TIME_MS) / 1000u) - 1u)
- #define MAX_APPLICATION_SPEED_UNIT ((MAX_APPLICATION_SPEED_RPM*SPEED_UNIT)/_RPM)
- #define MIN_APPLICATION_SPEED_UNIT ((MIN_APPLICATION_SPEED_RPM*SPEED_UNIT)/_RPM)
- #define MAX_APPLICATION_SPEED_UNIT2 ((MAX_APPLICATION_SPEED_RPM2*SPEED_UNIT)/_RPM)
- #define MIN_APPLICATION_SPEED_UNIT2 ((MIN_APPLICATION_SPEED_RPM2*SPEED_UNIT)/_RPM)
- /************************** VOLTAGE CONVERSIONS Motor 1 *************************/
- #define OVERVOLTAGE_THRESHOLD_d (uint16_t)(OV_VOLTAGE_THRESHOLD_V*65535/\
- (ADC_REFERENCE_VOLTAGE/VBUS_PARTITIONING_FACTOR))
- #define UNDERVOLTAGE_THRESHOLD_d (uint16_t)((UD_VOLTAGE_THRESHOLD_V*65535)/\
- ((uint16_t)(ADC_REFERENCE_VOLTAGE/\
- VBUS_PARTITIONING_FACTOR)))
- #define INT_SUPPLY_VOLTAGE (uint16_t)(65536/ADC_REFERENCE_VOLTAGE)
- #define DELTA_TEMP_THRESHOLD (OV_TEMPERATURE_THRESHOLD_C- T0_C)
- #define DELTA_V_THRESHOLD (dV_dT * DELTA_TEMP_THRESHOLD)
- #define OV_TEMPERATURE_THRESHOLD_d ((V0_V + DELTA_V_THRESHOLD)*INT_SUPPLY_VOLTAGE)
- #define DELTA_TEMP_HYSTERESIS (OV_TEMPERATURE_HYSTERESIS_C)
- #define DELTA_V_HYSTERESIS (dV_dT * DELTA_TEMP_HYSTERESIS)
- #define OV_TEMPERATURE_HYSTERESIS_d (DELTA_V_HYSTERESIS*INT_SUPPLY_VOLTAGE)
- /*************** Timer for PWM generation & currenst sensing parameters ******/
- #define PWM_PERIOD_CYCLES (uint16_t)(ADV_TIM_CLK_MHz*\
- (uint32_t)1000000u/((uint32_t)(PWM_FREQUENCY)))
- #define DEADTIME_NS SW_DEADTIME_NS
- #define DEAD_TIME_ADV_TIM_CLK_MHz (ADV_TIM_CLK_MHz * TIM_CLOCK_DIVIDER)
- #define DEAD_TIME_COUNTS_1 (DEAD_TIME_ADV_TIM_CLK_MHz * DEADTIME_NS/1000uL)
- #if (DEAD_TIME_COUNTS_1 <= 255)
- #define DEAD_TIME_COUNTS (uint16_t) DEAD_TIME_COUNTS_1
- #elif (DEAD_TIME_COUNTS_1 <= 508)
- #define DEAD_TIME_COUNTS (uint16_t)(((DEAD_TIME_ADV_TIM_CLK_MHz * DEADTIME_NS/2) /1000uL) + 128)
- #elif (DEAD_TIME_COUNTS_1 <= 1008)
- #define DEAD_TIME_COUNTS (uint16_t)(((DEAD_TIME_ADV_TIM_CLK_MHz * DEADTIME_NS/8) /1000uL) + 320)
- #elif (DEAD_TIME_COUNTS_1 <= 2015)
- #define DEAD_TIME_COUNTS (uint16_t)(((DEAD_TIME_ADV_TIM_CLK_MHz * DEADTIME_NS/16) /1000uL) + 384)
- #else
- #define DEAD_TIME_COUNTS 510
- #endif
- #define DTCOMPCNT (uint16_t)((DEADTIME_NS * ADV_TIM_CLK_MHz) / 2000)
- #define TON_NS 500
- #define TOFF_NS 500
- #define TON (uint16_t)((TON_NS * ADV_TIM_CLK_MHz) / 2000)
- #define TOFF (uint16_t)((TOFF_NS * ADV_TIM_CLK_MHz) / 2000)
- /**********************/
- /* MOTOR 1 ADC Timing */
- /**********************/
- #define SAMPLING_TIME ((ADC_SAMPLING_CYCLES * ADV_TIM_CLK_MHz) / ADC_CLK_MHz) /* In ADV_TIMER CLK cycles*/
- #define HTMIN 1 /* Required for main.c compilation only, CCR4 is overwritten at runtime */
- #define TW_BEFORE ((uint16_t)((ADC_TRIG_CONV_LATENCY_CYCLES + ADC_SAMPLING_CYCLES) * ADV_TIM_CLK_MHz) / ADC_CLK_MHz + 1u)
- #define TW_BEFORE_R3_1 ((uint16_t)((ADC_TRIG_CONV_LATENCY_CYCLES + ADC_SAMPLING_CYCLES*2 + ADC_SAR_CYCLES) * ADV_TIM_CLK_MHz) / ADC_CLK_MHz + 1u)
- #define TW_AFTER ((uint16_t)(((DEADTIME_NS+MAX_TNTR_NS)*ADV_TIM_CLK_MHz)/1000ul))
- #define MAX_TWAIT ((uint16_t)((TW_AFTER - SAMPLING_TIME)/2))
- /* USER CODE BEGIN temperature */
- #define M1_VIRTUAL_HEAT_SINK_TEMPERATURE_VALUE 25u
- #define M1_TEMP_SW_FILTER_BW_FACTOR 250u
- /* USER CODE END temperature */
- #define PQD_CONVERSION_FACTOR (int32_t)(( 1000 * 3 * ADC_REFERENCE_VOLTAGE ) /\
- ( 1.732 * RSHUNT * AMPLIFICATION_GAIN ))
- #define USART_IRQHandler USART1_IRQHandler
- /****** Prepares the UI configurations according the MCconfxx settings ********/
- #define COM_ENABLE | OPT_COM
- #define DAC_ENABLE
- #define DAC_OP_ENABLE
- /* Motor 1 settings */
- #define FW_ENABLE
- #define DIFFTERM_ENABLE
- /* Sensors setting */
- #define MAIN_SCFG UI_SCODE_HALL
- #define AUX_SCFG 0x0
- #define PLLTUNING_ENABLE
- #define UI_CFGOPT_PFC_ENABLE
- /*******************************************************************************
- * UI configurations settings. It can be manually overwritten if special
- * configuartion is required.
- *******************************************************************************/
- /* Specific options of UI */
- #define UI_CONFIG_M1 ( UI_CFGOPT_NONE DAC_OP_ENABLE FW_ENABLE DIFFTERM_ENABLE \
- | (MAIN_SCFG << MAIN_SCFG_POS) | (AUX_SCFG << AUX_SCFG_POS) | UI_CFGOPT_SETIDINSPDMODE PLLTUNING_ENABLE UI_CFGOPT_PFC_ENABLE | UI_CFGOPT_PLLTUNING)
- #define UI_CONFIG_M2
- #define DIN_ACTIVE_LOW Bit_RESET
- #define DIN_ACTIVE_HIGH Bit_SET
- #define DOUT_ACTIVE_HIGH DOutputActiveHigh
- #define DOUT_ACTIVE_LOW DOutputActiveLow
- /********** AUXILIARY HALL TIMER MOTOR 1 *************/
- #define M1_HALL_TIM_PERIOD 65535
- #define M1_HALL_IC_FILTER 11
- #define SPD_TIM_M1_IRQHandler TIM2_IRQHandler
- /* MMI Table Motor 1 MAX_MODULATION_95_PER_CENT */
- #define START_INDEX 57
- #define MAX_MODULE 31128
- #define MMITABLE {\
- 32613,32310,32016,31872,31589,31314,31046,30784,30529,30404,\
- 30158,29919,29684,29456,29343,29122,28906,28695,28488,28285,\
- 28186,27990,27798,27610,27425,27245,27155,26980,26808,26639,\
- 26473,26392,26230,26072,25917,25764,25614,25540,25394,25250,\
- 25109,24970,24901,24766,24633,24501,24372,24245,24182,24058,\
- 23936,23816,23697,23580,23522,23408,23295,23184,23075,23021,\
- 22913,22808,22703,22600,22499,22449,22349,22251,22154,22059,\
- 21964\
- }
- #define SAMPLING_CYCLE_CORRECTION 0.5 /* Add half cycle required by STM32F103RBTx ADC */
- #define LL_ADC_SAMPLINGTIME_1CYCLES_5 LL_ADC_SAMPLINGTIME_1CYCLE_5
- #define LL_ADC_SAMPLING_CYCLE(CYCLE) LL_ADC_SAMPLINGTIME_ ## CYCLE ## CYCLES_5
- #endif /*__PARAMETERS_CONVERSION_H*/
- /******************* (C) COPYRIGHT 2019 STMicroelectronics *****END OF FILE****/
|