Progettare con i micro XMEGA

Sul blog di Elettronica Open Source puoi leggere non solo tutti gli articoli Premium riservati agli abbonati Platinum 2.0 e inseriti nella rivista Firmware 2.0 (insieme ad articoli tecnici, progetti, approfondimenti sulle tecnologie emergenti, news, tutorial a puntate, e molto altro) ma anche gli articoli della Rubrica Firmware Reload. In questa Rubrica del blog abbiamo raccolto gli articoli tecnici della vecchia rivista cartacea Firmware, che contengono argomenti e temi evergreen per Professionisti, Makers, Hobbisti e Appassionati di elettronica. Analizziamo in questo articolo le linee guida e alcuni consigli utili per verificare il proprio progetto prima di mandarlo in produzione.

AVR XMEGA è la serie di microcontrollori low-power ad elevate prestazioni proposta da Atmel. I dispositivi hanno architettura RISC a 8/16 bit e schema Harvard con bus separati per accesso alle memorie dati e programma. La CPU dispone di un register file composto da 32 registri general-purpose con supporto per accesso simultaneo a due di questi in ogni ciclo di clock. La ALU implementa fino a 142 istruzioni con esecuzione in pipeline a singolo livello, in grado di garantire una capacità di calcolo di 1 MIPS/MHz. Sono poi disponibili: flash programmabile in-system con supporto per modalità read-while-write; memoria EEPROM e SRAM on-chip; 2 controller DMA; interrupt controller multilivello programmabile; fino a 50 linee di I/O general-purpose; contatore RTC a 16- bit; timer/counter a 16-bit con funzionalità di capture e compare e supporto PWM; fino a 3 porte USART; 2 porte seriali compatibili con SMBUS ed I2C; 2 periferiche SPI; controller USB 2.0; ADC a 12-bit con gain programmabile e 2 comparatori analogici con supporto per modalità a finestra; moduli dedicati per calcolo di CRC e crittografia AES; watchdog timer programmabile; oscillatore interno, supporto per oscillatore esterno, PLL e prescaler; circuito di power-on reset e brown-out detection; programmabilità e supporto per debug in circuit mediante porta PDI. Grazie all'architettura flessibile ed all’insieme piuttosto esteso di periferiche, i microcontrollori della serie AVR XMEGA di Atmel rappresentano così una soluzione estremamente interessante per la realizzazione di applicazioni embedded low-power in sistemi mobile o con alimentazione a batteria e dotati di connettività USB. Di seguito vogliamo porre, in particolare, l’attenzione su alcuni aspetti specifici della progettazione hardware con questa famiglia di microcontrollori fornendo degli spunti per una checklist da consultare per validare il proprio progetto prima di mandarlo in produzione.

ALIMENTAZIONE

Il primo aspetto da curare in ogni progetto, ed in particolar modo in quelli che prevedono circuiti mixed signals come i microcontrollori XMEGA, è l’alimentazione. Come abbiamo visto in precedenza, infatti, i dispositivi AVR XMEGA, integrano a bordo un convertitore ADC oltre a comparatori analogici. Richiedono così sia una linea di ingresso di alimentazione per la sezione digitale che una separata per i circuiti analogici; le due linee devono avere la stessa tensione ma devono essere opportunamente filtrate per evitare che il rumore prodotto dalla commutazione dei circuiti digitali induca un ripple sulla tensione analogica. Tale ripple, infatti, finirebbe per ridurre le prestazioni proprio dei circuiti analogici. I microcontrollori della serie AVR XMEGA sono realizzati nella tecnologia picoPower che consente di funzionare con tensione in ingresso fino a, nominalmente, 1.6 V, ovvero 1.8 V con tolleranza di ± 10% , così da estendere la vita utile del sistema in applicazioni con alimentazione a batteria. La Figura 1 mostra lo schema tipico di alimentazione che può essere adottato. La tensione di ingresso viene filtrata a monte mediante un semplice filtro LC; questo, essendo del secondo ordine, fornisce una buona reiezione del rumore in AC presente sulla linea ed una protezione dai disturbi RF propagati dall’alimentatore.

