Versione di codifica o configurazione su PCB


10

Devo codificare le informazioni sulla versione o sulla configurazione sulla scheda / elettricamente, in modo che il firmware possa rilevare il layout della scheda utilizzato.

Quali opzioni sono possibili e quali sono i loro pro / contro?


1
C'è anche questo Q di qualche tempo fa, le risposte sono simili a quelle già fornite (il che è buono!): Electronics.stackexchange.com/questions/41757/…
awjlogan

Risposte:


14

Dall'alto della mia testa, mi vengono in mente due semplici soluzioni.

  1. Hai n linee collegate al GPIO del tuo microcontrollore. Legale in alto o in basso a seconda della versione della tua scheda. Questo darebbe opzioni di configurazione di bordo. Ciò userebbe n pin sul microcontrollore. L'assorbimento di corrente statica sarebbe trascurabile.2n
  2. Inserire un ingresso nell'ADC del microcontrollore e utilizzare un partitore di tensione con valori diversi a seconda della configurazione della scheda. Questo userebbe solo un singolo pin del microcontrollore. Questo ha lo svantaggio che ci sarà un assorbimento di corrente statica attraverso il divisore. Sarebbe anche soggetto a errori DBA, mentre il primo suggerimento è cablato alla scheda.

Entrambi questi suggerimenti hanno un punto debole in quanto l'utente finale potrebbe facilmente modificarli, diciamo per aprire funzionalità "bloccate". Questo potrebbe non essere un problema per te, ma qualcosa da tenere a mente.


1
C'è anche una combinazione di [1] e [2]. È possibile utilizzare un pin del microcontrollore per ADC, ma utilizzare lo stesso componente di valore collegato in parallelo per formare un divisore di tensione. Quindi per esempio puoi avere quattro resistori da 10k che formano 10k / float (pull to vcc), float / 10k (pull to gnd), 10k / 10k (vcc / 2), 5k / 10k (2/3 di vcc), 10k / 5k (1/3 di vcc). Quindi in breve: una riga nella DBA, sono richiesti solo quantitativi diversi e un input ADC. Aiuta anche visivamente.
Socrate,

2
È possibile eliminare l'assorbimento di corrente statica della soluzione ADC se è possibile risparmiare un secondo pin: Invece di un divisore di tensione tra VCC e GND, sostituire VCC o GND con il secondo pin: è necessario leggere la configurazione della scheda solo una volta , all'inizio del programma, quindi impostare il pin alto / basso come richiesto per abilitare il partitore di tensione, eseguire la misurazione ADC, quindi attivare il pin in modo che entrambe le estremità del partitore di tensione abbiano lo stesso potenziale e nessun flusso di corrente.
Aleksi Torhamo,

1
La versione GPIO è inoltre soggetta a errori DBA, poiché in genere è configurata con collegamenti zero ohm. Potresti farlo nello schema e nel layout, ma è più costoso ( costi del tempo di layout ).
Graham,

1
Per quanto riguarda l'ADC, questo è quello che abbiamo usato sui prodotti in cui attualmente lavoro. Devi stare attento con le tolleranze dei resistori però. Se i tuoi due resistori hanno una tolleranza dell'1%, la tensione può arrivare fino al 2%, quindi al massimo ottieni 50 passaggi che puoi risolvere. In pratica è più sicuro dimezzarlo. Quindi, se hai resistori dell'1% e un intervallo di 5 V sul tuo ADC, vuoi che le versioni vengano segnalate a passi di 0,2 V.
Graham,

9

Ho usato un registro a scorrimento con pin legati in alto e in basso per codificare la revisione della scheda prima, se stai già usando SPI per qualcosa sulla tua scheda è banale leggerlo.

Se devi essere in grado di modificare l'ID in fase di esecuzione, allora sarebbe una buona idea usare i jumper anziché legare gli input con le tracce.


Stavo cercando su google IC per varianti di numeri di serie al silicio non unici, ma questa è un'alternativa intelligente. Soprattutto se lo si combina con un expander IO a filo singolo.
Jeroen3

7

Alcune opzioni che mi vengono in mente: -

Collegamenti resistori SMD PADS / O OHM. Utilizzare un sistema binario per la configurazione hardware per ridurre il numero di pin del processore.

Ponticelli. La scheda avrebbe pin del connettore 2xN che aggiungevano un ponticello al pin destro per consentire di selezionare la configurazione. Un errore è più facile da risolvere. Questo forse è un po 'costoso e usa più spazio sulla tavola a seconda del jumper.

Se si dispone di EEPROM sulla scheda, potrebbe essere possibile incorporare la configurazione in memoria.

È possibile cambiare il firmware stesso usando un #define o simile? Quindi non hai bisogno di spazio sulla scheda e pin extra per il rilevamento della versione.


1

Le EEPROM a un filo sono una buona soluzione perché richiedono solo un GPIO ma possono memorizzare una grande quantità di informazioni di configurazione. Consentono inoltre al microcontrollore di scrivere tali informazioni durante il test della scheda (ad es. Dati di calibrazione). Molti hanno un pin di protezione dalla scrittura o un bit programmabile una tantum per impedire ulteriori modifiche.

Altri vantaggi includono funzioni utili come numeri di serie univoci garantiti.

Questa opzione è utilizzata in molti sistemi, come le sonde e le batterie dell'oscilloscopio, a causa della necessità di una sola linea dati. La EEPROM può anche essere alimentata dalla linea dati stessa.

Lo svantaggio principale è il costo. Il costo non è elevato, ma sui prodotti fabbricati in serie possono importare pochi centesimi.

Un esempio di tale EEPROM è il DS2431, che memorizza 1kb.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.