Serial Port Interface: come utilizzarla con un controllore low-cost

Ci sono dispositivi come i convertitori analogici-digitali della Analog Devices che al power-up del sistema hanno bisogno di essere caricati con una configurazione di parametri. Alcune volte l’applicazione è tale per cui si possono utilizzare i parametri di default caricati sul componente. Altre volte, vuoi perché si hanno situazioni implementative differenti (stesso circuito da utilizzare per sistemi con caratteristiche diverse), vuoi perché c’è l’esigenza di un aggiornamento correttivo della configurazione, i suddetti parametri di default devono essere modificati. A questo scopo, Analog Devices ha inserito sui propri componenti "high speed converter", una porta seriale (SPI- Serial Port Interface)  per il caricamento al reset o al power-up del sistema, di una configurazione user-programmable dei suddetti parametri. E il compito di gestire l’interfaccia con la porta SPI viene affidato a un dispositivo low-cost ad 8 pin: il PIC12F629.

La Serial Port Interface

Quando Analog Devices fa riferimento al termine SPI, essa intende parlare di  Serial Port Interface, da non confondere, anche se molto simile nel funzionamento e nella terminologia, alla SPI intesa come acronimo di Serial Peripheral Interface. La differenza che salta subito all'occhio tra le due SPI, sta nella linea dei dati: nella Serial Port Interface esiste un unico segnale bidirezionale per il trasferimento dei dati, nella Serial Peripheral interface esiste invece una linea di segnale in più in quanto il dato di input è separato fisicamente da quello di output.

L'Analog Devices ha previsto nei suoi dispositivi la presenza della porta SPI al fine di caricare tramite un componente esterno i parametri di configurazione dei propri high speed converter. Componente esterno che si comporta, rispetto alla SPI, come dispositivo master (AN-877: Interfacing to high speed ADCs via SPI).

La funzionalità di master PCI può essere realizzata in diverse soluzioni come, ad esempio, con un processore o una FPGA. La soluzione suggerita dalla Analog Devices per il basso impatto in termini di costo e di ingombro circuitale e per la facilità di implementazione, (soluzione descritta nell'Applicazione Note AN-812 Microcontroller-Based Serial Port Interface (SPI) Boot Circuit)  è quella realizzabile con un controllore della Microchip: il PIC12F629.

In figura 1 è indicato in maniera semplificato lo schema implementativo "master-slave" tra controllore della Microchip e la interfaccia SPI del componente Analog Devices. Dalla figura si evince che il controllore PIC12F629 dovrà adattare tre dei suoi pin general purpose (GP0, GP1 e GP2) al comportamento richiesto dal protocollo SPI.

Figura 1: Collegamento master-slave per interfaccia SPI

Figura 1: Collegamento master-slave per interfaccia SPI

La porta SPI

Senza entrare a fondo nella descrizione della porta SPI (Serial Port Interface) che esula lo scopo di questo articolo, diamo una breve panoramica dell’interfaccia. Tre sono i segnali necessari per implementare il funzionamento della SPI. Un segnale di clock, uno per la selezione/abilitazione dell’interfaccia e un segnale di dato:

  • SCLK (Serial Clock): è il segnale di clock che gestisce e sincronizza la trasmissione dei singoli bit in ricezione e trasmissione e determina la velocità degli scambi; il segnale SCLK è pilotato dal dispositivo master ed è condiviso da tutti i dispositivi slave. Sia per il master che per lo slave, il dato deve essere valido prima del fronte di salita del SCLK.
  • SDIO (Serial IO Data): è un segnale bidirezionale con il duplice scopo di inviare bit di dati o riceverli a seconda delle istruzioni usate (read o write) e della posizione all’interno della finestra temporale (timing frame). Se, ad esempio, è stato inviato un comando di read, il master SPI cambierà la linea dati dalla modalità di output a quella di  input al termine della fase di instruction phase.
  • CSB (Chip Select Bar): segnale di chip select  (o selezione) che si attiva (valore basso) nei cicli di scrittura e lettura. Se al power-up, il master SPI lascia alto il livello di questo segnale, il dispositivo slave non risponde alla interfaccia SPI e mette in funzione la funzione alternativa (l’interfaccia SPI sui chip converter è multiplexata con altre funzionalità). Da notare che se il segnale CSB viene pilotato basso, la SPI del componente viene attivata e rimane in tale stato indipendentemente dallo stato futuro di CSB.

Di seguito, nella figura 2, viene indicato un esempio di timing della porta SPI. Per chi si appresta allo sviluppo di un master SPI suggerisco la lettura di un documento che descrive il protocollo della SPI così come pensata dalla Analog Devices (adispi_rev_1p0_customer.pdf). In breve, possiamo dire che la comunicazione tra n master e uno slave sul bus SPI è composta da due fasi. La prima fase è quella che possiamo definire instruction phase in cui il master informa con un comando quello che lo slave deve fare. La seconda, la data phase, è quella in cui avviene lo scambio dei dati e in cui la linea viene pilotata o dal master (scrittura dei dati) o dallo slave (ritorno di dati dalla slave verso il master).

Figura 2: Timing della interfaccia Serial Port Interface

Figura 2: Timing della interfaccia Serial Port Interface

Pic12F629

Il PIC12F629 (figura 3) è un microcontrollore che oltre alle caratteristiche usuali di un controllore dalle dimensioni e costi ridotti (set di istruzione a 14 bit, oscillatore interno a 4MHz, segnali di I/O multiplexati e programmabili, 2 timer, frequenza di lavoro fino a 20MHz, caratteristiche analogiche come convertitori A/D e comparatori di tensione, package a 8 pin)  è dotato di una memoria FLASH da 1024 parole da 14 bit. Questa memoria può essere usata per memorizzare variabili e parametri i cui valori non cambiano di frequente, valori che possono essere caricati su un componente (come appunto i convertitori della Analog Devices) allo startup di un apparato (costanti, valori di ID, settaggio di indirizzi, valori di calibrazione, parametri da caricare). Un aspetto interessante da tenere presente per la nostra applicazione è il numero di cicli di scrittura e/o programmazione dati per sicuri sulla memoria Flash: fino a 100.000. Più che sufficienti anche per il progettista più incerto.

Figura 3: il controllore PIC12F629 della Microchip

Figura 3: il controllore PIC12F629 della Microchip

Descrizione del Circuito

Il PIC12F629 è il cuore del piccolo circuito di boot eseguito tramite interfaccia SPI, di dimensioni ridotte e facilmente integrabile in un progetto. La figura 4 mostra lo schema circuitale proposto.

Figura 4: Circuito realizzativo per interfaccia SPI

Figura 4: Circuito realizzativo per interfaccia SPI

Il microcontrollore ha un oscillatore interno da 4MHz la cui abilitazione evita l’utilizzo di una sorgente di clock esterna. Il PIC12F629, una volta alimentato, comincia ad inviare comandi di scrittura verso il dispositivo target da essere programmato. Terminata la fase di invio dei dati, il controllore si pone in modalità di power-down: a questo  punto, il consumo apportato al sistema dal controllore dormiente nel caso peggiore è di 13uW di potenza.
[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2157 parole ed è riservato agli abbonati PRO. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici MAKER e PRO inoltre potrai fare il download (PDF) dell'EOS-Book e di FIRMWARE del mese. ABBONATI ORA, è semplice e sicuro.

Abbonati alle riviste di elettronica

Scrivi un commento