cancel
Showing results for 
Search instead for 
Did you mean: 

frecuency limit

jdpv
Associate II
Posted on December 22, 2014 at 19:54

i'm triying to set a timer with a period of 1 us for a input capture application but i get a maximun of 600 khz (more o less). A led toggling at 300 khz.

i can reach accurately any value under 500 khz (led 250khz) but over that speed it starts behaving badly. i've tried with timers 2 and 4 and the response is the same. I don't think my oscilloscope it's the problem but i'm using a HANTEK 6028be (48 Msa/s) GPIOS are set to HIGH SPEED and all clocks to its maximun. I didn't experienced this problem with the old std perih library, just now i'm working with the hal library. any idea? thanks.

/* Enable Power Control clock */
__PWR_CLK_ENABLE();
/* The voltage scaling allows optimizing the power consumption when the device is 
clocked below the maximum system frequency, to update the voltage scaling value 
regarding system frequency refer to product datasheet. */
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
/* Enable HSE Oscillator and activate PLL with HSE as source */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 360;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 7;
HAL_RCC_OscConfig(&RCC_OscInitStruct);
/* Activate the Over-Drive mode */
HAL_PWREx_ActivateOverDrive();
/* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 
clocks dividers */
RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; 
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; 
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);

#frecuency #:( #timer #max
2 REPLIES 2
Posted on December 22, 2014 at 21:31

You can output internal clocks via the MCO pins, use these to verify these are as you expect them.

You can read register settings, and confirm those have consistent settings for the clocks, and speeds you expect.

Make sure to use scope probes in 10X mode, the 1X setting shouldn't effect frequency, but will distort the observed wave forms.
Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
jdpv
Associate II
Posted on December 22, 2014 at 23:07

Thank you clive.

I don't think i'm able to read this kind of frecuencies with my oscilloscope.

I can reach any frecuency under 500 khz with the same calculations as always so i think the clocks are ok.

i put the probe in 10x and the signal improve but the frecueny is the same.

i can't imagine where the problem is. i'm getting 500 kHz for any value of period between 180 and 90. Under 90 i get more frecuency but the proportion it is not linear.