Indirizzamento per la gestione dei sistemi di alimentazione

La base di tutte le applicazioni PMBus, compresa la gestione dei sistemi di alimentazione (PSM, power system management) è la possibilità, per il master PMBus (host del sistema) di comunicare con tutti gli slave PMBus (controller PSM, manager PSM, µModules PSM e dispositivi monolitici PMBus) sul bus. Ogni slave presente sul bus deve avere un indirizzo unico che non sia in conflitto con altri dispositivi. Il master del bus deve anche essere in grado di comunicare con gli slave PSM in alcune situazioni meno ovvie: Individuazione di indirizzi, Azioni globali, Tensioni multifase, Memoria non volatile (NVM) non valida, Multiplatori (MUX) del bus. L’indirizzamento dei dispositivi viene ottenuto con una combinazione di registri base e di pin esterni di selezione indirizzo (ASEL, address select), oltre a indirizzi globali, di tensione, ARA e altri indirizzi speciali. Il presente articolo illustra i principi fondamentali di progettazione alla base della famiglia di dispositivi Linear Technology PSM e presenta dettagli sulle differenze tra i prodotti della famiglia nonché consigli ed esempi pratici. Vengono discussi anche casi speciali, come quelli relativi a memorie non volatili (NVM) non valide. Il vantaggio è un progetto che funziona subito, e che funziona anche quando nascono problemi. Per esempio, se si sta scrivendo nella NVM usando il software LTpowerPlay e durante l’operazione di scrittura si verifica un’interruzione dell’alimentazione, il progetto sarà ripristinabile. Non solo: sarà ripristinabile sul campo nel caso si decidesse di implementare “In Flight Update”, disponibile nel codice di riferimento Linduino di Linear ("In Flight Update" è un motore di programmazione in C che applica file ISP/HEX esportati da LTpowerPlay). Infine, sarà possibile rilevare sintomi di sistemi degeneri e rimediarvi. Una volta compreso come implementare l’indirizzamento di dispositivi Linear Technology PSM, si sarà in grado di progettare velocemente sistemi affidabili.

FUNZIONAMENTO BASE PMBus

PMBus è uno standard di trasmissione dati seriale sviluppato a partire da SMBus, che è simile a I2C. Due conduttori a drain aperto, SCL e SDA, supportano un bus di trasmissione dati seriale con master e slave. I master sono dispositivi di controllo della trasmissione dati e in genere sono microcontroller o FPGA, mentre gli slave sono i dispositivi controllati dal master e in genere sono circuiti integrati di piccole dimensioni, nel nostro caso un dispositivo di gestione dell’alimentatore come l’LTC2977 o un controller dell’alimentatore come l’LTC3880.  Un sistema può avere più di un master, ma in pratica ciò è raro, mentre normalmente vi sono più slave. Un master invia i dati a un singolo slave alla volta utilizzando un apposito indirizzo, anche in un sistema dotato di un solo slave; quindi, a ogni slave deve corrispondere un indirizzo unico affinché il sistema funzioni correttamente. I dispositivi Linear Technology di gestione del sistema di alimentazione impiegano una EEPROM, insieme a resistori su vari pin, per impostare l’indirizzo unico di ciascun dispositivo (slave). Pertanto, l’operazione di indirizzamento serve anche ad assicurare che se una EEPROM qualsiasi non ha dati validi, un master possa ripristinare il sistema allo stato in cui a ciascun dispositivo (slave) corrisponde un indirizzo unico. Le sezioni che seguono spiegano dettagliatamente questi meccanismi di configurazione degli indirizzi, comprese le modalità di selezione, progettazione e ripristino degli indirizzi.

INDIRIZZAMENTO BASE PMBus

L’indirizzamento PMBus è definito dallo standard SMBus a cui lo standard PMBus si riferisce. L’indirizzamento SMBus è identico a quello dello standard I2C; per chiarezza espositiva, ci si limita a esporre lo standard SMBus. Si consideri il protocollo Read Byte, definito nello standard SMBus 3.0 (vedere Figura 1).

Figura 1: Protocollo Read Byte

