Sommario:
- Passaggio 1: connessioni Arduino-GreenPAK
- Passaggio 2: esportazione dei dati NVM GreenPAK da un file di progettazione GreenPAK
- Passaggio 3: usa lo schizzo Arduino
- Passaggio 4: suggerimenti e best practice per la programmazione
- Passaggio 5: Discussione Errata
Video: Esempio di programmazione Arduino MTP: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
In questo Instructable, mostriamo come utilizzare lo sketch di programmazione Arduino SLG46824/6 per programmare un dispositivo Dialog SLG46824/6 GreenPAK™ Multiple-Time Programmable (MTP).
La maggior parte dei dispositivi GreenPAK sono One-Time Programmable (OTP), il che significa che una volta che il loro banco di memoria non volatile (NVM) è stato scritto, non può essere sovrascritto. I GreenPAK con la funzione MTP, come SLG46824 e SLG46826, hanno un diverso tipo di banco di memoria NVM che può essere programmato più di una volta.
Abbiamo scritto uno sketch Arduino che consente all'utente di programmare un MTP GreenPAK con alcuni semplici comandi del monitor seriale. In questo Instructable utilizziamo un SLG46826 come GreenPAK con MTP.
Forniamo codice di esempio per Arduino Uno utilizzando una piattaforma open source basata su C/C++. I progettisti dovrebbero estrapolare le tecniche utilizzate nel codice Arduino per la loro piattaforma specifica.
Per informazioni specifiche relative alle specifiche del segnale I2C, all'indirizzamento I2C e agli spazi di memoria, fare riferimento alla Guida alla programmazione nel sistema GreenPAK fornita nella pagina del prodotto SLG46826. Questo Instructable fornisce una semplice implementazione di questa guida alla programmazione.
Di seguito abbiamo descritto i passaggi necessari per comprendere come è stato programmato il chip GreenPAK. Tuttavia, se desideri solo ottenere il risultato della programmazione, scarica il software GreenPAK per visualizzare il file di progettazione GreenPAK già completato. Collega il kit di sviluppo GreenPAK al tuo computer e premi il programma per creare l'IC personalizzato.
Passaggio 1: connessioni Arduino-GreenPAK
Per programmare la NVM del nostro SLG46826 GreenPAK con il nostro schizzo Arduino, dovremo prima collegare quattro pin Arduino Uno al nostro GreenPAK. È possibile collegare questi pin direttamente all'adattatore per socket GreenPAK o a una scheda breakout con GreenPAK saldato.
Si noti che i resistori di pull up I2C esterni non sono mostrati nella Figura 1. Collegare un resistore di pull up da 4,7 kΩ sia da SCL che da SDA all'uscita da 3,3 V di Arduino.
Passaggio 2: esportazione dei dati NVM GreenPAK da un file di progettazione GreenPAK
Metteremo insieme un design GreenPAK molto semplice per illustrare come esportare i dati NVM. Il design sotto è un semplice cambio di livello in cui i pin blu a sinistra sono legati a VDD (3.3v), mentre i pin gialli a destra sono legati a VDD2 (1.8v).
Per esportare le informazioni da questo disegno, è necessario selezionare File → Esporta → Esporta NVM, come mostrato nella Figura 3.
Sarà quindi necessario selezionare Intel HEX Files (*.hex) come tipo di file e salvare il file.
Ora dovrai aprire il file.hex con un editor di testo (come Notepad++). Per saperne di più sul formato e la sintassi del file HEX di Intel, controlla la sua pagina Wikipedia. Per questa applicazione siamo interessati solo alla parte dati del file come mostrato nella Figura 5.
Evidenzia e copia i 256 byte dei dati di configurazione NVM che si trovano all'interno del file HEX. Ogni riga che stiamo copiando è lunga 32 caratteri, che corrispondono a 16 byte.
Incollare le informazioni nella sezione nvmString evidenziata dello sketch Arduino come mostrato nella Figura 6. Se si utilizza un microcontrollore non Arduino, è possibile scrivere una funzione per analizzare i nvmData salvati nel file GreenPAK. GP6. (Se apri un file GreenPAK con un editor di testo, vedrai che memorizziamo le informazioni sul progetto in un formato XML facilmente accessibile.)
Per impostare i dati EEPROM per il tuo progetto GreenPAK, seleziona il blocco EEPROM dal pannello dei componenti, apri il pannello delle proprietà e fai clic su "Imposta dati".
Ora puoi modificare ogni byte nella EEPROM individualmente con la nostra interfaccia GUI.
Una volta impostati i dati EEPROM, è possibile esportarli in un file HEX utilizzando lo stesso metodo descritto in precedenza per l'esportazione dei dati NVM. Inserisci questi 256 byte di dati EEPROM nella sezione eepromString dello sketch Arduino.
Per ogni design personalizzato, è importante controllare le impostazioni di protezione all'interno della scheda "Sicurezza" delle impostazioni del progetto. Questa scheda configura i bit di protezione per i registri di configurazione della matrice, la NVM e la EEPROM. In determinate configurazioni, il caricamento della sequenza NVM può bloccare SLG46824/6 alla sua configurazione corrente e rimuovere la funzionalità MTP del chip.
Passaggio 3: usa lo schizzo Arduino
Carica lo sketch sul tuo Arduino e apri il monitor seriale con un baud rate di 115200. Ora puoi usare i prompt del MENU dello schizzo per eseguire diversi comandi:
● Lettura: legge i dati NVM del dispositivo o i dati EEPROM utilizzando l'indirizzo slave specificato
● Cancella: cancella i dati NVM del dispositivo o i dati EEPROM utilizzando l'indirizzo slave specificato
● Scrivi: cancella e quindi scrive i dati NVM del dispositivo o i dati EEPROM utilizzando l'indirizzo slave specificato. Questo comando scrive i dati che vengono salvati negli array nvmString o eepromString.
● Ping: restituisce un elenco di indirizzi di dispositivi slave collegati al bus I2C
I risultati di questi comandi verranno stampati sulla console del monitor seriale.
Passaggio 4: suggerimenti e best practice per la programmazione
Nel corso del supporto di SLG46824/6, abbiamo documentato alcuni suggerimenti di programmazione per evitare insidie comuni associate alla cancellazione e alla scrittura nello spazio degli indirizzi NVM. Le seguenti sottosezioni descrivono questo argomento in modo più dettagliato.
1. Esecuzione di scritture di pagine NVM a 16 byte precise:
Quando si scrivono dati sulla NVM di SLG46824/6, ci sono tre tecniche da evitare:
● La pagina scrive con meno di 16 byte
● La pagina scrive con più di 16 byte
● Scritture di pagine che non iniziano al primo registro all'interno di una pagina (IE: 0x10, 0x20, ecc.)
Se viene utilizzata una delle tecniche di cui sopra, l'interfaccia MTP ignorerà la scrittura I2C per evitare di caricare la NVM con informazioni errate. Si consiglia di eseguire una lettura I2C dello spazio degli indirizzi NVM dopo la scrittura per verificare il corretto trasferimento dei dati.
2. Trasferimento dei dati NVM nei registri di configurazione della matrice
Quando viene scritta la NVM, i registri di configurazione della matrice non vengono ricaricati automaticamente con i dati NVM appena scritti. Il trasferimento deve essere avviato manualmente eseguendo un ciclo del PAK VDD o generando un soft reset utilizzando I2C. Impostando il registro all'indirizzo 0xC8, il dispositivo riabilita la sequenza di ripristino all'accensione (POR) e ricarica i dati del registro dalla NVM nei registri.
3. Ripristino dell'indirizzo I2C dopo una cancellazione NVM:
Quando la NVM viene cancellata, l'indirizzo NVM contenente l'indirizzo slave I2C sarà impostato su 0000. Dopo la cancellazione, il chip manterrà il suo attuale indirizzo slave all'interno dei registri di configurazione fino a quando il dispositivo non verrà resettato come descritto sopra. Una volta che il chip è stato resettato, l'indirizzo dello slave I2C deve essere impostato nell'indirizzo 0xCA all'interno dei registri di configurazione ogni volta che il GreenPAK viene spento e riacceso o ripristinato. Questo deve essere fatto fino a quando la nuova pagina dell'indirizzo slave I2C è stata scritta nella NVM.
Passaggio 5: Discussione Errata
Quando si scrive su "Page Erase Byte" (Address: 0xE3), SLG46824/6 produce un ACK non conforme a I2C dopo la parte "Data" del comando I2C. Questo comportamento potrebbe essere interpretato come un NACK a seconda dell'implementazione del master I2C.
Per adattarsi a questo comportamento, abbiamo modificato il programmatore Arduino commentando il codice mostrato nella Figura 11. Questa sezione del codice verifica la presenza di un I2C ACK alla fine di ogni comando I2C nella funzione eraseChip(). Questa funzione viene utilizzata per cancellare le pagine NVM e EEPROM. Poiché questa sezione di codice si trova in un ciclo For, il "return -1;" line fa sì che l'MCU esca prematuramente dalla funzione.
Nonostante la presenza di un NACK, le funzioni di cancellazione NVM e EEPROM verranno eseguite correttamente. Per una spiegazione dettagliata di questo comportamento, fare riferimento al "Problema 2: Comportamento ACK non conforme a I2C per NVM e EEPROM Page Erase Byte" nel documento errata SLG46824/6 (Revisione XC) sul sito Web di Dialog.
Conclusione
In questo Instructable descriviamo il processo di utilizzo del programmatore Arduino fornito per caricare stringhe NVM ed EEPROM personalizzate su un IC GreenPAK. Il codice nell'Arduino Sketch è completamente commentato, ma se hai domande sullo sketch, contatta uno dei nostri Field Application Engineers o pubblica la tua domanda sul nostro forum. Per informazioni più approfondite sui registri e le procedure di programmazione MTP, fare riferimento alla Guida alla programmazione nel sistema di Dialog.
Consigliato:
Come creare il tuo sistema operativo! (lotto ed esempio all'interno): 5 passaggi
Come creare il tuo sistema operativo! (batch ed esempio all'interno): fallo ora
Esempio di controller del pad che utilizza Pure Data: 4 passaggi
Controller pad di esempio che utilizza Pure Data: in questo Instructable creerò un controller per consentire ad alcuni vecchi pad del kit di batteria elettronica Roland di attivare i suoni senza il modulo batteria originale fornito con il kit. Userò Pure Data per creare una patch da caricare alcuni file wav e poi p
Esempio moderno, nuovo e più semplice di armadietto con tastiera a matrice Arduino 4x4: 3 passaggi
Esempio moderno, nuovo e più semplice di armadietto con tastiera a matrice Arduino 4x4: un altro esempio di utilizzo di una matrice di tastiera LCD 4x4 con un circuito I2C
Esempio di armadietto con tastiera a matrice Arduino 4x4: 6 passaggi
Esempio di Locker con Arduino Matrix Keypad 4x4: 2 modi per gestire una tastiera a 16 pulsanti con un minimo di pin
Esempio di base di termistore NTC e Arduino: 5 passaggi (con immagini)
Ejemplo Básico De Termistor NTC Y Arduino: Como hemos visto en un tutorial anterior, aunque con un microcontrolador no podemos medir directamente una resistencia, podemos hacer use de un divisore de tensión para transformar el valor de una resistencia en un equivalente de voltaje. Aunqu