Microchips nya 23k256 är ett seriellt gränssnitt 32 kilobyte SRAM-minnescip, som erbjuds i 8 Pin Dip samt 8 PIN-kod så paket. SRAM, som EEPROM, är ett datalagringsmedium. Data som hålls i SRAM förloras utan konstant kraft, men det är verkligen snabbt och det finns inga gränser för antalet komponera cykler. Eerpom lagrar data även utan makt, men det är trögt och vanligtvis begränsat till cirka en miljon conform.
32K SRAM-chips har normalt 15 adresslinjer samt 8 datalinjer, som IS61LV256al Vi utnyttjade på vår CPLD-framstegskiva. 23k256 behöver bara fyra signallinjer, men offrar dock hastigheten på ett parallellt minnesgränssnitt. Det är en utmärkt metod att lägga till ytterligare minne till en low-pin count microcontroller utan att routera 23 signalspår. Vi visar dig exakt hur du gränssnitt i det här chipet nedan.
Microchip 23k256, 32k SPI SRAM (Mouser Search, Octopart Search, $ 1.48). Datablad (PDF).
Buss pirat
23k256 (PIN #)
Cs
/ Cs (1)
Missa
Så (2)
Mosi
Si (5)
Klocka
Sck (6)
Gnida
/ Hålla (7)
Gnida
VSS (4)
+ 3Volts
Vcc (8)
Vi länkade 23k256 till vårt buss-pirat universal seriell gränssnitt verktyg som visas i tabellen. Det är oerhört viktigt att driva chipet som endast använder busspiratens 3.3Volt-utbud, är 23K256 inte betygsatt för 5Volts.
Busspiraten är en enkel metod för att upptäcka om ett chip utan att komponera någon typ av kod, men exakt samma huvudmän gäller att använda 23k256 med vilken typ av mikrokontroller som helst. Den här presentationen använder den senaste versionen av busspiratfirmware (26-Feb-2009), som du kan ladda ner från vår Google-kod SVN.
Hiz> m <-Choose Mode 1. HIZ ... 5. SPI ... Läge> 5 <-spi-läge Lägesuppsättning ... <-30kHz, alla standardinställningar Spi redo Spi> W <-Capital "W" tillåter strömförsörjning Spänningsförsörjning på Spi>
Först sätter vi bussen pirat i SPI-läge på 30kHz samt valda standardinställningarna för alla alternativ. Vi gjorde det möjligt för bussen Pirates ombord 3.3Volt strömförsörjning med en finansiering “W”.
Konfigurationsregister
BIT 7,6 = BYTE (00) Sida (10) SEQUENCE (01) -läge
Bit 0 = Håll inaktiverad (1)
Data hålls inne i 23k256 på 1024 sidor som var och en innehåller 32Bytes. Sortimentet av läsningar såväl som komponesserna är inställt med bit 7 samt 6 av konfigurationsregistret. Förvaring kan nås av byte (00), med 32Byte sidor (10) eller sekventiellt med hela 32k (01). Vi arbetar i sekvensläge, vilket ger oss att få tillgång till för att kolla upp såväl som att komponera någon typ av data, var som helst i 32K av lagringsutrymme.
Hållstiftet används för att pausa överföringar när andra marker på exakt samma bussbehov som ska nås. Bit 0 av konfigurationsregistret styr HOLD-stiftet. När den är inställd på 1 är hållstiftet inaktiverad. Vi anslutna hålla till mark för typisk operation, men dess prestanda kan vara helt inaktiverad genom att ställa in bit 0.
Konfigurationsregistret ändras genom att skicka komponteringskonfigurationskommandot (0B00000001) samt de nya inställningarna.
Spi> [0B1 0B01000001] <-Update Config Register CS aktiverade Skriv: 0x01 <-Write Config Command Skriv: 0x41 <-Value att skriva Cs inaktiverad Spi>
Vi börjar en SPI-avtal genom att möjliggöra 23k256-chip-linjen ([). Vi skickar kommandot med komponera konfiguration (0B1, 0x01 eller 1), följs av de nya inställningarna för konfigurationsregistret (0B01000001, 0x41). Vi sätter bit 6 för sekventiell förstärkning till läge, såväl som Set Bit 0 för att inaktivera HOLD PIN-funktionen. Bits 5-1 har ingen funktion, men de databladstaterna är att alltid komponera 0. Tellanslösningen avslutas genom att inaktivera chip-valet (]).
SPI> [0B101 R]
CS aktiverade
Skriv: 0x05 <-read Config Register
Läs: 0x41 <-Value läs
Cs inaktiverad
Spi>
Därefter använder vi kommandot utcheckad konfigurationsregister (0B00000101, 0B101, 0x05 eller 5) för att bekräfta att inställningarna var korrekt skrivna. Detta kommando returnerar en byte (R) som borde matcha det värde som vi består i föregående operation (0x41 eller 0B01000001).
Datatillgång
Nu kan vi kolla ut såväl som att komponera data till chipet. Komponenterna börjar med datakomposemanget (0B10, 0x02 eller 2), följd av två byte som identifierar var de ska komponera data. Värdena till butik skickas efter adressen. Beroende på lägesåtkomst till läge kan en enda byte, en sida eller hela minnet fyllas i en enda operation.
SPI> [0B10 0 0 1 2 3 4 5 6 7 8 9 10]
CS aktiverade
Skriv: 0x02 <-Data Compose Command
Skriv: 0x00 <-Address byte 1
Skriv: 0x00 <-Address byte 2
Skriv: 0x01 <-start av data för att skriva
Skriv: 0x02
Skriv: 0x03
Skriv: 0x04
Skriv: 0x05
Skriv: 0x06
Skriv: 0x07
Skriv: 0x08
Skriv: 0x09
Skriv: 0x0a
Cs inaktiverad
Spi>
Vi börjar med komponera datakommando (0B10) samt ställa in komponera platsen till början av chipet (0 0). Vi skickar ett övergripande tio värden för att lagra, siffrorna 1 till 10.
Efter att ha komponerat data kan vi kolla tillbaka det med det kontrollerade datakommandot (0B00000011, 0B11, 0x03 eller 3).
SPI> [0B11 0 0 R: 10]
CsAKTIVERAD
Skriv: 0x03 <-read Data Command
Skriv: 0x00 <-start Adress Byte 1
Skriv: 0x00 <-start Adress Byte 2
Bulk checkade ut 0x0a byte: <-läsa ut 10 byte
0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a
Cs inaktiverad
Spi>
Vi skickar det checkade ut data-kommandot (0B11), följt av adressen för att börja läsa (0 0). Vi kollade sedan tillbaka 10 byte (R: 10). 10 byte är siffrorna 1 till 10, exakt samma värden som vi komponerade i föregående steg.
Gilla det här inlägget? Kontrollera de delar som du kanske har missat. Vill du begära en postpost? Vänligen lämna dina tips i kommentarerna.