L’indirizzo di qualsiasi transazione procede dopo il bit di start (S) e si conclude prima del bit ACK (A). Tra (S) e (A) vi sono 8 bit; i primi 7 rappresentano l’indirizzo, mentre un bit serve a indicare lo stato di scrittura, Write (Wr) o di lettura, Read (Rd). Sette bit vuol dire che esistono 128 possibili indirizzi. Nel presente articolo, gli indirizzi sono scritti senza il bit (Wr/Rd) come segue:

da 0x00 a 0x7F (indirizzamento a 7 bit) [Alcuni indirizzi sono riservati]

A volte i programmatori preferiscono scrivere gli indirizzi con il bit aggiuntivo (Wr/Rd) contenente uno zero, come:

da 0x00 a 0xFE (indirizzamento a 8 bit)

Questi sono tutti i numeri pari. Oscilloscopi e analizzatori di protocollo, come Total Phase Beagle, utilizzano lo stesso formato della presente nota applicativa ed è naturale usare da 0x00 a 0x7F, quindi procederemo così. Tuttavia, occorre prestare attenzione quando un ingegnere fornisce un indirizzo senza indicare il formato, poiché l’indirizzo potrebbe presentare uno shift a sinistra di una posizione e quindi potrebbe sembrare che le sue dimensioni siano pari al doppio di quelle effettive. Si osservi che il protocollo Read Byte utilizza l’indirizzo due volte ma con un bit di start (Sr) ripetuto e precedente il secondo indirizzo. Uno start ripetuto fa parte di tutte le transazioni di lettura; in questo caso, è necessario usare lo stesso indirizzo per (S) e (Sr).

Mappa degli indirizzi

Non tutti gli indirizzi sono disponibili per gli slave PSM, poiché lo standard SMBus ne riserva alcuni. La mappa degli indirizzi SMBus illustrata nella Tabella 1 utilizza una schema di codifica semplice. I progetti tradizionali usano solo gli indirizzi con sfondo bianco nella colonna Description, evitando quindi tutti gli indirizzi riservati e speciali. I progetti PSM possono utilizzare tutti gli indirizzi con sfondo bianco nella colonna Address, con la possibile eccezione degli indirizzi 0x28 e 0x37 che sono stati aggiunti per operazioni di zona PMBus 3.1.

Tabella 1: mappa degli indirizzi SMBus

Tabella 1: mappa degli indirizzi SMBus

Indirizzi globali PSM

Vi sono ulteriori indirizzi utilizzati dalla famiglia PSM che non possono essere assegnati a nessun dispositivo, neanche dispositivi che non sono PSM, senza causare problemi a livello di sistema. I primi indirizzi speciali sono quelli globali: 0x5A e 0x5B. Si tratta di indirizzi utilizzati dal master del bus per comunicare con più di un dispositivo alla volta. L’indirizzo 0x5A è un indirizzo globale per il quale non si esegue il paging, per la famiglia LTC388X, mentre l’indirizzo 0x5B è un indirizzo globale per il quale si esegue il paging sia per la famiglia PSM LTC388X che per la famiglia LTC297X. Se un dispositivo PSM ha il suo indirizzo impostato sull’uno o l’altro degli indirizzi globali e il master del bus invia comandi a tale dispositivo, tutti i dispositivi PSM presenti sul bus risponderebbero al comando. LTpowerPlay presenterebbe pure un funzionamento inaspettato. Il terzo indirizzo globale è 0x7C. I dispositivi della famiglia PSM LTC388X risponderanno a questo indirizzo se nella loro EEPROM hanno errori CRC (cyclic redundancy check), pertanto non usare questo indirizzo.

Altri indirizzi globali

Dispositivi non PSM potrebbero pure avere indirizzi globali, che devono essere evitati quando si assegnano indirizzi PSM.

Indirizzi di tensione (“rail”)

Alcuni dispositivi PSM hanno un indirizzo speciale detto “rail”, mediante il quale vengono indirizzati simultaneamente più dispositivi o “pagine”. La funzione principale di un indirizzo rail è consentire al master del bus di comunicare con numerose fasi di una tensione con un comando; per esempio, impostando il valore VOUT di una tensione multifase. Un indirizzo rail viene impostato tramite un registro denominato MFR_RAIL_ADDRESS (0xFA) e il cui valore predefinito è 0x80, che disabilita l’indirizzamento rail, mentre impostando l’indirizzo rail a qualsiasi altro valore si abilita l’indirizzamento rail. Il master del bus tratta un indirizzo rail come un dispositivo sul bus anche se non è un dispositivo separato. Il master del bus non può rilevare la differenza, quindi gli indirizzi rail fanno parte della mappa complessiva degli indirizzi del sistema e non devono entrare in conflitto con altri indirizzi.

