Realtime OS / LCD op $12 Discovery bord (3 / 6 stap)

Stap 3: Hardware Hacking LCD stijl


Tijd voor sommige hardware.  Don't worry, dit gonna be gemakkelijk ook.

Het duurt slechts zeven draden aan de interface van een LCD van de SPI aan de Discovery-bestuur.  De signalen zijn macht, grond, SPI klok, SPI gegevens, chip selecteren, opdracht / gegevens, en reset.  Als er slechts één apparaat op de bus SPI is dan het selecteren van chip zou hardwired voor altijd selecteren.

Klap bestaat uit een lijst de ontdekking pinnen die worden gebruikt in mijn broncode.

STM32F100RBT6B microcontroller
128-Kbyte Flash, 8-Kbyte RAM

P1 Naam functie
-------------------------------------------------
11 PC0 Analog In 1 (0 tot 3,0 volt)
12 PC1 Analog In 2
13 PC2 analoog In 3
14 PC3 Analog In 4
15 PA0 gebruiker knop op ontdekking
20 PA5 SPI1 SClk op LCD-
21 PA6 LCD Data = 1 / Cmd = 0
22 PA7 SPI1 MOSI aan LCD (SDA)
23 PC4 LCD Reset
24 PC5 LCD SCE (CS0)
25 PB0 BTN_UP

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

P3 Naam functie
-------------------------------------------------
4 PC8-Blue LED op ontdekking (100Hz TIM3_CH3)
5 PC9 groene LED op ontdekking
24 PB8 RC Servo Motor Out1 (50Hz TIM4_CH3)
25 PB9 RC Servo Motor Out2 (50Hz TIM4_CH4)

Ik heb twee verschillende types van de LCD verbinden met de ontdekking van bestuur tot nu toe.  Één beeldscherm komt van Sparkfun en heet een Nokia 5110.  De tweede display komt uit Mouser / elektronische assemblage.  Verwijzigingen voor beide weergegeven volgen:

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

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

Mijn doel was om een echt goedkoop grafisch LCD.  De Sparkfun / Nokia LCD is 84 x 48 pixels en kost $10 dollar.  De Mouser / EA display is 102 x 64 pixels en komt in drie smaken - het EA display kost $12.36.

De Sparkfun / Nokia lijkt oude overtollige spullen.  Plus, er waren een heleboel negatieve opmerkingen over problemen met de LCD / board montage.  Het display van de Nokia maakt gebruik van een zebra rubber ding aan de interface van het glas aan de PCB.  De zebra-ding lijkt problemen worden veroorzaakt.  De EA-display, aan de andere kant, is gloednieuw, meer pixels heeft (maar gebruikt een goofy geheugen layout), en duurder.  Maar, voor mij, de doorschijnende blauwe LCD is gewoon zo sexy.  Beide typen weergave zijn alleen-lezen. Er is geen feedback uit de weergave mogelijk. Lijkt sommige restrictie met behulp van een SPI interface voor het LCD-scherm.  Mijn stem gaat met de vertoning van EA, hoewel het meer gewoon een beetje meer kosten.

De bijgevoegde broncode kan rijden beide type beeldscherm.  Er is een #define in de buurt van de top in lcd.h waarin welke manier om te bouwen van de bron.  Enkel de #define correct ingesteld en herbouwen / reflash om te schakelen tussen weergaven.