Il filtro ha una risposta (ideale) di tipo passa-basso con frequenza di taglio pari a 1/; i valori di condensatore e induttanza dovrebbero essere scelti quindi in funzione delle frequenze di commutazione tipiche del circuito e in primo luogo, quindi, della frequenza dell’oscillatore impiegato. Fare solo attenzione al fatto che il circuito è risonante proprio alla frequenza di taglio. Una soluzione alternativa e più accurata al filtro LC utilizzato in Figura 1 potrebbe essere l’impiego di un circuito CLC, altrimenti detto filtro a pi-greco induttivo. Detto ciò, torniamo a considerare lo schema di alimentazione del nostro microcontrollore. A valle del filtro primario, come si vede in Figura 1, la linea di alimentazione viene distribuita agli ingressi digitale VCC ed analogico AVCC. In prossimità dei pin di alimentazione digitale, quindi, viene previsto un condensatore di bypass che, come noto, consente di assicurare una connessione a bassa impedenza tra i piani di alimentazione e massa. In questo modo la corrente di switching dei circuiti digitali si chiude attraverso il condensatore di bypass (e non il wiring di alimentazione) e il drop di alimentazione conseguente è piuttosto basso, o quantomeno trascurabile (supposto che la capacità dei condensatori sia stata scelta in modo appropriato) per i circuiti digitali. La necessità di prevedere il condensatore di bypass in prossimità dei pin di alimentazione nasce proprio dal fatto di evitare che impedenze e capacità parassite delle piste di connessione tra piedini del condensatore e i pin del microcontrollore (tanto maggiori quanto più lunga è la pista) finiscano per aumentare l’impedenza effettivamente presente tra massa e alimentazione. Lo stesso condensatore di bypass deve essere previsto pure, come mostrato in Figura 1, in corrispondenza dei pin di alimentazione analogica AVCC del microcontrollore. Inoltre, per evitare di iniettare nella sezione analogica il rumore di commutazione dei circuiti digitali, vi è pure un secondo filtro LC.

Questa volta, però, al posto della induttanza, è suggerito di impiegare una ferrite in quanto offre delle prestazioni migliori alle alte frequenze tipiche del rumore "digitale". Fare attenzione al fatto che le ferriti da impiegare per il filtraggio delle alimentazioni sono quelle a basso Q (quelle a Q elevato trovano impiego nei circuiti risonatori). Nello scegliere il componente più adatto alla propria applicazione, inoltre, è importante far riferimento al datasheet fornito dal produttore dove si trovano le informazioni relative all’andamento dell’impedenza in funzione della frequenza oltre che i valori di corrente massima e resistenza tipica in DC.

Figura 1. Filtrare opportunamente le alimentazioni digitale ed analogica evita problemi di rumore e integrità di segnale (da [1])

Figura 1: Filtrare opportunamente le alimentazioni digitale ed analogica evita problemi di rumore e integrità di segnale (da [1])

OSCILLATORE

I microcontrollori XMEGA dispongono di uno schema di clocking estremamente flessibile che supporta diverse configurazioni, sia con un oscillatore integrato sia con uno esterno. Sono presenti, in particolare, un circuito PLL con prescaler, per sintetizzare un ampio intervallo di frequenze di funzionamento, ed uno DFLL, per la correzione di eventuali drift in temperatura o tensione dell’oscillatore integrato; un monitor dedicato, infine, consente di commutare automaticamente sull’oscillatore interno nel caso di failure dell’oscillatore esterno o del PLL. Nel caso in cui si decida di utilizzare un oscillatore esterno, è previsto il supporto per un cristallo oppure un dispositivo integrato; la frequenza di ingresso deve essere compresa in ogni caso tra 0.4 MHz e 16 MHz in normale funzionamento oppure valere 32.768 kHz nella modalità low power. La modalità specifica da utilizzare viene selezionata mediante opportuna configurazione di alcuni registri interni di controllo del microcontrollore; l’oscillatore deve essere configurato prima di utilizzarlo e la configurazione non può essere modificata prima di averlo disabilitato.

