Stap 5: Acht EEPROM chips op een enkele I²C bus? Hoe?
Ik heb een paar van 24LC128t EEPROM circuits in mijn lades, ik zal de hoofdtaak een beetje opzij, en opbouwen van een test-bord, dus ik kan u enkele voorbeelden, golfvorm knipsels, gedrag laten zien. De processor die zal lezen en schrijven ze zullen een elektrische IMP, verscholen in een April dev-board.
Het gegevensblad van de circuits van de EEPROM mij zal zitten using kan worden gevonden hier.
Zoals u op de pin-diagrammen zien kunt, heeft het 3 van zijn slaaf adres bits haalde op pin 1, 2 en 3. Als we A0 en A1 verbinden met grond, A2 naar 5V, en kijk bij figuur 5-1 van de dataheet, kunt u zien hoe de eerste vier bits zijn hard gecodeerd voor 0101, de rest worden gecontroleerd door de pinnen A0, A1 en A2. Als ik verbind de pinnen de manier die ik al eerder zei, zullen mijn slave-adres b1010100. De 8-th-bit is de R/W-bit.
Met drie vrij aanpasbaar bits in het adres van de slaaf kunt u 8 EEPROMS verbinden met dezelfde bus zonder eventuele conflicten. Dat betekent 8 keer 16 = 128 kilobytes opslagruimte. U kunt variabelen, configuratie woorden, beelden, alles wat je wilt opslaan. Onze chip geheugenadressen zullen variëren van 0xA0 te 0xA7.
Interfacing andere componenten is een eenvoudige dingen te doen, als u eenmaal uw I²C routines alle uitgewerkt, werkt goed. Het gegevensblad vermeldt altijd de registers die kunnen worden geschreven of gelezen. Dezelfde manier die u vanaf een EEPROM lezen, vindt u gegevens van een I²C versnellingsmeter, meting stroomkring, enzovoort.
Ontwerpen en bouwen van een prototype/test board voor de EEPROM-test
Natuurlijk, ik Altium gewend met het ontwerp van de Raad van bestuur, dan de lay-out geëxporteerd, zoals eerder gezegd, de illustratie aan een koper bestuur gestreken, gewassen uit de papier, gooide het bord in ferrichloride, zaagde het, het opgestapeld en geboord het.
Ik gebruikte om de interfacing gemakkelijk, de exacte afmetingen van de April-bestuur, dus mijn test board in het echt gemakkelijk uitlijnen kunt. Macht is overgenomen uit de 500 mA DC / DC converter van de April en het SCL en SDA lijnen werden getraceerd naar de I²C pinnen van het GMB. Aangezien April is open source, de koele jongens van de elektrische IMP geüpload de PCB-bestanden, ik draaide die in een stap-model, en opgenomen in mijn raadsontwerp - alleen op mechanische laag.
De lay-out spaghetti was niet moeilijk te worden gerouteerd, het kostte me ongeveer 30 minuten.
Strijkservice gedaan, vastgehouden toner aan de koper, nu moeten we het papier afwassen.
Papier begint te weken in wat water, is dit punt, waar ik beginnen te wrijven uit papier.
Papier is uitgeschakeld, kunnen we beginnen met etsen
Een momentopname genomen voordat etsen in ferrichloride. De zwarte vlekken zijn correcties die ik moest maken na een snelle visuele controle van de toner laag.
En het gedaan. Boren, snijden en vullen met componenten kunnen we beginnen.
Ik niet de koppen aan de pads die ik hoef niet te solderen, is het gemakkelijker om het opstijgen in "geval van vuur".
Communiceren met het geheugen van de monster dat we zojuist hebt gemaakt
Met behulp van de specifieke bits patronen met specifieke tijdsinstellingen kunt u toegang tot het geheugen van deze I²C EEPROM-s met lezen of schrijven van procedures.
• Als men wenst te schrijven van gegevens naar een 24LC128t, dat zijn algoritme moet volgen dit patroon:
verzenden begint 1 - voorwaarde
2 - Stuur slaaf adres, met de 8-th beetje lage (signalering schrijven) - 0xA8
3 - verzenden slaaf register adres, dit is de "plaats" we willen onze gegevensbyte worden geschreven. Alle adressen registreren en hun namen zijn te vinden in het apparaat-gegevensblad, samen met hun doel.
4 - Stuur de byte die wij schrijven op het adres dat we hebben opgegeven willen vóór
5 - verzenden stop-voorwaarde
• Als men wenst te lezen van de 24LC128t, hij/zij moet iets doen als dit:
verzenden begint 1 - voorwaarde
2 - Stuur slaaf adres, met de 8-th beetje lage (signalering schrijven) - 0xA8
4 - verzenden slaaf register adres, waaruit gegevens worden gelezen
5 - verzenden start voorwaarde (opnieuw opstarten)
6 - verzenden slaaf adres, met de hoge 8-th-bit (signalering lezen) - 0xA9
7 - gegevens lezen van bus
8 - verzenden stop-voorwaarde
Ik heb enkele kritische golfvorm segmenten opgenomen, check ze uit! Alles werkt zoals gespecificeerd in de specificatie van de I²C.
Deze afbeelding toont het schrijven van 0x88 naar het adres 0x00FF van de eerste EEPROM-chip met 0xA0 slaaf adres.
Hier kan je een 0x00FF adres van de derde EEPROM-chip met slaaf adres 0xA2 lezen. De geretourneerde gegevens is 0xFF.
Laten we eens kijken hoe I²C zich verhoudt tot ons project in de volgende stap.