Post

Visualizzazione dei post con l'etichetta Microcontrollori

Riprodurre audio e musica con STM32 - PCM con la PWM

Immagine
  La PCM (Pulse Code Modulation) è una tecnica di codifica digitale utilizzata per rappresentare segnali analogici (come l'audio) sotto forma di dati digitali. È uno dei metodi più comuni per digitalizzare segnali continui e viene utilizzata in molte applicazioni, come telecomunicazioni, registrazione audio digitale e trasmissione multimediale. Può essere definita come una soluzione primordiale  per trasmettere audio tramite un microcontrollore. Il primo step da seguire è quello di convertire un file .wav in un array (vettore) di valori esadecimali in linguaggio c. Il file .wav deve rispettare i seguenti parametri: avere canale audio mono, essere codificato in unsigned 8 bit PCM e avere una frequenza di campionamento tra gli 8 kHz e 16 kHz. La frequenza di campionamento sarà una scelta a seconda dell’applicazione. Se la qualità dell’audio non interessa particolarmente, 8 kHz possono essere sufficienti. Ovviamente, a parità di bit di codifica, aumentando la frequenza di campio...

Interrupt nei microcontrollori - interrupt GPIO con STM32

Immagine
 Un'interruzione, nel lessico informatico interrupt , è un segnale inviato al processore che sospende temporaneamente l'esecuzione del programma principale per eseguire una routine di servizio dell'interruzione (ISR, Interrupt Service Routine). L’operazione può essere definita internamente alla memoria oppure definita dal programmatore. Le interruzioni possono essere generate da diverse sorgenti, come temporizzatori, periferiche hardware (ad esempio, UART, ADC), o eventi esterni, come la pressione di un pulsante o il segnale di un sensore. In questo articolo ci si occupa delle interrupt da GPIO  ossia interruzioni generate da un segnale connesso a un pin di GPIO in input. Vengono definite EXTI , External interrupts , per la ragione di generare un interrupt da un segnale esterno. Il compito del programmatore scrivere alcune righe di codice firmware in un'apposita funzione, nella quale si dichiara ciò che deve accadere alla generazione dell'interrupt.  In sintesi, il...

Timer nei microcontrollori ST

Immagine
 Una fondamentale periferica nei microcontrollori ST, come in tutti gli altri, è il timer .  Sono presenti timers con risoluzione diversa a seconda di ogni modello di scheda. La Nucleo F401RE, per esempio, è dotata di sette timers: TIM1, TIM3, TIM4, TIM9 e TIM11 con risoluzione a 16 bit; i timers TIM2 e TIM5 con risoluzione a 32 bit. Per altri modelli, verificare sul  sito ufficiale ST Microelectronics . Le funzioni che possono essere svolte da un timer sono molteplici: semplice generatore di ritardo (analogo alla HAL_Delay(...) ) non bloccante per il processore in toto; input capture , misurare la durata degli impulsi di segnale in ingresso, come segnali da encoder o altre sorgenti di impulsi; output compare , generare segnali di uscita in momenti specifici, sincronizzati con altri eventi; generare interrupt a intervalli regolari per eseguire routine di servizio dell'interrupt (ISR); IMPORTANTE: generazione di segnali PWM. La sorgente del clock di ogni timer (f...

Creazione di un progetto in STM32CubeIDE

Immagine
 Il primo passo verso lo sviluppo di un firmware per un microcontrollore ST concerne la creazione del progetto all'interno dell'ambiente di sviluppo STM32CubeIDE.  Il procedimento da seguire è questo: Dopo aver aperto il software STM32CubeIDE, recarsi sulla barra superiore e cliccare sul pulsante finestra ( icona con finestra e simbolo + sovrastante, figura 1 ) ; Figura 1: pulsante finestra . si aprirà un menù a tendina (figura 2). Cliccare su STM32 Project. Può essere necessario che il software faccia un download di file. Lasciarlo concludere. Figura 2: pulsante di creazione del progetto. si apre una finestra in cui vi sono tutti i modelli di microcontrollori e schede di sviluppo ST (Target selection, figura 3). Se non si dispone di una scheda di sviluppo oppure si vogliono ricercare microcontrollori con desiderate specifiche, è possibile anche scegliere, ad esempio, la quantità di RAM, EEPROM, oppure il tipo di package; Figura 3: target selection ST. con una scheda di svilup...