Microprocessore ARM con soli 8 pin, impossibile?

E’ possibile racchiudere in un contenitore DIP8, un microprocessore ARM ? Il micro LPC810M021FN8 della NPX l’ha fatto.

Rispetto ad un normale microprocessore, quali sono le differenze? Perchè sono così meravigliato?

La prima cosa che salta all’occhio è la frequenza di clock, che grazie al PLL, raggiunge i 30MHz. Il micro è dotato di un oscillatore interno a 12MHz, con precisione calibrata al 1,5%. Rispetto ai normali micro ad 8bit, che utilizzano 8 pin, l’architettura ARM a 32bit permette di eseguire una istruzione per ogni ciclo di clock. Per assurdo, potreste generare un’onda quadra, da un pin del microprocessore, ad una frequenza di 15MHz. Questa velocità elevata è stata utilizzata in un progetto chiamato “the most minimal WS2812B driver” dove vengono utilizzati 60 led RGB programmabili WS2812B.

WS2812B vista ravvicinata
WS2812B vista ravvicinata

Il led RGB WS2812B nel case smd 5050, contiene i 3 led Rosso, Verde e Blu e l’integrato WS2811 che riceve al pin DIn un dato seriale a 24 bit (il codice RGB) genera i segnali PWM a corrente costante per il pilotaggio dei 3 led, ed infine ritrasmette il dato ricevuto con il pin DOut.

Ogni led necessita di un dato seriale a 24 bit per generare i tre colori RGB. Il codice seriale deve essere trasmesso con una velocità media, per ogni bit trasmesso, di 1,25 µs. Quanti led potremmo collegare in serie se volessimo utilizzarli per creare immagini con una frequenza di fotogrammi video di 30 fps ? La risposta la fornisce questo calcolo: (1/30 fps – 50 µs) / 1,25 µs * 24 bit = (33333 – 50)/(1,25*24) =  1109 led RGB.

Capite allora che se vogliamo far eseguire altre operazioni al microprocessore, per esempio caricare le immagini 30 volte al secondo da una SD card, dovremo farlo nei tempi morti della trasmissione del bit di comando del led WS2812B. Se abbiamo a disposizione una frequenza di clock di 30MHz, che nel caso dell’ARM corrispondono a circa 30’000’000 di operazioni al secondo, potremmo eseguire al massimo 37 linee di programma nel tempo di 1,25 µs.

Vediamo quali sono le specifiche: memoria flash di 4kB per i programmi, memoria SRam di 1kB. Gestisce 3 USART, un I2C ed 2 SPI. I sei pin disponibili hanno un’uscita di corrente fino a 20 mA, sufficiente per alimentare direttamente i led. Timer di auto accensione (self wake-up timer) con clock a basso assorbimento da 10kHz integrato nel microprocessore. Può essere risvegliato dal segnale USART, SPI o I2C. Controllo CRC integrato. Dotato di numero di codice identificativo. Unica pecca: ha solo un comparatore analogico e nessun convertitore analogico-digitale.


Pubblicità

Autore dell'articolo: Lucio Sciamanna

Lascia un commento