La Figura 2 mostra lo schema di connessione da utilizzare nei due diversi casi e per frequenze comprese tra 0.4 MHz e 16 MHz. Qualora si utilizzi un oscillatore integrato, il pin XTAL2 può essere lasciato non connesso oppure utilizzato come GPIO. Nel caso invece si impieghi un cristallo, fare attenzione a non connettere altre porte di eventuali altri dispositivi presenti sulla scheda alla linea XTAL1 in quanto il segnale ha basso swing e non è in grado di pilotare più carichi. Inoltre, tenere presente che il valore dei condensatori C1 e C2 varia in funzione della frequenza in ingresso, passando da 100 pF per frequenze nell’intervallo tra 0.4 e 2 MHz, a 15 pF nel caso di valori compresi tra 2 MHz e 12 MHz e 10 pF nell’intervallo tra 12 MHz e 16 MHz. La Figura 3 mostra invece il caso di impiego di un cristallo a bassa frequenza a 32.768 kHz. In questo caso, il cristallo deve essere connesso ai pin TOSC1 e TOSC2 del dispositivo. Fare attenzione alle specifiche di capacità di carico richieste dal cristallo scelto per la propria applicazione. L’oscillatore integrato nei microcontrollori XMEGA, infatti, presenta una capacità di 3.0 pF. Qualora i cristalli scelti richiedano una capacità più elevata è necessario prevedere due condensatori addizionali (come mostrato nella figura).

Figura 2. Come connettere un cristallo (a sinistra) o un oscillatore integrato (a destra) (da [1])

Figura 2: Come connettere un cristallo (a sinistra) o un oscillatore integrato (a destra) (da [1])

Figura 3. Utilizzo di un oscillatore a bassa frequenza in modalità low-power con (a sinistra) e senza (a destra) capacità di carico (da [1])

Figura 3: Utilizzo di un oscillatore a bassa frequenza in modalità low-power con (a sinistra) e senza (a destra) capacità di carico (da [1])

INTERFACCIA USB

Come detto inizialmente, i microcontrollori XMEGA dispongono di un controller USB 2.0. La realizzazione di circuiti con interfaccia USB richiede in generale alcuni accorgimenti. In primo luogo, le linee differenziali del bus devono essere opportunamente terminate, garantendo una impedenza di 90 l’una rispetto all’altra e di 45 rispetto a massa. La bontà del diagramma ad occhio è inoltre essenziale affinché la connessione sia stabile. Da questo punto di vista, i microcontrollori XMEGA semplificano il progetto del circuito elettrico e del circuito stampato grazie al fatto di integrare on-chip i resistori seriali e di pull-up richiesti dal bus. L’unica cosa cui bisogna prestare attenzione è, quindi, il corretto routing dei segnali di bus. Le due linee devono essere "disegnate" in modo da avere stessa lunghezza e larghezza e stesso numero di vias oltre a correre parallelamente, così da ridurre eventuali differenze di impedenza e discontinuità di linea origine di riflessione e, in generale, degrado della qualità del segnale. Lo standard USB richiede inoltre protezione adeguata delle linee da scariche elettrostatiche. I microcontrollori XMEGA integrano già una funzionalità di questo tipo on-chip; tuttavia, per maggiore sicurezza, può essere utile prevedere anche una protezione esterna mediante appositi soppressori di transiente, da piazzare, evidentemente, il più vicino possibile al connettore (Figura 4).

Figura 4. I soppressori esterni sul bus possono essere eliminati in applicazioni low-cost; i micro XMEGA integrano già resistenze di terminazione e protezione ESD sufficienti (da [1])

Figura 4: I soppressori esterni sul bus possono essere eliminati in applicazioni low-cost; i micro XMEGA integrano già resistenze di terminazione e protezione ESD sufficienti (da [1])