Indirizzi di canale

C’è un ultimo indirizzo speciale detto “indirizzo di canale”, che viene pure impostato mediante un registro, come un indirizzo rail, utilizzando MFR_CHANNEL_ADDRESS (0xD8). Gli indirizzi di canale aggiungono un indirizzo al bus che dirige a una specifica pagina, per cui non occorre usare il registro PAGE quando si usa un indirizzo di canale. Il master del bus tratta un indirizzo di canale come un altro dispositivo sul bus e non può nascere alcun conflitto con altri indirizzi.

PIANIFICAZIONE DEGLI INDIRIZZI

La pianificazione degli indirizzi è semplice; basta creare un foglio di calcolo con tutti i dispositivi e gli indirizzi elencati, utilizzando i seguenti tipi di indirizzo:

  • Indirizzi normali
  • Indirizzi globali
  • Indirizzi di tensione
  • Indirizzi di canale
  • Indirizzi speciali (ARA)
  • Indirizzi non PSM

Non devono esistere sovrapposizioni di indirizzi, eccetto gli indirizzi globali, e tutti gli indirizzi devono essere unici quando hanno un indirizzo base in comune.

IMPOSTAZIONE DEGLI INDIRIZZI

Sebbene le modalità di assegnazione degli indirizzi e il loro funzionamento siano in gran parte molto simili, esistono lievi differenze tra la famiglia di controller CC/CC LTC388X e la famiglia di manager LTC297X. Inoltre, vi sono anche differenze di minore entità all’interno delle famiglie stesse. Tuttavia, i principi di funzionamento sono simili, e tutti i dispositivi possono essere considerati in modo generale prima di passare a differenze specifiche. Per tutti i dispositivi PSM, l’indirizzo effettivo del dispositivo PSM sul bus è una combinazione di un valore di registro, detto BASE ADDRESS, e di modifiche opzionali mediante resistori collegati ai pin del dispositivo, detti pin ASEL (Address Select). Esistono molti motivi per l’uso di pin ASEL anziché di dispositivi preprogrammati. Anzitutto, la preprogrammazione richiede tempo e comporta un costo, e potrebbe non essere desiderabile preprogrammare i dispositivi in generale; molti dispositivi inoltre hanno pin di configurazione per impostare la tensione di uscita e questo potrebbe essere tutto ciò che è necessario. In secondo luogo, se un dispositivo ha un errore CRC sulla NVM, perderebbe il proprio indirizzo e il master del bus non potrebbe mai comunicare in modo unico con ciascun dispositivo per riprogrammarlo. La soluzione consiste quindi nell’usare i pin ASEL e un indirizzo base. Un master del bus può comunicare con tutti i dispositivi utilizzando l’indirizzo globale 0x5B; può pertanto impostare il valore BASE ADDRESS poiché tutti i dispositivi PSM supportano il registro MFR_I2C_BASE_ADDRESS [MFR_I2C_BASE_ADDRESS è denominato in modo diverso in alcuni dispositivi, ma è sempre 0xE6 nel codice di comando]. Il master del bus può quindi far sì che tutti i dispositivi leggano i corrispondenti pin di indirizzo e tutti i dispositivi avranno un indirizzo unico conosciuto dal master del bus. Non appena quest’ultimo può comunicare con ciascun dispositivo individualmente, è possibile riprogrammare la EEPROM. Ciò significa quanto segue, ed è l’informazione più importante presentata in questo articolo, che va sempre tenuta a mente: tutti i dispositivi sul bus devono avere un indirizzo unico quando tutti hanno un valore BASE ADDRESS in comune, e i loro pin ASEL sono stati letti e applicati. Se si segue questa regola, è possibile ripristinare un sistema con LTpowerPlay, un codice di riferimento Linduino o un firmware personalizzato in caso di danneggiamento di qualsiasi NVM. Quindi, per ripristinare un sistema non è mai necessario dissaldare dispositivi Linear Technology PSM. Seguono i dettagli delle famiglie di prodotti per illustrare come impostare gli indirizzi e come lavorare nell’ambito dei parametri della mappa degli indirizzi.

