Ultrasonic måttband (5 / 13 steg)
Steg 5: Åtta EEPROM chips på en enda I²C buss? Hur?
Jag har ett par 24LC128t EEPROM kretsar i mina lådor, jag kommer att lägga undan den viktigaste uppgiften lite och bygga upp en testet ombord, så jag kan visa dig några exempel, vågform snips, beteenden. Processorn som kommer att läsa och skriva dem kommer vara en elektrisk IMP, stoppade i ett April dev-board.
Databladet för EEPROM kretsar jag kommer att använda finns här.
Som ni kan se på pin-diagram, har 3 av dess slav adress bitar kom med ut på stift 1, 2 och 3. Om vi ansluta A0 och A1 till marken, A2 till 5V, och titta på figur 5-1 i dataheet, kan du se hur de första fyra bitarna är hård kodad till 0101, resten styrs av A0, A1 och A2 stiften. Om jag ansluter stift precis som jag sa innan, blir min slav adressen b1010100. Den 8: e biten är R/W lite.
Att ha tre fritt modifierbara bitarna i den slav-adressen kan du ansluta 8 EEPROMS till samma buss utan några konflikter. Det innebär 8 gånger 16 = 128 kilobyte utrymmet. Du kan lagra variabler, konfiguration ord, bilder, vad du vill. Våra chip minnesadresser kommer att variera från 0xA0 till 0xA7.
Gränsyta för andra komponenter är en lätt saker att göra, när du har din I²C rutiner alla fungerat, fungerar bra. Databladet visar alltid de journaler som kan skrivas eller läsa. På samma sätt som du läser från en EEPROM, du kan läsa data från en I²C accelerometer, mätning strömkretsen och så vidare.
Designa och bygga en prototyp/test styrelse för EEPROM test
Naturligtvis, jag använde Altium för att utforma styrelsen, sedan exporteras layout som sagt, strukna teckningen till en koppar ombord, tvättas bort papperet, kastade styrelsen in järnklorid, sågade det, staplade det och borras det.
För att göra gränssnittet enkelt, använde jag de exakta dimensionerna i April styrelsen, så min test ombord kan fästa in i det riktigt enkelt. Makt är tagen från 500 mA DC-DC omvandlare från April och den SDA SCL linjer spårades till I²C stift för den integrerade HAVSPOLITIKEN. Sedan April är öppen källkod, coola killarna från den elektriska IMP belastat upp PCB arkivera, jag vände det till en steg-modell, och ingår det i min styrelse design - bara på mekaniska lager.
Den layout spaghettin var inte svårt att gå, det tog mig ca 30 minuter.
Strykning gjort, följt toner förkoppra, nu måste vi tvätta bort papperet.
Papper börjar i blöt i lite vatten, det är denna punkt, där jag börjar smitta av papper.
Papper är avstängd, kan vi börja etsning
En ögonblicksbild fattas innan etsning i järnklorid. Svarta fläckar är korrigeringar jag behövde göra efter en snabb visuell kontroll av lagrets toner.
Och det är gjort. Vi kan börja borrning, skärning, och fylla med komponenter.
Jag löda inte headers till kuddar jag inte behöver, det är lättare att ta bort i "fallet med eld".
Kommunicera med monster minnet vi just skapat
Med de särskilda lite mönsterna med speciellt schema gör att du kan komma åt minnet av dessa I²C EEPROM-s med läsa eller skriva förfaranden.
• Om man önskar att skriva data till en 24LC128t, hans algoritm bör följa detta mönster:
1 - skicka start skick
2 - skicka slavadress, med den 8: e lite låg (signalering skriva) - 0xA8
3 - skicka slavadress register, detta är "plats" vi vill att våra databyte som ska skrivas. Alla registrera adresser och deras namn finns i enheten databladet, tillsammans med deras syfte.
4 - skicka byte vi vill skriva på adressen vi anges innan
5 - skicka stoppvillkor
• Om man vill läsa från 24LC128t, han bör göra något sånt här:
1 - skicka start skick
2 - skicka slavadress, med den 8: e lite låg (signalering skriva) - 0xA8
4 - skicka register slavadress, varifrån data ska läsas
5 - skicka börja skick (omstart)
6 - skicka slavadress, med den 8: e lite höga (signalering läsa) - 0xA9
7 - läsa data från buss
8 - skicka stoppvillkor
Jag spelade in några kritiska vågform segment, kolla in dem! Allt fungerar enligt I²C specifikation.
Denna bild visar att skriva 0x88 till 0x00FF första EEPROM chip med 0xA0 slavadress.
Här kan du se en läsa från 0x00FF adressen tredje EEPROM chip med slavadress 0xA2. Data som returnerades är 0xFF.
Låt oss se hur I²C förhåller sig till vårt projekt i nästa steg.