Realtime OS / LCD på $12 Discovery ombord (3 / 6 steg)

Steg 3: Hårdvara hacka LCD-stil



Tid för en del hårdvara. Oroa dig inte, detta kommer att vara lätt också.

Det tar bara sju trådar gränssnittet en SPI LCD till Discovery styrelsen. Signalerna är makt, marken, SPI klocka, SPI data, chip Välj, kommandot / data och Återställ. Om bara en enhet är på SPI-bussen då chip Välj kan vara hårdkodade för alltid Markera.

Slag är en listor Discovery stiften som används i min källa koden.

STM32F100RBT6B mikrokontroller
128-Kbyte Flash, 8-Kbyte RAM

P1 Namn funktion
-------------------------------------------------
11 PC0 Analog i 1 (0 till 3,0 volt)
12 PC1 Analog i 2
13 PC2 Analog i 3
14 PC3 Analog 4
15 PA0 användare knappen på Discovery
20 PA5 SPI1 SClk till LCD
21 PA6 LCD Data = 1 / Cmd = 0
22 PA7 SPI1 MOSI till LCD (SDA)
23 PC4 LCD-Reset
24 PC5 LCD SCE-FÖRENINGEN (CS0)
25 PB0 BTN_UP

P2 Namn funktion
-------------------------------------------------
1 PB10 USART3 Tx (Debug Port)
2 PB11 USART3 Rx (Debug Port)
3 PB12 BTN_LEFT
4 PB13 BTN_CENTER
5 PB14 BTN_RIGHT
6 PB15 BTN_DOWN

P3 Namn funktion
-------------------------------------------------
4 PC8 blå LED på Discovery (100Hz TIM3_CH3)
5 PC9 grön lysdiod på Discovery
24 PB8 RC Servo Motor Out1 (50Hz TIM4_CH3)
25 PB9 RC Servo Motor Out2 (50Hz TIM4_CH4)

Jag har haft två olika LCD typer ansluta till Discovery styrelsen hittills. En bildskärm kommer från Sparkfun och kallas en Nokia 5110. Andra visningen kommer från råttfångare / elektronik. Länkar för båda visar följande:

http://www.Mouser.com/productDetail/Electronic-Assembly/EA-DOGS102B-6/?QS=XoD1gVtqLQulaqATGATNqA%3D%3D

http://www.Sparkfun.com/products/10168

Mitt mål var att hitta en riktigt billig grafisk LCD. Sparkfun / Nokia LCD är 84 x 48 bildpunkter och kostar $10 dollar. Råttfångare / EA display är 102 x 64 pixlar och finns i tre smaker - EA visningen kostar $12.36.

Sparkfun / Nokia verkar som gamla överskott grejer. Plus, det fanns en hel del negativa kommentarer om problem med LCD / styrelse montering. Displayen i Nokia använder en zebra gummi sak gränssnittet glas att PCB. Zebra sak verkar orsaka problem. EA displayen, å andra sidan, är helt ny, har fler pixlar (men använder en fånig minne layout), och kostar mer. Men för mig är genomskinlig blå LCD-skärmen är bara så sexig. Både display typer är skrivskyddade. Det går ingen feedback från displayen. Verkar vissa begränsningar med hjälp av ett SPI gränssnitt till LCD-skärmen. Min röst går EA-displayen även om det kostar mer bara lite mer.

Bifogade källkoden kan köra antingen typ av display. Det finns en #define högt upp i lcd.h som anger vilken väg att bygga källan. Bara #define korrekt inställda och återuppbygga / reflektera för att växla mellan skärmar.