Famiglia PSM LTC388X

Gli indirizzi dei dispositivi PSM della famiglia LTC388X vanno impostati tramite una combinazione del valore BASE ADDRESS e del valore ottenuto dai pin ASEL. Alcuni dispositivi LTC388X hanno un solo pin ASEL mentre altri ne hanno due, così che vengono trattati in modo diverso.

Singolo pin ASEL

La Tabella 2 mostra i pin ASEL dalla scheda dati dell’LTC3880, dotato di un solo pin ASEL. I tre bit “xyz” nell’indirizzo della colonna slave corrispondono al valore BASE ADDRESS, memorizzato nel registro MFR_I2C_BASE_ADDRESS (0xE6).

Table 2

Tabella 2: Pin ASEL dalla scheda dati dell'LTC3880

Il pin ASEL programma i quattro bit meno significativi dalla tabella, eccetto il caso in cui non vi siano resistori sul pin ASEL; in tal caso, vengono utilizzati tutti e sette i bit del valore BASE ADDRESS. Usare “Open” sui pin ASEL solo quando sul bus c’è un solo dispositivo. I pin ASEL devono essere utilizzati in qualsiasi applicazione multidispositivo, per programmare l’indirizzo. L’uso del singolo pin ASEL per programmare il dispositivo limita a 16 il numero di indirizzi sul bus. Un MUX sul bus fornisce una soluzione per l’espansione del numero di indirizzi e viene discussa nella sezione Segmentazione del bus, più avanti.

Due pin ASEL

Due pin ASEL espandono a 127 il limite di 16 indirizzi. La Tabella 3 mostra i pin ASEL dalla scheda dati dell’LTC3882. Se ASEL1 è impostato su “from EEPROM”, ASEL0 funziona come il singolo pin ASEL dell’LTC3880. I resistori collegati al pin ASEL1 controllano i tre bit più significativi dell’indirizzo del dispositivo, espandendo così a 127 il numero di indirizzi unici. Un sistema consistente di dispositivi a uno e due pin ASEL potrebbe avere fino a 16 di ciascun dispositivo a singolo pin ASEL e tanti dispositivi a due pin ASEL quanti sono gli indirizzi disponibili.

Table 3

Tabella 3: Pin ASEL dalla scheda dati dell'LTC3882

Famiglia PSM LTC297X

La differenza principale, per quanto riguarda la famiglia LTC297X, è che i pin ASEL selezionano valori che vengono aggiunti a un BASE ADDRESS; “aggiunti” significa che non viene eseguita alcuna sostituzione né mascheratura di bit. La Tabella 4 rappresenta la tabella di look-up degli indirizzi dell’LTC2975. Questi pin ASEL hanno tre stati: alto (H), basso (L) o non collegato (NC). Due pin selezionano nove valori diversi indicati con “N = ”. In questa tabella il valore BASE ADDRESS è uguale a 0x5C e quando N = 0, l’indirizzo è 0x5C. La tabella ha anche una colonna relativa a 8 bit; questo è l’indirizzo utilizzato nel documento, con uno shift a sinistra di una posizione come discusso in precedenza, per chi è abituato a questa convenzione.

Table 4

Tabell 4: Tabella di look-up degli indirizzi dell'LTC2975

 

DISADATTAMENTI CRC

Tutti i dispositivi PSM di Linear Technology sono dotati di EEPROM, che registrano le impostazioni necessarie per determinare la tensione di uscita, i limiti di supervisione e il funzionamento base. Qualsiasi errore nella memoria potrebbe causare danni ai carichi. I dispositivi Linear PSM hanno una specifica di mantenimento nella EEPROM di 10 anni. Tuttavia, condizioni impreviste del sistema durante un’operazione di scrittura EEPROM, come temperature elevate o una riduzione improvvisa della tensione di alimentazione, potrebbero causare la mancata esecuzione dell’operazione stessa, danneggiando il contenuto della EEPROM. La funzione del CRC è verificare la correttezza del contenuto della EEPROM. Un CRC valido garantisce che il dispositivo funzioni correttamente; un CRC non valido ne inibisce il funzionamento e notifica l’host con un segnale PMBus ALERTB.

