cancel
Showing results for 
Search instead for 
Did you mean: 

HSI

HubbaBubba
Associate II

Is there any information about long term stabiliy of the internal high speed oscillator (HSI)?

7 REPLIES 7
Danish1
Lead II

The data-sheet will give you all there is to know.

For example (stm32f405) +/- 1% at 25 C and 3.3 V.

Worsening to +/- 4% over -10 to +85 C

So the frequency will drift with temperature, and maybe Vdd as well.

These are not "quality" oscillators; just RC at relatively low current-consumption. Expect significant phase-noise and jitter (i.e. cycle-by-cycle period variations).

Are you asking if the oscillation frequency will "age" the way overdriven crystals can age? I don't think they're stable enough for you to notice.

HubbaBubba
Associate II

Thank you very much for your answer. Yes that's exactly what I want to know. We use a STM32G070. Do you see any concerns if we use the hsi as a clocksource for the UART? Buadrate is below 115400 kbps.

It should be communicating at least 10 years. No thermal or mechanical stresses are expected.

Some UARTs of some STM32's have baudrate detection feature. So even with non-precise clock they can tune to the baudrate of the other size. (the question is, how often the detection needs to be repeated)

Dependent on process, temperature and voltage, should be fine for USARTs, which can generally like with several percent errors in the bit timing.

I'd expect the G0 also has a calibration value

 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;

 RCC_OscInitStruct.HSIState = RCC_HSI_ON;

 RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;

 RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;

Even for the ones that can't tune, most of the UART RX typically connect with a TIM, and bit timing can be measured.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

The baudrate in our hardware is set by DIP switches, but we will check if we can use this feature to increase stability. Have you made any experiences with this feature? Since the auto-baudrate can only be done with some specific recieved characters, I doupt this will help us. The final communication protocoll is Modbus RTU, we have no influence of sending and receiving specific chars.

(The received character can be: • Any character starting with a bit at 1. In this case, the USART measures the duration of the start bit (from falling edge to rising edge). • Any character starting with a 10xx pattern. In this case, the USART measures the duration of the start and of the 1st data bit. The duration is measured from falling edge to falling edge, ensuring better accuracy in the case of slow signal slopes. • 0x7F character frame. In this case, the baud rate is updated first at the end of the start bit then at the end of bit 6. • A 0x55 character frame. In this case, the baud rate is updated first at the end of the start bit, then at the end 17 of bit 0 bit and finally at the end of bit 6. In parallel, another check is performed for each intermediate transition of the RX line.)

We we're considering the retuning of the HSI at the stage if in-circuit programming. Here is where the question of the aging came up.

> Since the auto-baudrate can only be done with some specific recieved characters,

Yes this is downside of this feature. The other size should actively cooperate.