15. Arduino für die Produktion!! So schließen Sie ein LCD an den ARM-Mikrocontroller an, Teil 1
Teilen
Diese Seite ist für den Anfang des LCD-Tutorials reserviert.
Bisher haben wir uns nur mit der GPIO-Seite von Mikrocontroller-Schaltungen und -Programmierung befasst. Bleiben Sie dran, denn wir werden tiefer eintauchen, aber nicht komplizierter. Wir werden ein LCD an den ARM-Mikrocontroller anschließen. Die LCD-Kommunikation ist nicht komplexer als das Einschalten von LEDs und das Testen von Tastendrücken.
Der einzige Unterschied zwischen dem Ein- und Ausschalten einer LED und dem Anzeigen von Informationen auf einem LCD ist die Art und Weise, wie die Pins ein- und ausgeschaltet werden. Das heißt nicht, dass wir uns nicht mit einigen komplizierten Themen befassen werden, aber es ist nichts, womit wir nicht umgehen könnten.
Das LCD, das ich verwenden werde, ist vom Standardtyp: 5 Volt, 16 Zeichen x 2 Zeilen, das 7 Datenpins, einen Enable-Pin, einen Lese-/Schreib-Pin und einen Register-Select-Pin enthält. Das LCD kann entweder im 8-Bit-Modus oder im 4-Bit-Modus verwendet werden. Im 4-Bit-Modus werden nur 4 der Datenpins benötigt, wodurch vier potenziell wichtige Mikrocontroller-Pins freigegeben werden, die Sie später verwenden könnten.
Aber wie werden Sie ein 5-Volt-LCD verwenden? Ich dachte, der STM32 ARM-Mikrocontroller verwendet einen 3,3-Volt-Pegel! Das ist eine großartige Frage, aber kein Hindernis. Erstens hat der ST-Link-Programmierer sowohl einen 3,3-Volt-Ausgang als auch einen 5-Volt-Ausgang. Zusätzlich verfügen die STM32-Mikrocontroller über GPIO-Pins, die 5 Volt vertragen, aber seien Sie vorsichtig, sie müssen korrekt eingerichtet werden (verwenden Sie nicht die internen Pull-up-/Pull-down-Widerstände).
Kommen wir zum kompliziertesten Thema, der Übertragung eines Bytes (eines Zeichens, das dem LCD mitgeteilt werden soll, um es auf dem Bildschirm des LCD anzuzeigen) an unterschiedliche Pins und Ports. Leider hat der STM32 Funktionen an jedem Pin, die ich später benötigen werde, und die 5-Volt-toleranten Pins sind überall verstreut, so dass wir nicht aufeinanderfolgende Pins sammeln müssen. In einem typischen Szenario könnten wir einfach ein Byte an einen Port senden, der 8 Bits enthielt, die den Pins von 0 bis 7 zugewiesen waren, wobei jeder Pin des betreffenden Ports das Byte empfangen würde. Wie Sie bereits wissen sollten, hat ein Byte, eines Standardzeichens, 8 Bits. Zum Beispiel hat der Großbuchstabe "A" einen Zeichencode (ASCII) von 65 dezimal oder 01000001 in Binärnotation. Jede 1 oder 0 ist ein Bit. Wenn wir eine Reihe von Pins von 0 bis 7 an einem bestimmten Port hätten, wäre es fast so einfach wie zu sagen: PORTC = BYTE. Machen Sie sich keine Sorgen, indem Sie diese neue Technik lernen, werden Sie ein ziemliches "Bit" an Leistung haben, wenn Sie Bitmanipulationen durchführen, und nichts wird Ihnen im Wege stehen.
5-V-tolerante Pins identifizieren
Da wir nun wissen, wie tief wir in diese Sache mit den unterschiedlichen Pins und Ports stecken, werfen wir einen Blick auf den ARM STM32-Mikrocontroller und sehen, welche Pins wir verwenden können. Zuerst müssen wir alle Pins identifizieren, die 5 V tolerant sind. Im Allgemeinen werden wir von den Pins zum LCD ausgeben (Zeichen senden usw.), aber wir müssen von diesen Pins lesen, um festzustellen, ob das LCD nicht beschäftigt ist (dies ist nicht unbedingt notwendig, aber eine gute Praxis).
Wir finden diese Pins im STM32F030 Datenblatt. Seite 27 listet die Abkürzung auf, die neben dem Pin angezeigt wird. Die Abkürzung, die wir suchen, ist FT und FTf. FT ist 5 Volt tolerant und FTf ist 5 Volt tolerant und FM+ fähig. FM+ bedeutet einfach Fast Mode Plus und ist in der Lage, Bitraten von 1 Mbits/s zu erreichen. Das heißt, mit der FM+-Konfiguration kann dieser Pin eine Million Mal pro Sekunde ein- und ausgeschaltet werden. Dieser Exkurs ist jetzt ziemlich wichtig, weil Sie diese FM+-Pins möglicherweise für einen anderen Zweck benötigen, daher werden wir sicherstellen, diese Pins im Moment nicht zu identifizieren.
Zurück zu den 5V-toleranten Pins. Hier werden Sie sich wirklich mit den E/A-Pins des STM32 ARM-Mikrocontrollers vertraut machen. Die Tabelle der Pins und ihrer jeweiligen Funktionen beginnt auf Seite 28 und endet auf Seite 33 des STM32F030 Datenblatts. Alle STM32F030-Gehäuse sind in dieser Tabelle aufgeführt und zeigen die Pin-Nummer in der Spalte des jeweiligen Gehäuses. Ein Gehäuse ist der Formfaktor des Chips und wie viele Pins er enthält. Wir werden uns in diesem Video mit dem LQFP64-Chip befassen, und dies ist die allgemeine Gliederung des Chips, den ich im Video verwende. Da wir richtige Designer und Entwickler von Schaltungen sind, können wir mit dem blanken Chip arbeiten. Das Breakout, das ich zum Prototyping verwende, ist einfach dieser Chip, der auf eine Platine gelötet ist, die jeden Pin zu einem Header führt, der leicht in ein Steckbrett gesteckt werden kann. Wenn Sie mit einem anderen Chip arbeiten, stellen Sie einfach sicher, dass Sie die richtige Spalte betrachten. Ich werde die 5V-toleranten Pins markieren.
Gleich auf Anhieb sehen wir, dass die Pins 5 und 6 als FT gekennzeichnet sind. Diese Pins gehören zu PF0 und PF1 und dienen auch als erster I2C. Die nächsten FT-Pins 18 und 19, die zu PF4 und PF5 gehören, finden sich auf Seite 29. Auf den nächsten Seiten, Seite 30, 31 und 32, sehen wir eine ganze Reihe von 5V-toleranten Pins. Denken Sie daran, wir konzentrieren uns im Moment nur auf FT, nicht auf FTf. Auf Seite 30 sind die Pins 28 bis 38 5V-tolerant, mit Ausnahme der Pins 31 und 32, die Leistungs-Pins sind. Diese Pins entsprechen hauptsächlich Port B und ein paar Port C mit PB2, PB10, PB11, PB12 PB13, PB14, PB15, PC6 und PC7. Die Haupt-Alternativfunktionen für diese Pins sind Timer, USART (speziell der 3. USARD), SPI 1 und 2, I2C 1 und 2 und ein paar EVENTOUTs. Auf Seite 31 sind alle Pins 39 bis 50 5V-tolerante GPIO, außer Pin 47, der für Masse/VSS reserviert ist. Diese Pins fallen in die Ports C, A und F und sind PC8, PC9, PA8, PA9, PA10, PA11, PA12, PA13 (SWDIO), PF6, PF7, PA14 (SWCLK) und PA15. Wir wollen die Programmier-Pins SWDIO und SWCLK meiden. Diese Pins haben Alternativfunktionen von USART 1, 2 und 4, I2C 1 und 2, einige Timer und einige EVENTOUTs. Und schließlich auf Seite 32 sind die Pins 51 bis 57 5V-tolerant und befinden sich hauptsächlich an Port B, Port C und Port D. Speziell sind es PC10, PC11, PC12, PD2, PB3, PB4 und PB5. Die Alternativfunktionen für diese Pins sind die oberen USARTs 3, 4 und 5, weitere Timer, SPI 1 und I2C 1.
Wie Sie sehen können, sind die Ports und ihre Pins überall verstreut. Glücklicherweise haben wir ein paar Dinge auf unserer Seite: das Wissen, Bits dorthin zu liefern, wo wir sie haben wollen, und die alternativen Funktionen sind sehr vielseitig. Lassen Sie uns also die Pins auswählen, die wir an die LCD-Datenverbindungen anschließen werden.
[[TUTORIALMENU(tutorial-arm" frameborder="0" allowfullscreen>