Modalità di funzionamento del CRC

Quando un dispositivo PSM viene acceso inizialmente, trasferisce il contenuto della EEPROM nella RAM, poiché quest’ultima è la memoria operativa del dispositivo. Al termine del trasferimento, il dispositivo calcola un CRC del contenuto della RAM e lo confronta con il CRC registrato nella EEPROM [Il dispositivo PSM crea il CRC nella propria EEPROM quando un’operazione scrive dati sulla EEPROM attraverso la RAM o esternamente]. Se i due valori CRC sono uguali, il dispositivo funziona, mentre se sono diversi, il dispositivo segnala un errore CRC e rimane nello stato di reset.  Collegando i pin GPIOB/FAULTB di tutti i dispositivi PSM e programmando i dispositivi per condividere errori e inibire il funzionamento quando vi sono errori, farà sì che qualsiasi CRC nell’intero sistema prevenga l’erogazione di potenza da tutte le linee di tensione del sistema. Questo è in genere il progetto ottimale del sistema a meno che un’analisi multierrore non abbia dimostrato che tutte le combinazioni di errori sono sicure. Quando tutte le tensioni sono disinserite, l’analisi è molto più semplice e il sistema diventa molto più sicuro poiché qualsiasi errore comporta il disinserimento completo di tutte le tensioni.

CRC dell’LTC388X

Se un dispositivo LTC388X ha un disadattamento CRC, il suo indirizzo diventa 0x7C. Se altri dispositivi LTC388X hanno un disadattamento CRC, i loro indirizzi saranno pure 0x7C simultaneamente. Questi dispositivi rimarranno a 0x7C finché le loro NVM non vengono riscritte con dati validi e passano attraverso la fase di inizializzazione, che si verifica a partire da un comando MFR_RESET (0xFD) o da un ciclo di alimentazione.

CRC dell’LTC297X

Se un dispositivo LTC297X ha un disadattamento CRC, il suo valore potrebbe essere uno di due indirizzi. Il caso semplice è l’indirizzo base predefinito 0x5C, che si verifica quando l’intera EEPROM ha un disadattamento CRC. Poiché l’LTC297X elabora la EEPROM in blocchi e quelli presso la parte inferiore potrebbero avere CRC validi mentre quelli presso la parte superiore potrebbero non averli, è anche possibile avere un indirizzo uguale all’indirizzo base memorizzato. Questo è differente rispetto all’LTC388X, poiché questo dispositivo esegue un CRC completo dell’intera EEPROM prima di determinare l’indirizzo, mentre l’LTC297X determina l’indirizzo in modo incrementale.

Correzione di disadattamenti CRC

In genere, i disadattamenti CRC non vengono corretti mai manualmente. LTpowerPlay può correggere facilmente disadattamenti CRC con il suo strumento di programmazione e In Flight Update correggerà pure disadattamenti CRC. Tuttavia, per comprendere meglio le operazioni di indirizzamento, è utile capire come entrambi correggono disadattamenti CRC. Il primo passo consiste nell’ottenere accesso a tutti i dispositivi con disadattamenti CRC individualmente, il che comporta inviare comandi PMBus per ripristinare gli indirizzi individuali.  Viene inviato un comando MFR_I2C_BASE_ADDRESS all’indirizzo globale 0x5B, quindi viene inviata una sequenza di comandi affinché tutti i dispositivi leggano i corrispondenti pin ASEL.

Nota: si può inviare un comando specifico al dispositivo con disadattamento CRC se è possibile determinarne l’indirizzo attuale, come 0x7C per l’LTC388X o l’indirizzo base predefinito di un LTC297X. Tuttavia, è molto più semplice usare un indirizzo globale poiché ciò non crea problemi per altri dispositivi. Inoltre, se il bus non è ben pianificato e un LTC297X viene fatto corrispondere all’indirizzo di un dispositivo non PMBus, l’invio del comando specifico potrebbe avere effetti collaterali. Il secondo passo consiste nell’inviare dati al dispositivo. In teoria, si potrebbe utilizzare ogni comando supportato dal dispositivo, ma è più efficiente inviare dati in grande quantità tramite un comando MFR_EE_DATA. LTpowerPlay e In Flight Update usano entrambi questo comando. Il primo passo non funziona con un progetto dalla pianificazione scadente che non usi i pin ASEL per programmare tutti i dispositivi su indirizzi unici. Se impostando MFR_I2C_BASE_ADDRESS si fa sì che un dispositivo PSM abbia lo stesso indirizzo, non esiste alcun modo di usare MFR_EE_DATA per ripristinare un singolo dispositivo, poiché qualsiasi dispositivo che condivida lo stesso indirizzo sarà programmato con gli stessi dati.

