Configurazione del Clock nei microcontrollori ST (STM32xxxxxx)

Il Real Time Clock è un elemento fondamentale nei microcontrollori, e come tale ha necessità di essere configurato in modo da consentire l'esecuzione delle operazioni in tempi rapidi. Le board Nucleo (come per Arduino) sono dotate di due tipologie di Clock Sources:

  1. Clock interno: un oscillatore RC interno al microcontrollore, la cui frequenza dipende dal tempo di carica e scarica di un condensatore a livello IC;
  2. Clock esterno: un oscillatore al quarzo è installato su tutte le schede di sviluppo. Il quarzo ha una frequenza di risonanza, determinata dalle dimensioni e dalla forma del cristallo di quarzo stesso.
Figura 1: Oscillatore al quarzo sulla board STM32F401xx Nucleo.

L'oscillatore esterno si rivela più efficiente e più stabile di quello interno, anche per il fatto di essere maggiormente resistente alle variazioni della temperatura.

La configurazione del clock nei micro (board) ST avviene nel seguente modo:
  1. Dopo aver aperto un nuovo progetto nell'IDE STM32Cube con il microcontrollore posseduto, si aprirà la schermata principale Pinout & Configuration;
  2. nella suddetta interfaccia, recarsi della sezione System Core -> RCC  e settare i parametri High Speed Clock (HSE) -> Crystal/Ceramic Resonator Low Speed Clock (HSE) -> Crystal/Ceramic Resonator (figura 2);
    Figura 2: scelta della sorgente clock, passaggio 2.

  3. recarsi nella sezione Clock Configuration cliccando in alto (figura 3). Si apre l'interfaccia di configurazione hardware delle frequenze.

    Figura 3: interfaccia Clock Configuration.
    Figura 4: Sezione HSE.

    Il settaggio delle impostazioni di clock si effettua a partire dalla coppia di multiplexer nella sezione HSE (figura 4). Il PLL Source Mux definisce quale sia la sorgente del Clock PLLCLK (Phase-locked loop). Utilizzando il PLL, si possono raggiungere frequenze di clock più elevate rispetto a quelle fornite dalla sorgente di clock esterna.La sorgente, comunque, può essere internal HSI o external HSE. Impostare HSE, come in figura 5.
    Figura 5: HSE source.
    Il Source Clock MUX definisce se la sorgente di clock sia direttamente HSI, HSE oppure . E' consigliabile settare PLLCLK (figura 6).
    Figura 6: configurazione del PLL.
  4. Può essere generato il programma.
L'area in azzurrino Main PLL definisce di quanto deve essere innalzato tramite il moltiplicatore *N. Di norma è settato al massimo valore disponibile per ogni scheda (84 per STM32F401RE Nucleo). Può essere impostato un valore minore o uguale al valore limite. Le uscite del clock sono definite alla destra dell'interfaccia Clock Configuration (figura 7).
Figura 7: Uscite del clock con i rispettivi BUS di sistema.
IMPORTANTE!   Può capitare, alla fine della configurazione, che vi siano degli errori (caselle rosse). Cliccare sul pulsante in alto Resolve clock issues (figura 8).

Figura 8: pulsante di resolve clock Issues.


ATTENZIONE! Per modificare la frequenza in uscita dal clock per un determinato BUS (APB1 o APB2 per esempio) è possibile modificare direttamente il valore, a seconda delle necessità della periferica.
Esempio: Se la periferica SPI2, connessa al bus APB1, richiede una frequenza di 30 MHz, modificare direttamente il valore nell'apposita casella, APB1 peripheral clock (MHz). Verranno modificati anche altri valori per adattare il sistema a questo cambiamento. 

Commenti

Post popolari in questo blog

Conversione analogico - digitale (ADC) e digitale - analogico (DAC) con amplificatori operazionali

Tempo di propagazione nella logica pass-transistor - legge di Elmore (39)

Modello di Ebers & Moll delle correnti nel BJT - Guadagni di corrente (15)