Lo stesso connettore deve poi essere scelto tra quelli approvati (è possibile trovarne la lista cercando sul sito ufficiale www.usb.org) se si è interessati allo sviluppo di un sistema da certificare. E’ interessante osservare, poi, che i microcontrollori XMEGA non richiedono un oscillatore dedicato per generare il segnale di clock a frequenza di 48 MHz necessario al funzionamento della porta USB in modalità FS (con fattore di oversampling 4x). Tale segnale può infatti essere generato dall’oscillatore integrato, eventualmente utilizzando la funzionalità di calibrazione del circuito DFLL per assicurare la stabilità richiesta (0.5% per il clock di sistema di 12 MHz). Assicurarsi soltanto che la frequenza della CPU sia maggiore di 12 MHz nel caso di applicazioni FS. Infine, le diverse modalità di power save del microcontrollore consentono certamente di rispettare il vincolo sull’assorbimento minimo di corrente in modalità suspend, pari a 2.5 mA. Fare attenzione a selezionare quella più adatta per la propria applicazione. In power-down, ad esempio, il microcontrollore salva il contenuto di SRAM e dei registri ma sospende l’oscillatore disabilitando tutte le altre funzioni fino a che non si verifica un evento come, ad esempio, proprio quello di USB resume o un interrupt legato alla commutazione di un pin di I/O. Nella modalità di stand-by, invece, tutto il dispositivo è in modalità di sleeping ma l’oscillatore continua a funzionare in modo da ridurre significativamente i tempi di ripresa. Cautela deve essere adottata anche nelle applicazioni USB bus powered per le quali lo standard prevede che il sistema sia alimentato dalla tensione di bus a 5V; in questo caso, infatti, sarà necessario prevedere un regolatore lineare, in quanto i microcontrollori XMEGA lavorano fino al massimo a 3.3 V. Un semplice partitore di tensione riportato su pin di ingresso general purpose, consentirà quindi di riconoscere la connessione al bus e disconnettere l’alimentazione locale nel caso delle applicazioni self-powered.

MISCELLANEOUS

Oltre ai punti discussi in precedenza, ci sono anche due altri piccoli dettagli da tenere presente e verificare per validare il progetto di una scheda basata su microcontrollori XMEGA. Il primo riguarda il circuito di reset. Innanzitutto, il microcontrollore non richiede, come invece in altri casi, un supervisor di tensione esterno, in quanto ha già integrato un circuito di power-on reset e brown-out detection. E’ comunque previsto un ingresso di reset dedicato che può essere connesso, ad esempio, ad un pulsante, da utilizzare durante le fasi di test e debug, o ad un comando bilivello esterno, per un eventuale controllo remoto. La Figura 5 mostra il tipico schema da adottare in questi casi.

Figura 5. Come pilotare l’ingresso di reset con un pulsante (NB : rimuovere condensatore e pull down quando si usa la porta PDI)

Figura 5: Come pilotare l’ingresso di reset con un pulsante (NB: rimuovere condensatore e pull-down quando si usa la porta PDI)

Il resistore di pull-up assicura un livello stabile ed inattivo quando la linea non è pilotata mentre quello di pull-down serve per evitare che si verifichino sovratensioni sul pin del microcontrollore durante la commutazione del pulsante; il condensatore consente, infine, di filtrare impulsi di reset spuri. Condensatore e resistore di pull-down devono invece essere rimossi nel caso in cui sia usata l’interfaccia di debug PDI, che impiega appunto il pin di reset come segnale di clock. Il resistore di pull-up deve, al contrario, sempre essere presente. L’altro aspetto da verificare è infine la corretta connessione di un eventuale riferimento di tensione esterno per l’ADC (in effetti, questo può operare anche con riferimento interno). In questo caso, come mostrato in Figura 6, devono essere previsti un condensatore di filtro di capacità tipicamente 4.7 μF sull’alimentazione del riferimento ed uno da 100 nF in prossimità del pin AREFA del microcontrollore.

Figura 6. Anche il riferimento di tensione per l’ADC va filtrato opportunamente per non degradare le prestazioni di misura (da [1])

Figura 6: Anche il riferimento di tensione per l’ADC va filtrato opportunamente per non degradare le prestazioni di misura (da [1])

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend