Raspberry Pi Python EEPROM programmerare
Denna enkla handledning vägleder användare genom processen att gränssnitt en EEPROM chip till en Raspberry Pi använder GPIO stiften och utför operationer med Python skript.
Låt oss börja med några grunderna på EEPROM:
1) CE, OE, vi - vad betyder det allt?
För att läsa, skriva och radera data från en EEPROM chip, måste vi först ta chip på rätt påstå. Detta görs med 3 kontroll stift vanligen heter Chip aktiverar, utgång aktivera och skriva aktiverar.
Chip aktivera kontroller oavsett chip drivs upp. Beroende på vilken typ av chip blir ansluter denna pin till marken eller till spänning chipet på eller av. Onödigt att säga, att om vi vill utföra någon åtgärd som vi måste aktivera chipet. Inaktivera chippet tillåter oss att stänga chip medan det elektriskt ansluten till vår krets. Detta sätt chip förbrukar mindre ström.
Output Enable är ett stift som brukade berätta det chip som du vill läsa från den. Än en gång, beroende på chipet, ansluter denna pin till marken eller till spänning kommer att säga chip att presentera dig med innehållet i tanke minnesadress (mer om det senare). Inaktivera produktionen avslutar Läs operationen.
Skriv aktivera är liknar utdata aktiverar men används för att skriva data till chipet. Beroende på vilken typ av chip blir ansluta den till marken eller spänning chip skriva data till en vald minnesadress (mer om det senare).
2) så hur kontrollerar jag stiften?
Det är lätt! Beroende på din EEPROM chip, du aktivera eller inaktivera dessa stift genom att ansluta dem till en spänningskälla eller till marken. Den jargong som används för transporten är "dra upp" för att ansluta till spänning och "dra ner" för att ansluta till marken. I vissa fall (och i vårt fall i synnerhet) orsakar dra upp en pin motsvarande staten inaktiveras i stället för aktiverad. Detta kan låta counter intuitiv eftersom du förväntar dig att dra upp till vända på något men så är livet ibland.
Varning!: lämnar en av dessa pins bortkopplad från kretsen inte är lika att det dras! Om någon av stiften lämnas bortkopplad från kretsen vi kallar dem "flytande" och i huvudsak deras tillstånd är slumpmässiga och obestämd. Till exempel kan RF störningar orsaka en hög eller låg signal och därför göra pin agera som om det är aktiverad eller inaktiverad. Alltid ansluta alla stiften till din krets!
3) det handlar om sekvensering!
Antag att jag vill läsa några data från min EEPROM, vad ska jag göra med dessa stift att göra allt arbete? Utför åtgärder på EEPROM handlar om att göra saker i rätt ordning. Så om vi vill läsa från chip, skulle vår sekvens vara som följer:
Ställa in minnesadress (dra upp/ner adressen buss stift att bilda en adress i binärt format)
Aktivera chip (uppstart)
Aktivera utgång (Läs denna adress)
Läs minnesadress (Data buss stiften nu sätts hög/låg enligt uppgifter i adressen)
Avaktivera utgång (Data bussa produktionen fortfarande är aktiverad på denna punkt så jag kan läsa data)
Inaktivera kretsen (power ner, ingen utgång på databussen på denna punkt)
Upprepa ovanstående för nästa adress du vill läsa.
4) vilken var bussen du pratade om?
Databuss och adress buss. EEPROM chip, tillsammans med CE, OE och vi stiften, måste också en uppsättning stift för att ange en adress och en uppsättning stift för läsa/skriva data till den valda adressen. Antalet stift för adress bussen beror på kapaciteten av chipet. Ju högre kapacitet, fler adresser behövs och därför mer stiften bussen kommer att ha. Om du vill ange en adress drar vi upp/ner stiften att representera 1/0. Varje adress representeras av en kombination av bitar innehåller 1 byte. Så får ett chip med 2048 adresser 2048 byte kapacitet. Stiften på adress bussen är vanligen numrerade som så: A0, A1, A2, A3,... Ett/en
Databuss, i motsats till adress bussen, kan antingen mata in eller utgång, beroende på funktion valts. Om vi väljer att skriva till chip, vi ange adress att skriva till adressen bussen och sedan vi set databussen genom att dra dess stift upp/ned för att representera en byte. Om vi väljer att läsa från chip, sedan sätts databuss stiften hög/låg att representera 1/0 i den byten som ingår i adressen vi valt. Stiften på databussen som numrerade: D0, D1, D2,... D7
5) en sista sak: mest signifikanta biten
Mest signifikanta biten är i huvudsak den bit som representerar det högsta värdet i en byte. Olika marker får använda en annan beställning ordning när du lagrar byte. Dokumentationen av ditt chip kommer att definiera om den mest signifikanta biten är den högsta eller lägsta pin nummer på databussen. När du vet vilken pin har MSB, resten av stiften representerar resten av bitarna i stigande eller fallande ordning. Till exempel om MSB är på stift D7 i databussen, då den minst signifikanta biten kommer den vara på stift D0.