Taula de continguts:

Programació MTP Arduino Exemple: 5 passos
Programació MTP Arduino Exemple: 5 passos

Vídeo: Programació MTP Arduino Exemple: 5 passos

Vídeo: Programació MTP Arduino Exemple: 5 passos
Vídeo: When The Quiet Kid Does Your Homework 💀 #electronics #arduino #engineering 2024, Juliol
Anonim
Exemple de programació MTP Arduino
Exemple de programació MTP Arduino

En aquesta instrucció, us mostrem com utilitzar l'esbós de programació Arduino SLG46824 / 6 per programar un dispositiu Dialog SLG46824 / 6 GreenPAK ™ Programable Multiple Time Programable (MTP).

La majoria de dispositius GreenPAK són programables d'una sola vegada (OTP), és a dir, que un cop escrit el seu banc de memòria no volàtil (NVM), no es pot sobreescriure. Els GreenPAK amb la funció MTP, com el SLG46824 i el SLG46826, tenen un tipus de banc de memòria NVM diferent que es pot programar més d’una vegada.

Hem escrit un esbós d’Arduino que permet a l’usuari programar un MTP GreenPAK amb unes quantes ordres senzilles de monitor en sèrie. En aquest instructiu fem servir un SLG46826 com a GreenPAK amb MTP.

Proporcionem codi de mostra per a l’Arduino Uno mitjançant una plataforma de codi obert basada en C / C ++. Els dissenyadors haurien d’extrapolar les tècniques utilitzades al codi Arduino per a la seva plataforma específica.

Per obtenir informació específica sobre les especificacions del senyal I2C, l'adreça I2C i els espais de memòria, consulteu la Guia de programació del sistema GreenPAK que es proporciona a la pàgina del producte SLG46826. Aquest instructable proporciona una implementació senzilla d’aquesta guia de programació.

A continuació es descriuen els passos necessaris per entendre com s'ha programat el xip GreenPAK. Tot i això, si només voleu obtenir el resultat de la programació, descarregueu-vos el programari GreenPAK per veure el fitxer de disseny GreenPAK ja completat. Connecteu el kit de desenvolupament GreenPAK a l'ordinador i premeu el programa per crear l'IC personalitzat.

Pas 1: connexions Arduino-GreenPAK

Connexions Arduino-GreenPAK
Connexions Arduino-GreenPAK
Connexions Arduino-GreenPAK
Connexions Arduino-GreenPAK

Per programar l’NVM del nostre SLG46826 GreenPAK amb el nostre esbós Arduino, primer haurem de connectar quatre pins Arduino Uno al nostre GreenPAK. Podeu connectar aquests pins directament a l’adaptador de sòcol GreenPAK o a una placa de sortida amb el GreenPAK soldat.

Tingueu en compte que les resistències de tracció I2C externes no es mostren a la figura 1. Connecteu una resistència de tracció de 4,7 kΩ tant des de SCL com de SDA a la sortida de 3,3 V de l’Arduino.

Pas 2: exportació de dades de GreenPAK NVM des d'un fitxer de disseny de GreenPAK

Exportació de dades de GreenPAK NVM des d’un fitxer de disseny de GreenPAK
Exportació de dades de GreenPAK NVM des d’un fitxer de disseny de GreenPAK
Exportació de dades de GreenPAK NVM des d’un fitxer de disseny de GreenPAK
Exportació de dades de GreenPAK NVM des d’un fitxer de disseny de GreenPAK
Exportació de dades de GreenPAK NVM des d’un fitxer de disseny de GreenPAK
Exportació de dades de GreenPAK NVM des d’un fitxer de disseny de GreenPAK

Reunirem un disseny GreenPAK molt senzill per il·lustrar com exportar les dades NVM. El disseny següent és un simple canvi de nivell on els passadors blaus de l'esquerra estan lligats a VDD (3,3 v), mentre que els passadors grocs de la dreta estan lligats a VDD2 (1,8 v).

Per exportar la informació d’aquest disseny, heu de seleccionar Fitxer → Exporta → Exporta NVM, tal com es mostra a la figura 3.

Aleshores haureu de seleccionar fitxers Intel HEX (*.hex) com a tipus de fitxer i desar-lo.

Ara, haureu d’obrir el fitxer.hex amb un editor de text (com Notepad ++). Per obtenir més informació sobre el format i la sintaxi del fitxer HEX d’Intel, consulteu la seva pàgina de Viquipèdia. Per a aquesta aplicació, només ens interessa la part de dades del fitxer, tal com es mostra a la figura 5.

Ressalteu i copieu els 256 bytes de dades de configuració de NVM ubicats al fitxer HEX. Cada línia que copiem té 32 caràcters, el que correspon a 16 bytes.

Enganxeu la informació a la secció nvmString ressaltada de l’esbós d’Arduino tal com es mostra a la figura 6. Si utilitzeu un microcontrolador que no és Arduino, podeu escriure una funció per analitzar la nvmData desada al fitxer GreenPAK. GP6. (Si obriu un fitxer GreenPAK amb un editor de text, veureu que emmagatzemem la informació del projecte en un format XML de fàcil accés.)

Per definir les dades EEPROM per al vostre disseny GreenPAK, seleccioneu el bloc EEPROM al tauler de components, obriu el seu tauler de propietats i feu clic a "Estableix dades".

Ara podeu editar cada byte a EEPROM individualment amb la nostra interfície GUI.