Rijden een beetje LCD echt toont een aantal van de mogelijkheden van de micro van de ARM.

  • RAM-buffer in de micro houdt alle pixelgegevens.  Denk aan het als een schaduw-RAM-buffer.
  • De taak van de LCD in de OS behandelt het schaduw-RAM-buffer te sturen naar het LCD-scherm.
  • De gehele LCD is herschreven in een tempo van 10Hz.  Zou je echt ieder geval.  De vernieuwingsfrequentie van de basisinstellingen voor de hardware LCD van de LCD-glas is ongeveer 50Hz.
  • De LCD-taak stuurt één pagina (een pagina is één byte / 8 pixels hoog door X bytes / pixels lang waarbij X staat voor de pixelbreedte van het scherm) tegelijk.  Dus, een 102 x 64 pixel display heeft acht pagina's waar elke pagina 102 bytes lang is.
  • Het verzenden van één pagina tegelijk kunt het schaduw-RAM-geheugen worden "gemanipuleerd" alvorens wordt verzonden naar het LCD-scherm.  Als voorbeeld kunnen het display omkeren 180 graden in de software indien nodig.  Let op, sommige beeldschermen kunnen dit doen in hardware - maar elk beeldscherm schijnt om dit te doen anders.  Kon ook flip zwart op wit op wit-op-zwart met behulp van software.  Het is gewoon cool om het injecteren van veranderingen, zoals de pixels zijn klaar om te vliegen uit de SPI-poort te kunnen.  Opmerking, alle LCD-foto's in deze instructible zijn met behulp van de functie voor het omkeren van software.
  • De LCD-taak gebruikt de DMA om de gegevens naar het LCD-scherm.  Terwijl de taak wacht de DMA om het te voltooien aanroepen "taskYIELD()" zo dat andere lagere prioriteitstaken kunnen werken.  Dit is enorm, de micro is vrij om andere dingen doen terwijl het DMA-kanaal is spugen SPI data op volle snelheid.  Opmerking, hogere prioriteitstaken zal automatisch de lcd taak voorrang.
  • De bus SPI bedraagt 3MHz (Sparkfun weergave kan alleen handvat 4 MHz).  Dus, een 102 byte pagina krijgt overgedragen in iets meer dan 300 microseconden!  De EA-weergave kunnen veel hogere SPI-klok.  Maar, er is geen reden tot haast - een hogere klok is meer gevoelig voor lawaai.
  • Het gebruik van DMA-overdracht betekent dat alle 102 bytes (één pagina) worden overgebracht zonder een enkele onderbreking van de micro van de ARM.  De DMA leest de RAM-buffer en houdt de SPI-poort 100% vastgelopen drukke tot gedaan verpakt - allemaal zonder de micro een beetje koehandel.  De SPI-bytes worden verpakt zo perfect omdat dit alles op hardwareniveau gebeurt.  Software zou nooit kunnen doen zo goed een baan zijn.
  • Zodra een DMA pagina overdracht wordt gedaan, de LCD-taak de DMA-aanwijzer naar de volgende pagina past en het proces wordt herhaald totdat worden alle pagina's overgebracht.
  • De EA LCD display heeft 8 pagina's en neemt amper 10ms over te dragen.  Zie de onderstaande toepassingsgebied-plot.
  • Gegeven de EA vertoning heeft 6528 pixels en we sturen hen 10 keer per seconde, de bandbreedte van de SPI naar het display bedraagt over 65kb/sec.  Er is bijna geen belasting op de micro te houden het scherm bijgewerkt in dit tempo met de DMA het grootste deel van het werk doen!  Blaast me weg.  Dit soort xfer aan een LCD, zou een beetje Pic of Atmel chip stikken.  Verdubbeling van de de refresh rate tot 20Hz wil alleen een lichte stijging in de CPU-belasting, als voorbeeld.

Gerelateerde Artikelen

Directe lezing van LCD-scherm met behulp van algemene doel IO

Directe lezing van LCD-scherm met behulp van algemene doel IO

Moeilijkheid: e a s y .. Schema, solderen, C programmerenVeel apparaten hebben schermen van LCD (Liquid Crystal Display) - uw magnetron, digitale klok en Weegschaal zijn een paar bekende voorbeelden. Meer dan eens, heb ik wil kunnen gebruiken op een
Interfacing 20 x 4 LCD met Arduino

Interfacing 20 x 4 LCD met Arduino

Een vloeistof - crystal display (LCD) is een flat-panelbeeldscherm, elektronische visuele weergave of video weergave die gebruikmaakt van het licht modulerende eigenschappen van vloeibare kristallen. Vloeibare kristallen doen licht niet rechtstreeks
Hoe u een 16 x 2 LCD met behulp van een AVR ATtiny2313

Hoe u een 16 x 2 LCD met behulp van een AVR ATtiny2313

als je gewoon bent om in microcontrollers er is een hoop te weten zoals u waarschijnlijk heb ontdekt. Er is een heleboel goede online tutorials voor de Atmel AVR en kansen zijn dat u een paar van die inmiddels heb zien. Ik onlangs heb in microcontrol
Foto nachtlampje van een gebroken LCD

Foto nachtlampje van een gebroken LCD

een gebroken LCD omzetten in een backlit beeld. Tijd om opnieuw purpose de Prullenbak...Het LCD-scherm die ik had was een zwart-witprinter backlit ras dat was verbrijzeld, de LCD-gedeelte niet meer werkte, maar de achtergrondverlichting was prima.Elk
Sparrow - my assistant

Sparrow - my assistant

Hallo iedereen. Ik ben een grafisch ontwerper met een rusteloze ziel (). Ik hield doen elektronica jaar geleden en dan heb bezig met leven en werk. Ik ben nu gezegend met enige tijd (zeldzaam nu een dagen: P). Dit is mijn eerste microcontroller / ard
Quadcopter met KK 2.15 Module

Quadcopter met KK 2.15 Module

Alle noodzakelijke sensoren, verwerkingscapaciteit, en chips van de communicatie moet een drone vliegen autonoom, ingebouwde. Terwijl dat niet veel lijkt misschien, elimineert het eigenlijk veel van de huidige commerciële civiele maar beschikbaar voo
LapPi - een Raspberry Pi Netbook

LapPi - een Raspberry Pi Netbook

de Raspberry Pi is een opmerkelijke machine. Lichtgewicht, krachtige, en tot nu toe het was volledig vastgebonden aan een stopcontact. De LapPi is gebouwd om de Pi vrij! Het is gemaakt van een mengsel van reserveonderdelen, niet-toegewezen elektronic
Alfanumerieke Display Arduino Kit: Vergadering tutorial

Alfanumerieke Display Arduino Kit: Vergadering tutorial

De Alfanumerieke LCD Kit voor Arduino met behulp van slechts één component, en natuurlijk de LCD, bevatten de Arduino board met ten minste een 16 × 2 alfanumerieke LCD tekens op een achtergrondverlichting display dat kan worden gebruikt in elke zelfs
Draagbare Raspberry Pi (V4)

Draagbare Raspberry Pi (V4)

De Raspberry Pi. Haar een $35-computer de grootte van een creditcard. Zeer klein, zijn groot voor de draagbaarheid. Dit is echter meestal het probleem want het is moeilijk om te maken het draagbare.Het afgelopen jaar en een half, heb ik gewerkt met m
Delta Robot Klok

Delta Robot Klok

Een delta robot is een eenvoudige robot die drie servo's gebruikt om te bewegen een einde effector. Het einde effector blijft in een vaste stand ten opzichte van de base maar is vrij om te bewegen in drie afmetingen.In dit project heb ik een digitale
PIvena montage-instructies (B +)

PIvena montage-instructies (B +)

Dit instructable gaat om u te tonen hoe te monteren van het PIvena Raspberry Pi geval! Ga naar Lees meer over de PIvena, te thingiverse downloaden van alle bestanden van het ontwerp en maak je eigen of naar mijn Etsy -winkel te kopen van een kit.Stap
LCD controle met LinkIt één bord

LCD controle met LinkIt één bord

Vandaag, zullen we kijken naar manieren om te communiceren met de buitenwereld, met behulp van uw LinkIt een ontwikkeling boord. In deze handleiding leert u hoe u een 16 door 2 LCD-module met behulp van alleen een potentiometer, wat draadjes en de Li
ATTiny45/85 LCD Weergave besturingselement met een shift register, geprogrammeerd in Arduino

ATTiny45/85 LCD Weergave besturingselement met een shift register, geprogrammeerd in Arduino

uitgevoerd op een ATTiny45 van 85 chip Arduino is een grote kosten-spaarder voor mini-projecten. Echter geen u een HD44780 compatibele LCD display verbinding maken als u nodig hebt 6 uitgangen, maar u slechts 5 hebt. Dit probleem kan worden opgelost
Hoe een Laptop LCD converteren naar een externe Monitor.

Hoe een Laptop LCD converteren naar een externe Monitor.

Hallo daar. Dit is mijn eerste InstructableEen tijdje terug ik zat rond en vroeg zich af wat te doen met mijn stroomloos laptop. Ik wist dat de moederbord was gebakken maar alles was nog in werkende staat. Dientengevolge, ik besloten om een externe m