Table des matières:

Exemple de programmation MTP Arduino : 5 étapes
Exemple de programmation MTP Arduino : 5 étapes

Vidéo: Exemple de programmation MTP Arduino : 5 étapes

Vidéo: Exemple de programmation MTP Arduino : 5 étapes
Vidéo: Lesson 07: Getting Additional 5V and GND from Arduino 2024, Juillet
Anonim
Exemple de programmation MTP Arduino
Exemple de programmation MTP Arduino

Dans ce Instructable, nous montrons comment utiliser l'esquisse de programmation SLG46824/6 Arduino pour programmer un dispositif Dialog SLG46824/6 GreenPAK™ programmable à plusieurs heures (MTP).

La plupart des appareils GreenPAK sont programmables une fois (OTP), ce qui signifie qu'une fois leur banque de mémoire non volatile (NVM) écrite, elle ne peut pas être écrasée. Les GreenPAK avec la fonction MTP, comme le SLG46824 et le SLG46826, ont un type différent de banque de mémoire NVM qui peut être programmé plusieurs fois.

Nous avons écrit une esquisse Arduino qui permet à l'utilisateur de programmer un MTP GreenPAK avec quelques commandes de moniteur série simples. Dans ce Instructable, nous utilisons un SLG46826 comme notre GreenPAK avec MTP.

Nous fournissons un exemple de code pour l'Arduino Uno en utilisant une plate-forme open source basée sur C/C++. Les concepteurs doivent extrapoler les techniques utilisées dans le code Arduino pour leur plate-forme spécifique.

Pour des informations spécifiques concernant les spécifications du signal I2C, l'adressage I2C et les espaces mémoire, veuillez vous référer au Guide de programmation GreenPAK In-System fourni sur la page produit SLG46826. Ce Instructable fournit une mise en œuvre simple de ce guide de programmation.

Ci-dessous, nous avons décrit les étapes nécessaires pour comprendre comment la puce GreenPAK a été programmée. Cependant, si vous souhaitez simplement obtenir le résultat de la programmation, téléchargez le logiciel GreenPAK pour afficher le fichier de conception GreenPAK déjà terminé. Branchez le kit de développement GreenPAK sur votre ordinateur et appuyez sur programme pour créer le circuit intégré personnalisé.

Étape 1: Connexions Arduino-GreenPAK

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

Pour programmer le NVM de notre SLG46826 GreenPAK avec notre sketch Arduino, nous devrons d'abord connecter quatre broches Arduino Uno à notre GreenPAK. Vous pouvez connecter ces broches directement à l'adaptateur de prise GreenPAK ou à une carte de dérivation avec le GreenPAK soudé.

Veuillez noter que les résistances de rappel I2C externes ne sont pas illustrées sur la figure 1. Veuillez connecter une résistance de rappel de 4,7 kΩ du SCL et du SDA à la sortie 3,3 V de l'Arduino.

Étape 2: Exportation des données GreenPAK NVM à partir d'un fichier de conception GreenPAK

Exportation de données GreenPAK NVM à partir d'un fichier de conception GreenPAK
Exportation de données GreenPAK NVM à partir d'un fichier de conception GreenPAK
Exportation de données GreenPAK NVM à partir d'un fichier de conception GreenPAK
Exportation de données GreenPAK NVM à partir d'un fichier de conception GreenPAK
Exportation de données GreenPAK NVM à partir d'un fichier de conception GreenPAK
Exportation de données GreenPAK NVM à partir d'un fichier de conception GreenPAK

Nous allons mettre en place une conception GreenPAK très simple pour illustrer comment exporter les données NVM. La conception ci-dessous est un simple levier de niveau où les broches bleues à gauche sont liées à VDD (3,3 v), tandis que les broches jaunes à droite sont liées à VDD2 (1,8 v).

Pour exporter les informations de cette conception, vous devez sélectionner Fichier → Exporter → Exporter NVM, comme le montre la figure 3.

Vous devrez ensuite sélectionner les fichiers Intel HEX (*.hex) comme type de fichier et enregistrer le fichier.

Maintenant, vous devrez ouvrir le fichier.hex avec un éditeur de texte (comme Notepad++). Pour en savoir plus sur le format et la syntaxe de fichier HEX d'Intel, consultez sa page Wikipedia. Pour cette application, nous ne nous intéressons qu'à la partie données du fichier, comme illustré à la figure 5.

Mettez en surbrillance et copiez les 256 octets de données de configuration NVM situés dans le fichier HEX. Chaque ligne que nous copions fait 32 caractères, ce qui correspond à 16 octets.

Collez les informations dans la section nvmString en surbrillance de l'esquisse Arduino, comme illustré à la figure 6. Si vous utilisez un microcontrôleur non Arduino, vous pouvez écrire une fonction pour analyser le nvmData enregistré dans le fichier GreenPAK. GP6. (Si vous ouvrez un fichier GreenPAK avec un éditeur de texte, vous verrez que nous stockons les informations du projet dans un format XML facilement accessible.)

Pour définir les données EEPROM de votre conception GreenPAK, sélectionnez le bloc EEPROM dans le panneau des composants, ouvrez son panneau de propriétés et cliquez sur "Définir les données".

Maintenant, vous pouvez éditer chaque octet de l'EEPROM individuellement avec notre interface GUI.

Une fois vos données EEPROM définies, vous pouvez les exporter vers un fichier HEX en utilisant la même méthode décrite précédemment pour exporter les données NVM. Insérez ces 256 octets de données EEPROM dans la section eepromString du sketch Arduino.