Kör en liten LCD verkligen visar några av ARM mikro förmåga.

  • RAM-buffert i mikro innehar alla pixeldata. Se det som en shadow RAM-buffert.
  • LCD uppgiften i OS hanterar skickar shadow RAM-buffert till LCD-skärmen.
  • Hela LCD är omskrivet i takt 10Hz. Kunde vara något som verkligen. LCD grundläggande maskinvara uppdateringsfrekvensen för LCD glaset är runt 50Hz.
  • LCD uppgiften skickar en sida (en sida är en byte / 8 pixlar hög av X byte / pixlar lång där X är displayen pixelbredd) på en gång. Så har en 102 x 64 pixlar åtta sidor där varje sida är 102 byte lång.
  • Skicka en sida i taget kan shadow ram att "manipulera" innan de skickas till LCD-skärmen. Som ett exempel, kan den vara Invertera 180 grader i programvaran om det behövs. Observera att vissa skärmar kan göra detta i hårdvara - men varje display verkar göra detta annorlunda. Kunde också flip svart på vitt till vitt på svart med programvara. Det är bara cool för att kunna injicera förändringar eftersom pixlarna är redo att flyga ut ur hamnen SPI. Obs, alla LCD bilder i denna instructible är med hjälp av programvara Invertera funktionen.
  • LCD-uppgiften använder DMA för att överföra data till LCD-skärmen. Medan uppgiften väntar DMA att slutföra det fungerar samtal "taskYIELD()" så att andra lägre prioriterade uppgifter kan. Detta är enormt, mikro är fri att göra andra saker medan DMA-kanalen är spotta ut SPI data i full fart. Observera att högre prioriterade uppgifter kommer att föregripa LCD-aktiviteten automatiskt.
  • SPI bussen kör på 3MHz (Sparkfun display kan bara hantera 4 MHz). Så, en 102 byte sida får överföras i drygt 300 mikrosekunder! EA displayen klarar mycket högre SPI klocka. Men, det är ingen brådska - en högre klocka är mer känsliga för buller.
  • Använda DMA överföring betyder alla 102 byte (en sida) överförs utan ett enda avbrott i ARM mikro. Den DMA läser RAM-buffert och håller SPI port 100% fastnat packad upptagen tills gjort - allt utan hassling micro ett skvatt. SPI-byte är packade så perfekt eftersom detta sker på maskinvarunivå. Programvaran skulle aldrig kunna göra så bra ett jobb.
  • När en DMA sidan överföring är gjort, LCD uppgift justerar DMA pekaren till nästa sida och processen upprepas tills överförs alla sidor.
  • EA LCD-displayen har 8 sidor och tar knappt 10 MS att överföra. Se omfattningen handlingen nedan.
  • Med tanke på EA display har 6528 pixlar och vi skickar dem 10 gånger per sekund, SPI bandbredden till displayen kör på över 65kb/sek. Med DMA gör huvuddelen av arbetet finns det nästan ingen belastning i mikro att hålla visningen uppdateras i denna takt! Blåser mig bort. Detta slags xfer till en LCD skulle kvävas lite Pic eller Atmel chip. Fördubbling av uppdateringsfrekvensen till 20Hz skulle lägga till endast en liten ökning i CPU belastning, som ett exempel.

Se Steg
Relaterade Ämnen

Hur du ansluter en seriell LCD till en Arduino UNO

I detta instructable jag kommer att visa dig hur jag ihop en seriell LCD 16 X 2 med en Arduino UNO.Det finns massor av instructables och flashmanualer som visar dig hur du ansluter en vanlig LCD till en Arduino men inte många visar en seriell LCD och...

Arduino Mega GPS med LCD och SD loggning

Använd din Audino Mega som en GPS logger med tydlig LCD display och 5 funktionsknappar. En bi-färg LED används för att ange statusinformation.SDcard kan vara kvar i och läsa med en kort läsaren skiss, med utgång till den seriella Monitor.Detta instru...

Arduino text LCD animation

jag har sett många sidor om hur tråd upp en LCD-panel till en Arduino och sidor som hjälper dig att rita egna tecken, men jag såg inte många som använt funktionen anpassade tecken för animering.Vad du behöver för detta:-Arduino Uno-HD44780-kompatibel...

ESP8266 WiFi touch skärmen termostat

I den här guiden visar vi hur man bygger WiFi kontrollerade termostat med ESP8266, Arduino och beröring skärm uppvisning. Termostaten kommer också att visa annan information, som väderprognos och temperaturen utanför. Totala kostnaden för termostat ä...

O-Cade: Bärbara OUYA mini Arcade skåp med mobila laddning Station

O-Cade är en bärbar batteridriven mini arcade skåp som också har en inbyggd laddstationen för mobiltelefoner och surfplattor. Tänk dig att ha din egen mini arcade skåp som har över 800 + spel finns att spela som kan också ladda telefonen och tablette...

Touchscreen väggmonterad familj Sync & hem Kontrollpanelen

Vi har en kalender som uppdateras varje månad med händelser men det sker manuellt. Vi tenderar också att glömma saker vi har sprang av eller andra mindre sysslor.I denna ålder som jag tyckte det var mycket lättare att ha en synkronisering kalender oc...

