Deler: 32KB SPI SRAM-minne (23K256)

Mikrochips nye 23k256 er en serielt interfaced 32 kilobyte SRAM-minnebrikke, som tilbys i 8 PIN-dyp, samt 8 pin, så pakker. SRAM, som EEPROM, er et datalagringsmedium. Data holdt i SRAM går tapt uten konstant strøm, men det er virkelig rask, så vel som det er ingen grenser for antall komponentsykluser. Eerpom lagrer data selv uten kraft, men det er svakt så vel som typisk begrenset til rundt en million komponen sykluser.

32K SRAM-sjetonger har normalt 15 adresselinjer samt 8 datalinjer, som IS61LV256AL vi benyttet på vårt CPLD-fremskrittkort. 23k256 trenger bare fire signallinjer, men ofrer hastigheten på et parallelt minnegrensesnitt. Det er en utmerket metode for å legge til ekstra minne til en Low-Pin Count Microcontroller uten å rive 23 signalspor. Vi viser deg nøyaktig hvordan du kan grensesnitt denne brikken nedenfor.

Microchip 23k256, 32k SPI SRAM (Mouser Søk, Octopart Search, $ 1,48). DATASHEET (PDF).

Buss pirat
23k256 (PIN #)

CS.
/ Cs (1)

Miso.
Så (2)

Mosi.
SI (5)

Klokke
SCK (6)

GND.
/ Hold (7)

GND.
Vss (4)

+ 3Volts.
VCC (8)

Vi koblet 23k256 til vårt busspirat universal seriell grensesnittverktøy som vist i tabellen. Det er ekstremt viktig å drive at brikken bare benytter busspiratens 3.3voltforsyning, 23k256 er ikke vurdert for 5volts.

Busspiraten er en enkel metode for å oppdage om en brikke uten å komponere noen type kode, men nøyaktig samme prinsipper gjelder for å utnytte 23k256 med en hvilken som helst type mikrokontroller. Denne presentasjonen benytter den nyeste versjonen av busspiratfirmaet (26-februar-2009), som du kan laste ned fra vår Google Code Svn.

Hiz> m <-choose modus 1. HIZ. ... 5. SPI. ... Modus> 5 <-spi-modus Modus sett ... <-30khz, alle standardinnstillinger SPI klar SPI> W <-capital 'w' tillater strømforsyninger Spenning forsyninger på. SPI>

Først legger vi busspiraten i SPI-modus på 30KHz, samt valgt standardinnstillingene for alle alternativer. Vi gjorde det mulig for busspiratets ombord 3,3volt strømforsyning med en finansiering ‘w’.

Konfigurasjonsregister

Bit 7,6 = byte (00) side (10) sekvens (01) modus
Bit 0 = Hold deaktivert (1)

Data holdes inne i 23k256 på 1024 sider som hver inkluderer 32bytes. Utvalget av leser samt komponer er satt av bit 7 samt 6 i konfigurasjonsregisteret. Lagring kan nås av byte (00), med 32byte-sider (10), eller sekvensielt med hele 32K (01). Vi jobber i sekvensmodus, som gir oss få tilgang til til sjekket ut, samt komponerer noen form for lengden av data, hvor som helst i 32K lagringsplass.

Hold-PIN-koden benyttes for å stoppe overføringer når andre sjetonger på nøyaktig samme busskrav som skal nås. Bit 0 på konfigurasjonsregisteret styrer Hold PIN-koden. Når den er satt til 1, er Hold PIN-koden deaktivert. Vi koblet til Ground for typisk drift, men ytelsen kan være helt deaktivert ved å sette bit 0.

Konfigurasjonsregisteret endres ved å sende komponentkonfigurasjonskommandoen (0B00000001), samt de nye innstillingene.

SPI> [0B1 0B01000001] <-Update config Register CS aktivert Skriv: 0x01 <-write config-kommandoen Skriv: 0x41 <-value å skrive CS deaktivert SPI>

Vi starter en SPI-avtale ved å aktivere 23K256-brikken, velg linjen ([). Vi sender kommandoen Compose Configuration (0B1, 0x01, eller 1), oppfylt av de nye innstillingene for konfigurasjonsregisteret (0B01000001, 0x41). Vi satte bit 6 for sekvensiell gevinsttilgang til modus, samt satt bit 0 for å deaktivere Hold PIN-funksjonen. Bits 5-1 har ingen funksjon, men databladet stater for alltid å komponere 0. Avtalen avsluttes ved å deaktivere Chip Velg signal (]).

SPI> [0B101 R]
CS aktivert
Skriv: 0x05 <-read config Register Les: 0x41 <-value Les CS deaktivert SPI>

Deretter benytter vi den sjekket ut konfigurasjonsregisterkommandoen (0B00000101, 0B101, 0x05 eller 5) for å bekrefte at innstillingene var riktig skrevet. Denne kommandoen returnerer en byte (R) som burde samsvare med verdien vi sammensatt i forrige operasjon (0x41, eller 0b01000001).

Data tilgang

Nå kan vi sjekke ut så vel som komponere data til brikken. Komponer begynner med kommandoen Data Compose (0B10, 0x02 eller 2), oppfylt med to byte som identifiserer hvor de skal komponere dataene. Verdiene som skal lagres, sendes etter adressen. Avhengig av gevinsttilgangen til modus, kan en enkelt byte, en side eller hele minnet fylles ut i en enkelt operasjon.

SPI> [0B10 0 0 1 2 3 4 5 6 7 8 9 10]
CS aktivert
Skriv: 0x02 <-data komponere kommando Skriv: 0x00 <-address byte 1 Skriv: 0x00 <-address byte 2 Skriv: 0x01 <-start av data for å skrive Skriv: 0x02. Skriv: 0x03. Skriv: 0x04. Skriv: 0x05. WRITE: 0x06 WRITE: 0x07 WRITE: 0x08 WRITE: 0x09 WRITE: 0x0A CS DISABLED SPI>

We begin with the compose data command (0b10) as well as set the compose place to the beginning of the chip (0 0). We send a overall of ten values to store, the numbers 1 to 10.

After composing the data, we can checked out it back with the checked out data command (0b00000011, 0b11, 0x03, or 3).

SPI>[ 0b11 0 0 r:10]
CSAktivert
Skriv: 0x03 <-read Data Command Skriv: 0x00 <-start adresse byte 1 Skriv: 0x00 <-start adresse byte 2 Bulk sjekket ut 0x0a bytes: <-read ut 10 byte 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a CS deaktivert SPI>

Vi sender den sjekket ut data kommandoen (0b11), oppfylt av adressen for å begynne å lese (0 0). Vi sjekket ut tilbake 10 byte (R: 10). 10 byte er tallene 1 til 10, nøyaktig samme verdier vi sammensatt i forrige trinn.

Som dette innlegget? Inspiser ut delemeldingene du måtte ha savnet. Vil du be om et delpost? Vennligst legg dine tips i kommentarene.

Back to top