Analizziamo in questo articolo alcune semplici linee guida per l’utilizzo di questi microcontrollori, evitando i problemi più comuni.
Introduzione
Stellaris (Figura 1) è la famiglia di microcontrollori a 32 bit di Texas Instruments basata su CPU Cortex-M per applicazioni in ambito industriale. I dispositivi sono dotati di flash embedded, SRAM e ROM on-chip, DMA a 32 canali, regolatore di tensione low dropout, circuito di reset per brown-out ed al power-on, ADC, timer e oscillatore integrato, oltre a una porta EPI (External Peripheral Interface) per l’accesso a memorie on-chip o, in generale, connettività Host-Bus o M2M. Sono presenti porte di connessione Ethernet 10/100, CAN, USB On-The-Go, SSI/SPI, UART, I2C e I2S. L’elevato livello di integrazione, la disponibilità in diverse configurazioni, il supporto per periferiche mixed-signals, la significativa capacità di calcolo (fino a 1,25 DMIPS/MHz) unitamente all’efficienza di codice (garantita dall’insieme di istruzioni Thumb-2) e all’esteso ecosistema software rendono i microcontrollori della serie Stellaris una valida soluzione per tutte le applicazioni in ambito industriale. Di seguito sono discusse alcune linee guida per l’utilizzo di tali microcontrollori nella propria applicazione. Quanto presentato prende spunto dall’Application Note indicata al riferimento [1] e alla quale si rimanda per ogni approfondimento.
ALCUNE NOTE SUL CIRCUITO DI ALIMENTAZIONE
Il primo aspetto da considerare in ogni applicazione è, ovviamente, la parte di alimentazione del circuito. I micro Stellaris richiedono una tensione di core a 1,2 V che, nella maggior parte dei casi, deve essere fornita attraverso pin dedicati (VDDC). Per evitare problemi di sequencing delle alimentazioni, è opportuno derivare tale tensione da quella (VDD) a 3,3 V usata per i buffer di I/O. Per semplificare il progetto del circuito elettrico è disponibile on-chip un regolatore LDO a tale scopo. In alternativa, è possibile usare un regolatore esterno (verificare sempre sul datasheet che questa possibilità sia effettivamente supportata dal modello scelto per la propria applicazione). Scegliere un regolatore lineare esterno non porta grossi vantaggi rispetto all’utilizzo di quello integrato; si evita semplicemente di dover dissipare on-chip la potenza del regolatore stesso. Diverso è il caso in cui si usi un regolatore switching; in questo caso il vantaggio è la maggiore efficienza di conversione (fino oltre all’85%, in confronto al misero 35% ottenuto con un lineare).
Per ottenere elevate prestazioni ed evitare problemi, ad esempio, di ground-bounce, è importante poi realizzare correttamente la rete di condensatori di bypass della tensione di core; quando si usa il regolatore on-chip, occorre verificare sempre che le caratteristiche dei condensatori scelti siano entro i limiti imposti da questo. L’Application Note [1] indicata nei riferimenti riporta utili indicazioni in questo senso e anche alcuni semplici esempi che mostrano (come riportato nell’estratto in Figura 2) la corretta posizione sul circuito stampato dei condensatori di bypass e dei relativi vias di connessione al piano di massa. Analoga cautela si deve tenere nelle applicazioni mixed-signal, quando si usino comparatori e convertitori A/D del microcontrollore. I dispositivi Stellaris dispongono di ingresso di alimentazione dedicato VDDA per questi circuiti (si veda il datasheet del dispositivo per una chiara indicazione sull’architettura di distribuzione interna della potenza) ma sono progettati nell’ipotesi che questa sia connessa esternamente alla linea VDD usata per l’I/O (e, a valle del regolatore, per il core). Avere pin separati per le tensioni analogica e digitale consente, in alcune applicazioni, di introdurre un’ulteriore rete di filtro sulla prima per migliorare la qualità dei segnali analogici. Quando si implementa questa soluzione, è importante tuttavia rispettare il requisito di avere entrambe le tensioni (VDD e VDDA) applicate e rimosse allo stesso tempo; per questo non è consigliato avere due circuiti di alimentazione separati. Allo stesso modo, i pin GND e GNDA devono essere connessi tra loro mediante piano di massa o comunque da un’area di rame di adeguata estensione.
RESET E CLOCK IMMUNI DA RUMORE
Un minimo di attenzione si deve porre anche alla gestione del segnale di reset e di clock. Il dispositivo non richiede reset al power-on, avendo integrata una tale funzionalità, ma rende ovviamente disponibile un pin di reset. Se lo si usa, per evitare reset spuri dovuti a rumore indotto sulla linea, è opportuno realizzare tracce sul PCB di lunghezza non superiore ai 2”, prevedere un resistore di pull-up e un condensatore di filtro in vicinanza del pin del microcontrollore e aggiungere un buffer se il segnale è ricevuto da un’altra scheda. Per quanto concerne il clock, invece, i micro Stellaris integrano un circuito risonatore parallelo che richiede un cristallo esterno e due condensatori di carico. Nel dimensionare tali condensatori rispetto alle specifiche del cristallo scelto, si deve in effetti tenere presente che vi è già una capacità intrinseca del circuito risonante interno, come mostrato in Figura 3; questa ha un valore tipicamente compreso tra 2 e 4 pF e deve essere sottratta al valore richiesto dal cristallo per il corretto funzionamento. È suggerito l’uso di dispositivi con dielettrico NP0/C0G. La posizione sul PCB dovrebbe essere, al solito, quanto più vicina possibile ai pin del microcontrollore. Restando in tema di routing dei segnali, è opportuna una precisazione per sfatare una sorta di mito che vuole in voga la tendenza a evitare di realizzare angoli a 90° nello sbroglio delle piste sul circuito stampato, ritenendo che questo rappresenti un problema per l’integrità di segnale. In realtà è documentato che alle frequenze tipiche di lavoro dei microcontrollori (e anche fino a segnali di 1 GHz) ciò non ha affatto ragion d’essere. Restano comunque alcuni vantaggi nel seguire tale linea guida, come ad esempio una minore lunghezza di traccia e un’affidabilità maggiore per quanto riguarda il processo di produzione, nel caso di piste di ridotta larghezza.
ATTENZIONE AI SEGNALI VELOCI
Alcune delle periferiche dei micro Stellaris richiedono accorgimenti specifici (che, a dire il vero, sono in realtà di validità del tutto generale). La prima di queste è la porta EPI (External Peripheral Interface), per l’accesso, come detto inizialmente, a memorie on-chip o, più in generale, connettività Host-Bus o M2M. In questo caso si deve fare attenzione al fatto che la porta è caratterizzata per una capacità di carico di 16 pF e non di 50 pF, come tipicamente per gli I/O. Nel calcolare la capacità effettiva sulla porta è utile ricordare di includere la capacità parassita della traccia sul circuito stampato, stimabile in circa 1,8 pF/inch. I margini potrebbero essere non elevati, soprattutto nelle configurazioni multiplexate, nelle quali alcuni dei pin della porta pilotano più di una linea di ingresso del dispositivo a valle. Vi è poi il controller Ethernet, che integra MAC e PHY, richiedendo quindi esternamente il solo trasformatore di accoppiamento e il connettore; in alcuni casi, i due sono in effetti integrati, come noto. Nel progettare la sezione del circuito Ethernet, ricordarsi di prevedere i resistori di terminazione e biasing del transceiver; considerata la poca potenza dissipata, è corretto utilizzare resistenze del tipo 0402. Importante è poi sbrogliare le linee differenziali con un’impedenza di 100, soprattutto per piste di lunghezza oltre i 2”.
Per piste più corte, infatti, si è visto che non è strettamente necessario realizzare l’impedenza controllata, che ovviamente ha costi maggiori di realizzazione dello stampato. Per dimensionare correttamente spaziatura e larghezza delle piste sono disponibili tool di analisi; è necessario conoscere le caratteristiche del materiale usato dal produttore del PCB. Fare attenzione a tenere le coppie differenziali separate di almeno 0,050” per evitare problemi di cross-talk, evitare l’uso di vias e sbrogliare le linee di una coppia sullo stesso piano. Nel caso sia presente un piano di massa di riferimento sottostante, le singole tracce della coppia differenziale devono avere una impedenza di 50. Posizionare i resistori di terminazione il più vicino possibile al microcontrollore Stellaris, aggiungere un condensatore da 10 pF in prossimità del trasformatore, non estendere il piano di massa al di sotto di quest’ultimo, nel caso sia non schermato, né tantomeno tra esso e il connettore.
MIGLIORARE LA COMPATIBILITÀ EMI…
Più in generale, nel progettare il circuito stampato dell’intero sistema, controllare di non lasciare aree non connesse nei piani tagliati ma fissare queste a massa o alimentazione mediante una serie di vias, così da avere un percorso a bassa impedenza; in caso contrario potrebbero generarsi fastidiosi accoppiamenti, con un peggioramento delle caratteristiche di compatibilità elettromagnetica del circuito. Evitare di avere tagli nei piani di riferimento in corrispondenza di segnali veloci e ridurre al minimo la lunghezza degli stub di connessione a questi (ove presenti). Sempre dal punto di vista della compatibilità elettromagnetica, poi, nel caso di schede che abbiano connettori esterni o contenitori di tipo metallico, può essere buona norma prevedere un piano di chassis, che aiuta a ridurre le emissioni e migliorare l’immunità, anche per quanto riguarda le scariche elettrostatiche (ESD). Ricordarsi, tuttavia, di prevedere, come mostrato in Figura 4, un’apertura sul piano per evitare che si generino loop di antenna. Per ridurre i consumi e le emissioni elettromagnetiche è infine buona norma connettere i pin del microcontrollore a massa o alimentazione, a seconda di quanto specificato dal datasheet rispetto alla particolare funzione. È, tuttavia, opportuno verificare che la propria applicazione software mantenga disabilitato il clock verso eventuali moduli non usati i cui pin di I/O siano stati connessi a massa.
… E L’ACCURATEZZA DEI CIRCUITI ADC
Tornando invece alle periferiche ADC presenti a bordo dei micro Stellaris, per ottenere elevata accuratezza è necessario innanzitutto disporre di un riferimento di tensione adeguato. I micro Stellaris integrano un dispositivo per tali scopi; verificate se le caratteristiche offerte sono in linea con la vostra applicazione. In caso contrario può essere adottato un riferimento esterno; se lo si fa, però, ricordarsi di prevedere condensatori di bypass sulla linea di alimentazione del riferimento e sulla sua uscita. Il segnale di ingresso dovrebbe avere, come noto, bassa impedenza alla sorgente anche se, un’impedenza a monte più alta favorirebbe una migliore protezione degli ingressi dell’ADC; al progettista sta il compito di trovare il giusto compromesso. Tenete presente, in questo senso, che i pin di ingresso dell’ADC dei micro Stellaris non garantiscono tolleranza per 5 V. Il problema può essere mitigato adottando diodi di clamping; valutare l’impatto delle correnti di perdita sull’accuratezza complessiva. Eventuale rumore in ingresso può essere filtrato mediante opportuni condensatori; anche in questo caso, vi è però uno svantaggio da considerare nello scegliere la capacità di filtro, ovvero la riduzione di banda passante che si determina. Per adattare i segnali campionati ai livelli di ingresso dell’ADC, soprattutto nelle soluzioni più semplici, sono a volte adottati partitori di tensione; se si sceglie questo approccio, cercare di limitare la resistenza verso massa al di sotto di 1 K .
CONCLUSIONI
Sebbene alcune delle pratiche sopra esposte possano sembrare ovvie, la loro applicazione non viene sempre rispettata. Adottare accorte linee guida fin dalle fasi iniziali del progetto elettrico e del circuito stampato può ridurre di molto i tempi dei test di laboratorio, evitando di incorrere in problemi di immunità di segnale, ground-bounce e compatibilità elettromagnetica che sono spesso difficili da isolare e da risolvere. Prima di progettare il circuito per la propria applicazione è buona norma consultare schemi e note applicative, ad esempio, delle schede di valutazione distribuite dai produttori dei dispositivi utilizzati. I design kit per i micro Stellaris includono sempre, oltre agli schemi, anche i gerber del circuito stampato (la Figura 5 mostra un esempio di sbroglio di un circuito minimale per un micro Stellaris LM3S811), fornendo così un ottimo punto di partenza.