Buggy rullstol Robot

detta är en ändring av en elektrisk rullstol.Jag kallade det "Buggy" av två skäl. #1 mina barn kan fortfarande rida runt eftersom jag lämnade stolen intakt. #2 jag har inte programmerat något på länge.Jag planerar att skapa "jobb" för...

Mätning av avstånd (och mer) enhet använder Arduino och GPS

i min tidigare Instructable, visade jag hur du få grundläggande uppgifter från en bärbar GPS, Holux M-1000 och konvertera UTC till lokal tid. I morse (Nov. 3: e), slutade i sommartid. Jag vände på enheten när jag vaknade upp i morse för att se om tid...

"ditt val"

idén att måla shopping bara skickar rysningar längs min ryggrad. För att bli av med besväret med färg shopping jag kom med en enhet som läser och visar RGB-värdet av färg skannas. På så sätt färg shopping inte längre tittar på paint prov kort men ist...

LapPi - en Raspberry Pi Netbook

The Raspberry Pi är en märklig maskin. Lätt, kraftfull, och fram till nu det var helt bundna till ett vägguttag. I Lappland är byggd för att fria Pi! Gjorda av en blandning av reservdelar, ofördelade elektronik, och skrotas komponenter & kablar jag h...

Raspberry Pi: Väggmonterad kalender och Notification Center

Innan den "digitala eran" för många familjer väggkalendrar för att Visa månatliga utsikt över kommande händelser. Denna moderna version av vägg monterade kalendern innehåller samma grundläggande funktioner:En månatlig agendaSynkronisering av fam...

Skrapa gratis

hålla din bil "Skrapa gratis" med vår produkt! Som gillar att lyssna på botten av deras bil stötfångare screech när det skrapar en trottoarkant eller parkeringsplats stötfångaren. Följ steg för steg guide för att bli "Skrapa gratis"!St...

LCD ombord befogenheter leverera reparation.

jag vände på min #6 PC idag och ingen bildskärm. Svart! Efter kontroll av strömkabeln och VGA-kabel, fortfarande ingenting. Så vad gör jag, Jo jag tar isär den ju! Vad jag fann var alla 6 om makt leverans mössa var inte bra. Tog bara en visuell kontr...

LCD-Display ombord med en Linkit och Bluetooth

HejI detta instructable lär du dig gränssnitt LCD med Linkit en och hur man styr samma med BluetoothSteg 1: Komponenter som krävs Linkit en styrelseArduino UNO16 * 2 LCD LCD sköldBluetooth-antenn (hittade tillsammans med en Linkit)SmartPhonesladdarSt...

4-i-1 Arduino LCD sköld Version 2

Med detta projekt, har du minst fyra produkter i en eftersom detta kit består av en Arduino Uno, en LCD-skärm, en USB-A till USB-B kabel och alla material som du kommer att behöva utveckla följande fyra projekt: en disk, en termometer, en kondensator...

Hur konvertera en Laptop LCD till en extern bildskärm.

Hallå där. Detta är min första InstructableFör ett tag sedan jag satt och undrar vad de ska göra med min döda laptop. Jag visste att moderkortet var stekt men allt annat var fortfarande i skick. Som ett resultat jag beslutat att göra en extern bildsk...

ATTiny45/85 LCD Visa kontroll med ett skiftregister, programmerat i Arduino

kör Arduino på en ATTiny45 av 85 chip är en enorm kostnad-sparare för mini-projekt. Dock kan du inte ansluta en HD44780 kompatibel LCD-display som du kräver 6 utgångar, men du har bara 5. Problemet kan lösas genom att använda ett skiftregister till k...

Atmega16/32 utveckling styrelsen med LCD

detta instructable visar, hur du gör din egen utveckling styrelsen för Atmega16 eller Atmega32 processorer. Internet är fullt av hemgjorda utveckling styrelser, men jag tror att det finns utrymme kvar för en annan. Denna styrelse har varit mycket anv...

Android kontrollerade LCD/LED Display - ingen Android-programmering, nr lödning behövs.

IntroductionDetta bygga använda Arduino plattform för att styra en LCD/LED display från din Android mobil. Det är en plug and play bygga som kräver nr Android programmering, ingen lödning och ingen handstil av Arduino kod, det du inte vill.Den grundl...