Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

calibrazione HSI16

18 views
Skip to first unread message

ice

unread,
Oct 21, 2021, 1:32:02 PM10/21/21
to
Ciao a tutti,

su un stm32g0 sto preparando una funzione per calibrare l'HSI a 16MHz sfruttando come riferimento i 32768 Hz di un oscillatore esterno compensato.
L'oscillatore esterno viene mandato al micro tramite l'ingresso del micro dedicato all'LSE.
Facendo uno "sweep" con tutti i 128 possibili valori di calibrazione ottengo la curva indicata nelle AN.

https://www.dropbox.com/s/b18dastz5cay2g1/hsiCalib.png?dl=0

Un periodo di LSE vale 1/32768 secondi e durante questo tempo l'HSI dovrebbe scattare (16M/32768)*2*2 volte cioè 1953,125 volte teorici.
I *2 sono dovuti al fatto che vengono monitorati solo i fronti di salita dell'LSE e al prescaler settato a 2.

I dati tornano, eccone alcuni:

https://www.dropbox.com/s/8klvtjge0yd5km0/hsi_pulses_A.png?dl=0
https://www.dropbox.com/s/859xjz9lde98780/hsi_pulses_B.png?dl=0
https://www.dropbox.com/s/90bmf8rt5hosje7/hsi_pulses_C.png?dl=0

Nelle condizioni di misura, il valore di calibrazione 85 è migliore di 64 perchè permette di avvicinarsi di più al valore teorico per avere i 16MHz.
85 però cade a destra della seconda discontinuità mentre 64 è perfettamente centrato nel tratto "buono" della curva.

C'è qualche motivo particolare per cui si dovrebbe preferire 64 a 85?
La domanda è in generale, in questo caso specifico la differenza sarebbe poca.

Grazie

giulia

unread,
Oct 22, 2021, 3:27:47 AM10/22/21
to
ice wrote:

> C'è qualche motivo particolare per cui si dovrebbe preferire 64 a 85?
> La domanda è in generale, in questo caso specifico la differenza sarebbe poca.

Bisognerebbe capire perche c'e' questa discontinuita', su una cosa che ragionevolmente dovrebbe essere lineare,
quel registro impostera' una capacita' parassita di qualche giunzione per variare la frequenza di oscillazione , perche' lo faccia
in modo cosi' non lineare pero' e' un mistero.


Giulia
Message has been deleted

ice

unread,
Oct 22, 2021, 1:53:55 PM10/22/21
to
On Friday, 22 October 2021 at 09:27:47 UTC+2, giulia wrote:

> Bisognerebbe capire perche c'e' questa discontinuita', su una cosa che ragionevolmente dovrebbe essere lineare,
> quel registro impostera' una capacita' parassita di qualche giunzione per variare la frequenza di oscillazione , perche' lo faccia
> in modo cosi' non lineare pero' e' un mistero.

Capita con i valori di trimming che, sommati al valore di calibrazione factory, sono multipli di 64.
L'AN5126 riporta questo fenomeno ma non spiega il perchè avvenga.
Potrebbe trattarsi di un bug a livello di silicio non ancora identificato, nell'errata non è indicato.

In altri chip è proprio un bug del silicio che porta ad avere questa non-linearità.
Riporto dall'errata sheet degli stm32l745xx:
"[...] If the HSI factory trim value is close to a multiple of 64, with only 16 steps for positive or for negative correction, it is not possible to compensate the 7% drop when the code is a multiple of 64.
Consequently, the user trim correction must not jump over the codes multiple of 64, which
can limit the user correction either in positive or in negative direction."
Non c'è work-around, solo la fix a partire dalle successive revisioni del chip.

Ciao

giulia

unread,
Oct 22, 2021, 1:59:28 PM10/22/21
to
action0x01 wrote:
> On Friday, October 22, 2021 at 9:27:47 AM UTC+2, giulia wrote:

> Potrebbe trattarsi di un bug a livello di silicio non ancora identificato, nell'errata non è indicato.

Secondo me usa un DAC tipo R–2R per polarizzare la giunzione e regolare la capacita', il codice digitale e' una parte fissa in
fabbrica sommata alla parte variabile e si saranno sbagliati qualcosa sulla maschera e le resistenze non saranno precise.

Giulia

0 new messages