SEGMENTAZIONE DEL BUS

Vi sono due motivi principali per segmentare un PMBus:

  1. Indirizzamento
  2. Capacità/velocità

La segmentazione del bus ai fini dell'indirizzamento in genere viene eseguita solo in sistemi molto grandi.  Problemi di capacità si possono verificare in sistemi molto grandi con lunghi instradamenti del bus laddove il master del bus funzioni a 400kHz; ciò può causare una violazione della specifica di temporizzazione o interferire con gli obiettivi prestazionali. Normalmente, si usa un multiplexer LTC4306, la cui caratteristica fondamentale è la possibilità di collegare segmenti individuali uno alla volta o tutti i segmenti contemporaneamente.  Quando si correggono disadattamenti CRC, lo si usa per collegare il master del bus a un segmento alla volta. Quando è utilizzato dal firmware, lo si usa per collegare tutti i segmenti in un singolo bus; in quest’ultimo caso, tutti gli indirizzi devono essere unici. Sarà utile esaminare un esempio tipico e osservare come soddisfare il processo di correzione nonché il funzionamento come bus singolo.

Esempio di segmentazione del bus

Il sistema illustrato nell’esempio consiste di:

  • 4 segmenti (vedere Figura 2);
  • ciascun segmento ha 16 dispositivi LTC3880;
  • un multiplexer LTC4306.
4306 F06

Figura 2. Esempio di segmentazione del bus

 

L’indirizzo dell’LTC4306 viene impostato a 0x50 mediante tre pin ASEL. Ha un indirizzo Mass Write globale, a 0x5D. Gli LTC3880 hanno indirizzi globali di 0x5A e 0x5B. Questo progetto usa quattro indirizzi base per i quattro segmenti: 0x20, 0x30, 0x40 e 0x60. Si evita così la gamma di indirizzi da 0x50 a 0x5F sui quali gli indirizzi di tutti i dispositivi Linear Technology PSM sono programmabili. Inoltre, la maggior parte dei dispositivi Linear Technology I2C/SMBus supporta questa gamma di indirizzi. Un dispositivo LTC4316 I2C rende agevolmente qualsiasi altro dispositivo compatibile con questa gamma di indirizzi. Anche a tensioni multifase si possono assegnare indirizzi nella gamma 0x5X o indirizzi a quelli disponibili sotto 0x10 oppure oltre 0x6F.

Funzionamento del firmware

Il controller di gestione della scheda (BMC, Board Management Controller) collegherà il PMBus d'ingresso a tutti i segmenti del PMBus di uscita impostando il registro 3 dell’LTC4306 su 0xF0. In questo stato, vi sono 64 dispositivi sul bus con indirizzi da 0x20 a 0x2F, da 0x30 a 0x3F, da 0x40 a 0x4F e da 0x60 a 0x6F. Gli indirizzi globali 0x5A e 0x5B sono disponibili per operazioni globali. Nessun dispositivo che funzioni normalmente senza disadattamenti CRC risponderà all’indirizzo 0x7C.

Programmazione del sistema

La programmazione del sistema consiste nella programmazione iniziale dei segmenti del bus tramite LTpowerPlay o In Flight Update. L’LTC4306 collegherà un segmento alla volta impostando il registro 3 sui valori, rispettivamente, 0x80, 0x40, 0x20 e 0x10. LTpowerPlay o In Flight Update programmerà il particolare segmento collegato dall’LTC4306. Il valore MFR_I2C_BASE_ADDRESS per il segmento collegato viene impostato utilizzando l’indirizzo globale 0x5B. I resistori dei pin ASEL assicurano un indirizzo unico per ciascun dispositivo sul segmento collegato. Tali resistori sono identici per i rispettivi dispositivi su ciascun segmento e selezionano un modificatore dell’indirizzo da 0x00 e 0x0F. Collegando un segmento alla volta per impostare MFR_I2C_BASE_ADDRESS per ciascun segmento individualmente si ottiene un indirizzo unico del dispositivo per tutti e 64 i dispositivi.

Nota: se si usano dispositivi con due pin ASEL, i segmenti potrebbero contenere oltre 16 dispositivi, poiché due pin ASEL consentono la creazione di più dispositivi – fino a 128 – con un indirizzo base.

Correzione di disadattamenti CRC

Questo caso è identico al caso della programmazione del sistema. LTpowerPlay e In Flight Update trattano in modo identico il processo di programmazione; in entrambi i casi, durante la programmazione viene utilizzato MFR_I2C_BASE_ADDRESS. Ciascun segmento viene collegato uno alla volta e viene programmato.

Interazione tra il funzionamento del firmware e la programmazione del sistema

Per impostazione predefinita dell’LTC4306, tutti i segmenti sono scollegati; quindi, se il BMC viene mantenuto allo stato di reset ai fini del debug del sistema, viene collegato un controller DC1613 da PMBus a USB, e con LTpowerPlay in funzione, il DC1613  non sarà collegato a nessun dispositivo PSM sul bus (si utilizza un DC1613 con LTpowerPlay per configurare i progetti PSM ed eseguirne il debug). Esistono due modi per accertarsi che il firmware non interferisca con LTpowerPlay: il primo consiste nell’usare una modalità di debug per il BMC tale che quest’ultimo lasci lo stato di reset, colleghi tutti i segmenti e quindi vada in pausa; ciò consente a LTpowerPlay di interagire con il bus completo ai fini dello sviluppo e debug del sistema.  Quando il BMC va in pausa, previene interazioni con LtpowerPlay; sebbene quest’ultimo possa operare in modalità multi-master, comandi che dipendono dal comando PAGE interagiranno, così che la condizione di pausa fa sì che né il firmware né LTpowerPlay ricevano segnali di telemetria errati. Il secondo modo consiste nel mantenere il BMC allo stato di reset durante il debug e consentire a LTpowerPlay di controllare il MUX. Questo è in genere il caso più sicuro, poiché quando il BMC viene rilasciato dallo stato di reset, ad esempio dopo avere disattivato LTpowerPlay, imposta il multiplexer allo stato appropriato indipendentemente dallo stato attuale. Quando il BMC e LTpowerPlay controllano alternativamente il bus, né l’uno né l’altro master deve presupporre quale sia lo stato del multiplexer. Ogni volta che viene iniziata un’operazione importante, come quando l’uno o l’altro master continua da uno stato di pausa, anzitutto il multiplexer deve essere impostato allo stato appropriato.

SOMMARIO

La pianificazione degli indirizzi di gestione di un sistema di alimentazione non è complicata, ma occorre prestare attenzione a casi speciali di programmazione e di ripristino del sistema da disadattamenti CRC. Tutti i dispositivi PSM di Linear Technology sono compatibili. Tutti i dispositivi Linear Technology PSM combinano un valore BASE ADDRESS e una modifica tramite pin ASEL per creare un indirizzo unico, e sono soggetti a un disadattamento CRC se durante la programmazione si verifica un’interruzione dell’alimentazione. Impostando il valore BASE ADDRESS, riprogrammando la EEPROM e reimpostando il dispositivo sarà possibile un ripristino completo del sistema. LTpowerPlay e In Flight Update gestiscono automaticamente il ripristino di un appropriato piano relativo agli indirizzi. Durante la pianificazione degli indirizzi vengono assegnati valori BASE ADDRESS e pin ASEL in modo tale che non vi sia mai un caso in cui due dispositivi sono in permanenza allo stesso indirizzo. L’uso di dispositivi con due pin ASEL o la segmentazione del bus con un multiplexer I2C come l’LTC4306 consente la progettazione di sistemi più grandi. La pianificazione degli indirizzi va eseguita prima della progettazione della scheda di circuiti stampati poiché i pin ASEL e la segmentazione del bus dipendono da resistori e dalla piedinatura.

 

di Michael Jones, Applications Engineering Manager, Linear Technology Corporation

 

Una risposta

  1. Maurizio Di Paolo Emilio Maurizio 16 settembre 2016

Scrivi un commento