Pour chaque conception personnalisée, il est important de vérifier les paramètres de protection dans l'onglet « Sécurité » des paramètres du projet. Cet onglet configure les bits de protection pour les registres de configuration de la matrice, la NVM et l'EEPROM. Sous certaines configurations, le téléchargement de la séquence NVM peut verrouiller le SLG46824/6 dans sa configuration actuelle et supprimer la fonctionnalité MTP de la puce.

Étape 3: Utilisez le croquis Arduino

Utiliser le croquis Arduino
Utiliser le croquis Arduino

Téléchargez le croquis sur votre Arduino et ouvrez le moniteur série avec un débit de 115 200 bauds. Vous pouvez maintenant utiliser les invites MENU de l'esquisse pour exécuter plusieurs commandes:

● Lire - lit soit les données NVM de l'appareil, soit les données EEPROM à l'aide de l'adresse esclave spécifiée

● Effacer - efface soit les données NVM de l'appareil, soit les données EEPROM à l'aide de l'adresse esclave spécifiée

● Write - Efface puis écrit les données NVM ou EEPROM de l'appareil à l'aide de l'adresse esclave spécifiée. Cette commande écrit les données enregistrées dans les tableaux nvmString ou eepromString.

● Ping - renvoie une liste d'adresses d'esclaves de périphériques connectés au bus I2C

Les résultats de ces commandes seront imprimés sur la console du moniteur série.

Étape 4: Conseils de programmation et meilleures pratiques

Au cours de la prise en charge du SLG46824/6, nous avons documenté quelques conseils de programmation pour aider à éviter les pièges courants associés à l'effacement et à l'écriture dans l'espace d'adressage NVM. Les sous-sections suivantes décrivent ce sujet plus en détail.

1. Exécution d'écritures de page NVM précises de 16 octets:

Lors de l'écriture de données sur la NVM du SLG46824/6, il y a trois techniques à éviter:

● La page écrit avec moins de 16 octets

● La page écrit avec plus de 16 octets

● Les écritures de page qui ne commencent pas au premier registre d'une page (IE: 0x10, 0x20, etc.)

Si l'une des techniques ci-dessus est utilisée, l'interface MTP ignorera l'écriture I2C pour éviter de charger la NVM avec des informations incorrectes. Nous vous recommandons d'effectuer une lecture I2C de l'espace d'adressage NVM après l'écriture pour vérifier le transfert de données correct.

2. Transfert des données NVM dans les registres de configuration Matrix

Lorsque le NVM est écrit, les registres de configuration de la matrice ne sont pas automatiquement rechargés avec les données NVM nouvellement écrites. Le transfert doit être initié manuellement en cyclant le PAK VDD ou en générant une réinitialisation logicielle à l'aide d'I2C. En définissant le registre à l'adresse 0xC8, l'appareil réactive la séquence de réinitialisation à la mise sous tension (POR) et recharge les données de registre de la NVM dans les registres.

3. Réinitialisation de l'adresse I2C après un effacement NVM:

Lorsque le NVM est effacé, l'adresse NVM contenant l'adresse esclave I2C sera définie sur 0000. Après l'effacement, la puce conservera son adresse esclave actuelle dans les registres de configuration jusqu'à ce que l'appareil soit réinitialisé comme décrit ci-dessus. Une fois la puce réinitialisée, l'adresse esclave I2C doit être définie à l'adresse 0xCA dans les registres de configuration à chaque fois que le GreenPAK est mis sous tension ou réinitialisé. Cela doit être fait jusqu'à ce que la nouvelle page d'adresse d'esclave I2C ait été écrite dans le NVM.

Étape 5: Discussion d'errata

Discussion d'errata
Discussion d'errata

Lors de l'écriture dans le « Page Erase Byte » (Adresse: 0xE3), le SLG46824/6 produit un ACK non conforme à I2C après la partie « Data » de la commande I2C. Ce comportement peut être interprété comme un NACK selon l'implémentation du maître I2C.

Pour tenir compte de ce comportement, nous avons modifié le programmeur Arduino en commentant le code illustré à la figure 11. Cette section de code vérifie la présence d'un ACK I2C à la fin de chaque commande I2C dans la fonction effacerChip(). Cette fonction permet d'effacer les pages NVM et EEPROM. Étant donné que cette section de code est située dans une boucle For, le « return -1; » La ligne provoque la sortie prématurée de la fonction par le MCU.

Malgré la présence d'un NACK, les fonctions d'effacement NVM et EEPROM s'exécuteront correctement. Pour une explication détaillée de ce comportement, veuillez vous référer à « Problème 2: Comportement ACK non conforme à I2C pour l'octet d'effacement de page NVM et EEPROM » dans le document d'errata SLG46824/6 (Révision XC) sur le site Web de Dialog.

Conclusion

Dans ce Instructable, nous décrivons le processus d'utilisation du programmeur Arduino fourni pour télécharger des chaînes NVM et EEPROM personnalisées sur un circuit intégré GreenPAK. Le code dans l'esquisse Arduino est soigneusement commenté, mais si vous avez des questions concernant l'esquisse, veuillez contacter l'un de nos ingénieurs d'application sur le terrain ou poster votre question sur notre forum. Pour plus d'informations sur les registres et les procédures de programmation MTP, veuillez vous référer au Guide de programmation dans le système de Dialog.

Conseillé: