Designa med diskret SPI Flash minne (5 / 7 steg)

Steg 5: Kod kod kod!



Jag skrev en skiss som tillåter mig att kommunicera med Uno via seriell TTY kommunikation via seriell bildskärmen (eller ens en Unix-prompt som du väl se). Detta är en bra metod för felsökning av ny maskinvara, som jag kan utfärda kommandon interaktivt.

Funktionen "serialEvent()" är en inbyggd motringning, anropas när något händer på Standard Serial objektet. Jag använder denna callback att konstruera en kommandosträng och ange en boolesk flagga (byte av byte byggandet av strängen är klar när callback läser som semikolon ";" från strömmen; Jag använder denna i stället för en ny rad eftersom det finns inget sätt att utfärda en newline från seriella monitor). När callback konstruerar strängen och flaggan, utför funktionen "loop()" en avkodare. Dekodern avgör vilken funktion som ska ringa baserat på kommandosträngen, analyserar eventuella ytterligare parametrar från kommandosträngen och anropar funktionen.

Varje funktion är i huvudsak en wrapper runt en lägsta-nivå-genomförande av ett WinBond SPI funktionella timing diagram. Jag använde en wrapper så att lågnivåfunktionerna förbli generiska: Jag kan använda dem igen i andra skisser med en enkel klipp-och-klistra. Plus, omslaget skrivs ut lite feedback till användaren, vilket är mycket användbart för debug.

Skärmbilden ovan visar en interaktiv session med seriell bildskärmen. Jag har utfärdat fyra kommandon, "get_jedec_id;", "read_page 0;", "write_byte 0 2 8.", och "read_page 0;" Du förstår faktiskt inte kommandona (serial bildskärmen har inte ett eko, och jag inte ut den exakta kommandot... Jag förmodligen borde ha), men du ser svaret. Det bör vara mest tydlig när jag läsa/skriva/läsa sida 0. "Read_page," kommando bara dumpar den angivna sidan (i decimalform). "write_byte;" funktionen är lite konstigt, eftersom parametrarna ange ett sidnummer, en förskjutning i den sidan, och sedan byten. Eftersom det finns ingen native 32-bitars register i 16-bitars Atmega, jag brydde mig inte göra logiska fysiska översättning, men du måste du överväga denna översättning någon gång. Hur som helst, märka att den tredje byten av sida noll nu "08h".

Jag kunde har också utfärdat "chip_erase;" och sedan "read_page 0;" att illustrera en radera-cykel, men förhoppningsvis du får bild.

Låg nivå funktioner börjar med "_", och heter "_read_page" eller "_write_page" eller "_erase_chip". Dessa funktioner sekvens uttryckligen alla SPI kommandon finns i databladet timing diagram. Varje funktion slutar med en uppmaning att "not_busy()" förhindrar körning från förfarandet innan chip har avslutat sin interna verksamhet.

Redigera (11-MAR-2014): det fanns ett problem med funktionen _read_page låg nivå, jag hade glömt att dra CS hög innan du drar det låg i början av funktionen, så övriga funktioner. Detta innebär att om _read_page är den första funktionen som du kallar, CS kan inte redan vara hög, så utan en giltig /CS 1 -> 0 övergången _read_page fungerar inte korrekt, första gången det kallas. Andra gången det skulle fungera bra eftersom det lämnar /CS som 1. Litet men irriterande bugg.

Se Steg
Relaterade Ämnen

Uppgradera din iPod Mini med Flash-minne - nr mer hård driva!

i stället för en hårddisk, din nya uppgraderade iPod kommer att använda flash-minne utan rörliga delar för snabbare uppstart & åtkomsttider och lägre strömförbrukning.(Jag sprang min iPod kontinuerligt under 20 timmar på en laddning!).Du får också ök...

Arduino - TFT-skärm med ikoner och bilder från FLASH-minne

I detta Instructable hittar du ett bibliotek och skiss för att rita bilder lagrade i Arduino FLASH minne på en TFT-skärm.Här använder vi min favorit 2.2" 320 x 240 pixel ILI9341 baserade TFT-skärm. Denna display är en trevlig storlek för Arduino base...

Konverterar bilder till Flash-minne ikoner/bilder för TFT (utan SD-kort)

Många gånger att göra alla användare gränssnitt eller fint Visa innehåll, vi använder symboler/bilder. I detta Instructable, du kommer att visa ikoner eller logotyper eller bilder på din TFT skärm från Arduino med hjälp ATmega (microcontroller använd...

ESP-03 uppgradera Flash minne till 128 M bit

ESP-03 är den minsta ESP8266 styrelse som har ombord antenn, det kan passa för många projekt som har begränsat utrymme, till exempel bärbara eller bärbar enhet. Den enda begränsningen är det lagring, det har bara 4 M bit (512 KB) flash-minne. ESP8266...

Lär dig Verilog: En kort Tutorial serie på Digital elektronik Design med FPGAs och Verilog HDL

Denna korta serie av semi korta lektioner om Verilog är tänkt som en introduktion till språket och förhoppningsvis uppmuntra läsarna att titta närmare på FPGA design.Dessa tutorials antar du är bekant med grundläggande logiska kretsar och logik ekvat...

Konvertera din 4th Gen iPod för att använda Flash-minne

vi alla har eller känner någon som har en iPod med en död hårddisk. Naturligtvis kan du helt enkelt köpa en annan enhet men du tillbaka till de samma makthungriga, fel-benägen, bräckliga roterande media. I stället, uppgradera din iPod för att använda...

T-shirt designer med stenciler och blekmedel (uppdaterad med robot bild för nedladdning)

göra din egen awesome t-shirt design med stenciler och en enkel lösning med blekmedel och vatten.Detta projekt kräver minimal verktyg, och kommer tillsammans ganska lätt.** uppdatering **Stencilen robot visas är nu tillgänglig för nedladdningNog prat...

Gör din egen Design med DIY LED-belysning

Gör din egen design med DIY belysning LED-lampor med grundläggande delar från den hem förbättring butiken! Detta är ett billigt och flexibelt sätt att skapa ljusa belysning som passar ditt space, oavsett om du designar det för din butik eller ditt he...

* Preliminär * SPI på Pi: kommunicera med en SPI 3-axlig accelerometer med en Raspberry Pi

steg för steg guide att konfigurera Raspbian och kommunicera med en SPI enhet via bcm2835 SPI bibliotek (inte lite bankade!)Detta är fortfarande mycket preliminär... Jag behöver lägga till bättre bilder av fysiska hookup och arbeta igenom några av ob...

Perfboard/Veroboard Design med hjälp av Proteus ARES PCB Designer

De flesta perfboard layout kan du hitta på Internet är några 2D uppifrån design med särskild programvara precis som VeroCAD eller DIY Layout Creator. Jag försökte denna typ av programvara men gillade inte det. Jag använder Proteus sviten riktigt ofta...

Hur man Design med Silhouette Studio

Silhouette porträtt är en användarvänlig elektroniska skärmaskin. Det kan skära allt från kartong till vinyl, så du kan göra klistermärken, affischer eller även 3D-objekt. Med all denna möjlighet till kreativitet, kan det vara överväldigande att komm...

Viftade Design med lera

Detta är ett enkelt sätt att skapa en vågig design med polymerlera.Snälla, rösta för detta "vänners kompatibla i tävlingar!Steg 1:Du behöver:Vit, brun, gul och orange polymer lera (eller de färger som du föredrar)Skalpell eller knivPasta maskinGarn n...

Brainstorming buss Shelter design med kortplats bygga kort

studenter tillsammans bygga fysiska brainstorming modeller av busskurer med Tom registerkort som de konvertera i kortplatsen bygga kort. Slot skyddsrum modell byggnad verkstad lektionen inbjuder elementära studenter att föreställa multipurpose bussku...

3D-Grafisk Design med Blender och Gimp

Hej alla!I detta Instructable går jag till och hur du använder den fria programvaran mixer för 3d grafisk design. Även om det förefaller formidabla, är grunderna i blender lätt att bemästra. 3D-konst har blivit lite av en mörk konst, men det finns ve...

Design med Neje laser gravör på Mac OSX

Lång tid letar efter en liten och bärbar laser gravör för skriva och design på plast, läder och papper. Jag vill ha en laser som kan gravera också lite PCB, och jag vill använda den här på min mac. Jag har valde den lilla laser gravören Neje. Denna m...

En ny typ av kanin bur Design med lagring kuber.

Min version av lagring kuber var att det fanns inga galler men ersatt med hård plast med design.Steg 1: Skaffa material Du behöver lagring kuber och en plast bas som du kan använda Korrugerad plast i valfri färg.Steg 2: Sedan utforma det hur du vill...

Instant t-shirt design med laserskrivare

göra din speciella dag t-shirt design och imponera på dina vänner, med en varje-dag-nya t-shirt ;)Vad du behöver:-laserskrivare-bakplåtspapper-vanligt papper (på vad du normalt skriva ut)-någon form av cutter-double-faced tejp-hårt underlag (värmebes...

Klipper klibbiga vinyl design med siluett stående

Om du arbetar med en design som innebär att text eller flera olika element som inte är sammankopplade, kanske du tror att det skulle ta evigheter att få allt uppradade och tillämpa den på en yta jämnt. Det är faktiskt mycket enkelt!Steg 1: Samla ditt...

Blinka lysdioder med diskret delar

som alla vet säkert hela grunden för modern teknik, ja själva grundvalen för vår avancerade civilisation vilar på ödmjuka blinkande LED. Inget säger high tech ganska som en blinkande lysdiod. Nu vet jag att gör de lysdioder som blinkar helt på egen h...