Un cop configurades les vostres dades EEPROM, podeu exportar-les a un fitxer HEX mitjançant el mateix mètode descrit anteriorment per exportar les dades NVM. Inseriu aquests 256 bytes de dades EEPROM a la secció eepromString de l'esbós d'Arduino.

Per a cada disseny personalitzat, és important comprovar la configuració de protecció a la pestanya "Seguretat" de la configuració del projecte. Aquesta pestanya configura els bits de protecció per als registres de configuració de matriu, l'NVM i l'EEPROM. En determinades configuracions, la càrrega de la seqüència NVM pot bloquejar el SLG46824 / 6 a la configuració actual i eliminar la funcionalitat MTP del xip.

Pas 3: utilitzeu l'Arduino Sketch

Utilitzeu l'Arduino Sketch
Utilitzeu l'Arduino Sketch

Pengeu l’esbós al vostre Arduino i obriu el monitor sèrie amb una velocitat de 115200 baudios. Ara podeu utilitzar les indicacions del MENU de l'esbós per realitzar diverses ordres:

● Llegir: llegeix les dades NVM del dispositiu o les dades EEPROM mitjançant l'adreça esclava especificada

● Esborra: esborra les dades NVM del dispositiu o les dades EEPROM mitjançant l'adreça esclava especificada

● Escriu: elimina i escriu les dades NVM del dispositiu o les dades EEPROM mitjançant l'adreça esclava especificada. Aquesta ordre escriu les dades que es guarden a les matrius nvmString o eepromString.

● Ping: retorna una llista d'adreces esclaves del dispositiu connectades al bus I2C

Els resultats d’aquestes ordres s’imprimiran a la consola del monitor sèrie.

Pas 4: consells i bones pràctiques de programació

Al llarg del suport al SLG46824 / 6, hem documentat alguns consells de programació per ajudar a evitar trampes habituals associades a l’esborrat i l’escriptura a l’espai d’adreces NVM. Les subseccions següents descriuen aquest tema amb més detall.

1. Execució d'escriptures de pàgina NVM de 16 bytes precises:

Quan escriviu dades al NVM del SLG46824 / 6, hi ha tres tècniques que cal evitar:

● Escriptures de pàgines amb menys de 16 bytes

● La pàgina escriu amb més de 16 bytes

● Escriptures de pàgines que no comencen al primer registre d'una pàgina (IE: 0x10, 0x20, etc.)

Si s'utilitza alguna de les tècniques anteriors, la interfície MTP ignorarà l'escriptura I2C per evitar carregar l'NVM amb informació incorrecta. Es recomana realitzar una lectura I2C de l'espai d'adreces NVM després d'escriure per verificar la transferència de dades correcta.

2. Transferència de dades NVM als registres de configuració de Matrix

Quan s’escriu l’MVM, els registres de configuració de la matriu no es carreguen automàticament amb les dades NVM acabades d’escriure. La transferència s'ha d'iniciar manualment fent ciclisme del PAK VDD o generant un restabliment suau mitjançant I2C. En configurar el registre a l'adreça 0xC8, el dispositiu torna a habilitar la seqüència de reinici d'engegada (POR) i recarrega les dades del registre de l'NVM als registres.

3. Restabliment de l'adreça I2C després d'una esborrada NVM:

Quan s'esborra l'NVM, l'adreça NVM que conté l'adreça esclava I2C s'establirà a 0000. Després de l'esborrat, el xip mantindrà la seva adreça esclava actual als registres de configuració fins que es restableixi el dispositiu tal com s'ha descrit anteriorment. Un cop restablert el xip, l'adreça esclava I2C s'ha d'establir a l'adreça 0xCA dins dels registres de configuració cada vegada que GreenPAK s'encén o es reinicia. Això s'ha de fer fins que la nova pàgina d'adreces esclaves I2C s'hagi escrit al NVM.

Pas 5: discussió sobre errades

Debat sobre Errata
Debat sobre Errata

En escriure al "Byte d'esborrat de pàgina" (adreça: 0xE3), el SLG46824 / 6 produeix un ACK que no compleix I2C després de la part "Dades" de l'ordre I2C. Aquest comportament es pot interpretar com un NACK en funció de la implementació del master I2C.

Per adaptar-nos a aquest comportament, hem modificat el programador Arduino comentant el codi que es mostra a la Figura 11. Aquesta secció de codi comprova si hi ha un AC2 I2C al final de cada ordre I2C de la funció eraseChip (). Aquesta funció s'utilitza per esborrar les pàgines NVM i EEPROM. Com que aquesta secció de codi es troba en un bucle For, el "retorn -1;" line fa que la MCU surti prematurament de la funció.

Tot i la presència d'un NACK, les funcions d'esborrar NVM i EEPROM s'executaran correctament. Per obtenir una explicació detallada d’aquest comportament, consulteu “Problema 2: Comportament d’ACK que no compleix I2C per al byte d’esborrat de pàgina de NVM i EEPROM” al document d’errades SLG46824 / 6 (Revision XC) al lloc web de Dialog.

Conclusió

En aquest Manual descrivim el procés d’utilitzar el programador Arduino subministrat per carregar cadenes NVM i EEPROM personalitzades a un IC GreenPAK. El codi de l’Arduino Sketch és comentat a fons, però si teniu cap pregunta sobre l’esbós, poseu-vos en contacte amb un dels nostres enginyers d’aplicacions de camp o publiqueu la vostra pregunta al nostre fòrum. Per obtenir informació més detallada sobre els registres i els procediments de programació MTP, consulteu la Guia de programació integrada de Dialog.

Recomanat: