Étape 5: Huit puces EEPROM sur un seul bus I²C ? Comment ?
J’ai un couple de circuits EEPROM 24LC128t dans mes tiroirs, je vais mettre un peu de côté la tâche principale et mettre en place une planche d’essai, donc je peux vous montrer quelques exemples, cisailles de forme d’onde, comportements. Le processeur qui sera de lire et d’écrire leur sera un DIABLOTIN électrique, niché dans un dev-Comité d’avril.
Vous trouverez la fiche technique des circuits EEPROM que j’utiliserai ici.
Comme vous pouvez le voir sur les schémas de broches, il a 3 de ses bits d’adresse esclave mis en évidence sur les broches 1, 2 et 3. Si nous connecter A0 et A1 à la masse, A2 à 5V et regardez à la Figure 5-1 de la dataheet, vous pouvez voir comment les quatre premiers bits sont durs codé à 0101, le reste sont contrôlés par les broches A0, A1 et A2. Si je me connecte les broches de la façon dont j’ai déjà dit, mon adresse esclave sera b1010100. La 8-ème bit est le bit R/W.
Ayant trois bits librement modifiables dans l’adresse de l’esclave permet de connecter des 8 EEPROMS au même bus sans tous les conflits. Cet espace de stockage moyen 8 fois 16 = 128 kilo-octets. Vous pouvez stocker des variables, des mots de la configuration, des images, tout ce que vous voulez. Nos adresses de puce mémoire variera de 0xA0 à 0xA7.
Autres éléments d’interface est un truc facile à faire, une fois que vous avez vos routines I²C tous fonctionnés, fonctionne bien. La feuille de données répertorie toujours les registres qui peuvent être écrits ou lu. La même façon que vous lisez à partir d’une EEPROM, vous pouvez lire données partir un accéléromètre I²C, circuit de mesure de courant et ainsi de suite.
Concevoir et construire une planche de prototype/test pour le test EEPROM
Bien sûr, j’ai utilisé Altium pour concevoir la carte, puis exporté la mise en page, comme indiqué précédemment, repassé l’oeuvre à une planche de cuivre, lavé le papier, a jeté le jury dans le chlorure ferrique, scié, il, elle empilés et percé il.
Pour faciliter l’interfaçage, j’ai utilisé les dimensions exactes du Conseil avril, donc mon Conseil de test peut casser dedans vraiment facile. Puissance provient de la 500 convertisseur DC / DC mA lignes d’avril, le SDA et SCL ont été retracés aux broches du PGI I²C. Depuis avril est open source, les gars cool de l’IMP électrique téléchargé les fichiers PCB, j’ai qui est devenu un modèle de l’étape et il est inclus dans ma conception de Conseil - seulement sur la couche mécanique.
Les spaghettis de mise en page n’était pas difficile à passer, il m’a fallu environ 30 minutes.
Repassage fait, toner ont adhéré au cuivre, il faut laver le papier.
Papier commence à tremper dans de l’eau, c’est ce point, où je commence à déteindre papier.
Papier est éteint, nous pouvons commencer la gravure
Un instantané pris avant la gravure dans le chlorure ferrique. Les taches noires sont corrections que je devais faire après un rapide visual vérifier de la couche d’encre.
Et c’est fait. Nous pouvons commencer le perçage, découpage et remplissage avec des composants.
J’ai ne pas souder les en-têtes sur les plaquettes que je n’avez pas besoin, il est plus facile de l’enlever dans « histoire de feu ».
Communique avec la mémoire de monstre, que nous venons de créer
Les modèles binaires spécifiques avec des timings précis vous permettra d’accéder à la mémoire de ces I²C EEPROM-s pour lire ou écrire des procédures.
• Si l'on désire écrire des données dans un 24LC128t, que son algorithme devrait suivre ce schéma :
1 - envoi commencer à condition
2 - envoyer adresse esclave, avec la 8-ème bit faible (écriture de signalisation) - 0xA8
3 - envoi esclave Registre adresse, c’est le "lieu" nous voulons que nos octets de données à écrire. Tout enregistrer des adresses et leurs noms figurent dans la fiche de l’appareil, ainsi que leur but.
4 - envoyer l’octet nous voulons écrire sur l’adresse que nous avons spécifié avant
5 - envoyer stop condition
• Si l'on souhaite lire à partir de la 24LC128t, il/elle devrait faire quelque chose comme ceci :
1 - envoi commencer à condition
2 - envoyer adresse esclave, avec la 8-ème bit faible (écriture de signalisation) - 0xA8
4 - envoi esclave Registre adresse, d'où on entend par données
5 - commencer à envoyer condition (redémarrage)
6 - envoyer adresse esclave, avec la 8-ème peu élevé (signalisation lu) - 0xA9
7 - lire les données d’autobus
8 - condition d’arrêt envoyer
J’ai enregistré quelques segments de forme d’onde critique, vérifiez-les ! Tout fonctionne tel que spécifié dans la spécification I²C.
Cette image illustre l’écriture de 0x88 à l’adresse 0x00FF de la première puce EEPROM avec adresse esclave 0xA0.
Ici vous pouvez voir une lecture de l’adresse 0x00FF la troisième puce EEPROM avec adresse esclave 0xA2. Les données retournées sont 0xFF.
Nous allons voir comment I²C est liée à notre projet à l’étape suivante.