cancel
Showing results for 
Search instead for 
Did you mean: 

I can`t to turn on a TA1 output in HRTIM.

Andrew Androsow
Associate II

Hello! I am trying to start HRTIM TIMA in PWM mode. Clock frequency of HRTIM is 140MHz. I use CubeMX 5.1.0 , chip is STM32F334R8T7. The configuration of the timer is following: set source is timer period event, reset source is timer compare 1 event. Output is TA1.

In Main() function I tried to start the timer. At first, I switch on a bit in OENR register:

/******************************************/

 HRTIM1->sCommonRegs.OENR = HRTIM_OENR_TA1OEN;

/**************************/

After this, in register ODSR independetly appeared the bit TA1ODS... that inform, that output TA1 disable.... I don`t know, what to think..

Thaks greatly for replies!

P.S. The function of initialization is below:

/**********************/

static void MX_HRTIM1_Init(void)

{

 /* USER CODE BEGIN HRTIM1_Init 0 */

 /* USER CODE END HRTIM1_Init 0 */

 HRTIM_TimeBaseCfgTypeDef pTimeBaseCfg = {0};

 HRTIM_TimerCfgTypeDef pTimerCfg = {0};

 HRTIM_CompareCfgTypeDef pCompareCfg = {0};

 HRTIM_OutputCfgTypeDef pOutputCfg = {0};

 /* USER CODE BEGIN HRTIM1_Init 1 */

 /* USER CODE END HRTIM1_Init 1 */

 hhrtim1.Instance = HRTIM1;

 hhrtim1.Init.HRTIMInterruptResquests = HRTIM_IT_NONE;

 hhrtim1.Init.SyncOptions = HRTIM_SYNCOPTION_NONE;

 if (HAL_HRTIM_Init(&hhrtim1) != HAL_OK)

 {

  Error_Handler();

 }

 if (HAL_HRTIM_DLLCalibrationStart(&hhrtim1, HRTIM_CALIBRATIONRATE_14) != HAL_OK)

 {

  Error_Handler();

 }

 if (HAL_HRTIM_PollForDLLCalibration(&hhrtim1, 10) != HAL_OK)

 {

  Error_Handler();

 }

 pTimeBaseCfg.Period = 0xF000;

 pTimeBaseCfg.RepetitionCounter = 0x00;

 pTimeBaseCfg.PrescalerRatio = HRTIM_PRESCALERRATIO_MUL32;

 pTimeBaseCfg.Mode = HRTIM_MODE_CONTINUOUS;

 if (HAL_HRTIM_TimeBaseConfig(&hhrtim1, HRTIM_TIMERINDEX_MASTER, &pTimeBaseCfg) != HAL_OK)

 {

  Error_Handler();

 }

 pTimerCfg.InterruptRequests = HRTIM_MASTER_IT_NONE;

 pTimerCfg.DMARequests = HRTIM_MASTER_DMA_NONE;

 pTimerCfg.DMASrcAddress = 0x0000;

 pTimerCfg.DMADstAddress = 0x0000;

 pTimerCfg.DMASize = 0x1;

 pTimerCfg.HalfModeEnable = HRTIM_HALFMODE_DISABLED;

 pTimerCfg.StartOnSync = HRTIM_SYNCSTART_DISABLED;

 pTimerCfg.ResetOnSync = HRTIM_SYNCRESET_DISABLED;

 pTimerCfg.DACSynchro = HRTIM_DACSYNC_NONE;

 pTimerCfg.PreloadEnable = HRTIM_PRELOAD_ENABLED;

 pTimerCfg.UpdateGating = HRTIM_UPDATEGATING_INDEPENDENT;

 pTimerCfg.BurstMode = HRTIM_TIMERBURSTMODE_MAINTAINCLOCK;

 pTimerCfg.RepetitionUpdate = HRTIM_UPDATEONREPETITION_DISABLED;

 if (HAL_HRTIM_WaveformTimerConfig(&hhrtim1, HRTIM_TIMERINDEX_MASTER, &pTimerCfg) != HAL_OK)

 {

  Error_Handler();

 }

 pCompareCfg.CompareValue = 0x1000;

 if (HAL_HRTIM_WaveformCompareConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_A, HRTIM_COMPAREUNIT_1, &pCompareCfg) != HAL_OK)

 {

  Error_Handler();

 }

 pTimeBaseCfg.PrescalerRatio = HRTIM_PRESCALERRATIO_DIV1;

 if (HAL_HRTIM_TimeBaseConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_A, &pTimeBaseCfg) != HAL_OK)

 {

  Error_Handler();

 }

 pTimerCfg.InterruptRequests = HRTIM_TIM_IT_NONE;

 pTimerCfg.DMARequests = HRTIM_TIM_DMA_NONE;

 pTimerCfg.DMASrcAddress = 0x0000;

 pTimerCfg.DMADstAddress = 0x0000;

 pTimerCfg.DMASize = 0x1;

 pTimerCfg.PushPull = HRTIM_TIMPUSHPULLMODE_DISABLED;

 pTimerCfg.FaultEnable = HRTIM_TIMFAULTENABLE_NONE;

 pTimerCfg.FaultLock = HRTIM_TIMFAULTLOCK_READWRITE;

 pTimerCfg.DeadTimeInsertion = HRTIM_TIMDEADTIMEINSERTION_DISABLED;

 pTimerCfg.DelayedProtectionMode = HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DISABLED;

 pTimerCfg.UpdateTrigger = HRTIM_TIMUPDATETRIGGER_NONE;

 pTimerCfg.ResetTrigger = HRTIM_TIMRESETTRIGGER_NONE;

 pTimerCfg.ResetUpdate = HRTIM_TIMUPDATEONRESET_DISABLED;

 if (HAL_HRTIM_WaveformTimerConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_A, &pTimerCfg) != HAL_OK)

 {

  Error_Handler();

 }

 pOutputCfg.Polarity = HRTIM_OUTPUTPOLARITY_HIGH;

 pOutputCfg.SetSource = HRTIM_OUTPUTSET_TIMPER;

 pOutputCfg.ResetSource = HRTIM_OUTPUTRESET_TIMCMP1;

 pOutputCfg.IdleMode = HRTIM_OUTPUTIDLEMODE_NONE;

 pOutputCfg.IdleLevel = HRTIM_OUTPUTIDLELEVEL_ACTIVE;

 pOutputCfg.FaultLevel = HRTIM_OUTPUTFAULTLEVEL_NONE;

 pOutputCfg.ChopperModeEnable = HRTIM_OUTPUTCHOPPERMODE_DISABLED;

 pOutputCfg.BurstModeEntryDelayed = HRTIM_OUTPUTBURSTMODEENTRY_REGULAR;

 if (HAL_HRTIM_WaveformOutputConfig(&hhrtim1, HRTIM_TIMERINDEX_TIMER_A, HRTIM_OUTPUT_TA1, &pOutputCfg) != HAL_OK)

 {

  Error_Handler();

 }

 /* USER CODE BEGIN HRTIM1_Init 2 */

 /* USER CODE END HRTIM1_Init 2 */

 HAL_HRTIM_MspPostInit(&hhrtim1);

}

***********************

1 REPLY 1
HMoens
Associate II

did you find a solution in the end?