Inhalt
- Dinge, die für die UART-Kommunikation benötigt werden
- 1. UART-Kommunikationssoftware für PC
- 2. USB-zu-Seriell-Konverter / Transceiver
- 3. dsPic Micro-Controller und sein Programmierer
- 4. Ein paar Überbrückungsdrähte
- 5. USB-Verlängerungskabel (optional)
- 1. Installieren Sie die erforderliche Software und Treiber
- Bei Verwendung eines USB-zu-TTL-Konverters:
- Bei Verwendung von PicKit:
- 2. Verdrahten Sie die Anschlüsse
- Für TTL-Konverter:
- Für PicKit:
- 3. Senden Sie Daten von dspic über UART
- Beispielcode zum Senden von Daten über UART
- 4. Empfangen Sie Daten über UART in dspic
- Beispielcode zum Empfangen von Daten von UART
Der Autor schloss sein letztes Ingenieurjahrsprojekt mit den dsPic-Mikrocontrollern ab und erhielt umfassende Einblicke in diese Geräte.
UART ist aufgrund seiner Einfachheit, einfachen Implementierung und minimalen Hardwareanforderungen das am häufigsten verwendete Kommunikationsprotokoll in Mikrocontrollern.
Dieses Tutorial und die Implementierung eines Beispielcodes führen Sie durch den Prozess der erfolgreichen UART-Kommunikation zwischen einem dspic-Mikrocontroller und einem PC.
Dinge, die für die UART-Kommunikation benötigt werden
Der erste Schritt sollte darin bestehen, alle für die UART-Kommunikation erforderlichen Dinge zu sammeln. Die folgende Liste fasst diese Hardware- und Softwareanforderungen zusammen:
1. UART-Kommunikationssoftware für PC
- Option 1: Ich würde die Arduino IDE für diesen Zweck bevorzugen. Die Arduino IDE verfügt über einen seriellen Monitor, mit dem gesendete Daten vom Mikrocontroller überwacht werden können. Es hat auch einen ausgezeichneten grafischen Monitor, um die empfangenen Daten zu zeichnen. Dieselbe IDE kann auch zum Senden serieller Daten verwendet werden.
- Option 2: Das PicKit ™ -Tool verfügt auch über einen seriellen Monitor zum Senden und Empfangen von Daten, jedoch nicht über einen seriellen Plotter. Es werden auch keine hohen Baudraten bis zu 115000 unterstützt, die von der Arduino IDE unterstützt werden können.
2. USB-zu-Seriell-Konverter / Transceiver
- Option 1: Der USB-TTL-Wandler PL2302 kann sehr bequem als Transceiver zwischen der seriellen USB-Schnittstelle des PCs und den TX / RX-Pins des Mikrocontrollers verwendet werden. Es ist sehr billig und im Internet und in lokalen Elektrofachgeschäften erhältlich (zumindest in meiner Region).
- Option 2: Das PicKit ™ ist das Programmierwerkzeug der Pic-Mikrocontroller und verfügt über einen eingebauten UART-Transceiver. Der Vorteil dieser Verwendung besteht darin, dass Sie keine zusätzliche Hardware erwerben müssen, da PicKit die Aufgabe übernimmt. (Vorausgesetzt, Sie haben es bereits, seit Sie die Bilder programmiert haben.) Der Nachteil ist, dass Sie das PicKit nicht in Ihre fertigen Projekte einfügen können, da Sie es möglicherweise für die spätere Verwendung benötigen. In diesem Fall ist der USB-zu-TTL-Konverter eine bessere Option.
- Option 3: Eine UART-zu-RS232-Konvertierungsschaltung kann mit Hilfe von MAX232-ICs und RS232-Kabeln hergestellt werden. ICs sind normalerweise billig, aber die Herstellung der Schaltung kostet mehr Zeit. Dies war die Legacy-Lösung vor dem Aufkommen von USB-zu-TTL-Konvertermodulen.
3. dsPic Micro-Controller und sein Programmierer
Ein Bildgerät und sein Programmierer zum Laden des Codes.
4. Ein paar Überbrückungsdrähte
Herstellen der erforderlichen Verbindungen zwischen den TX / RX-Pins des Mikrocontrollers und dem USB-TTL-Wandler
5. USB-Verlängerungskabel (optional)
Falls Sie den USB-zu-TTL-Konverter weit von Ihrem PC entfernt verkabeln müssen, wenn Sie Ihr Projekt endgültig zusammenbauen.
Nachdem Sie die Liste der erforderlichen Dinge durchgearbeitet haben, können Sie mit den Schritten 1 bis 4 fortfahren.
1. Installieren Sie die erforderliche Software und Treiber
Installieren Sie den seriellen Monitor Ihrer Wahl auf Ihrem PC. Wie ich bereits sagte, bevorzuge ich die Arduino IDE.
Bei Verwendung eines USB-zu-TTL-Konverters:
Sie müssen den Treiber herunterladen und installieren, bevor Sie das Modul zum Laufen bringen können. Die Treiber sind auf der Prolific Systems-Website und an anderer Stelle im Internet verfügbar. Stellen Sie sicher, dass die von Ihnen heruntergeladenen Treiber mit Windows 7 kompatibel sind, da dies sonst nicht funktioniert. Suchen Sie nach einem separaten Tutorial für die Treiberinstallation, wenn Sie Probleme haben.
Nach der Installation des Treibers müssen Sie den TTL-Konverter testen, um sicherzustellen, dass er ordnungsgemäß funktioniert. Es wird empfohlen, vor dem Testen des Konverters nicht fortzufahren.
So testen Sie den Konverter:
- Installieren Sie zuerst den erforderlichen Treiber und starten Sie das System neu.
- Stecken Sie das Konvertermodul ein und der PC sollte eine neue Geräteverbindung feststellen.
- Schließen Sie die TX- und RX-Pins am TTl-Wandler mit Hilfe eines Jumpers kurz.
- Öffnen Sie die Arduino IDE und wählen Sie die richtige serielle Schnittstelle aus, an die der Konverter angeschlossen ist.
- Senden Sie alle Daten über den seriellen Monitor.
- Wenn Sie dieselben gesendeten Daten auf dem seriellen Monitor zurückerhalten, funktioniert das Modul ordnungsgemäß.
Bei Verwendung von PicKit:
Laden Sie einfach das Pickit-Programm herunter und verbinden Sie das PicKit-Gerät mit Ihrem PC.
2. Verdrahten Sie die Anschlüsse
Für TTL-Konverter:
Pin-Name am Konverter | Entsprechender PIN-Name auf dem Mikrocontroller |
---|---|
TX | RX |
RX | TX |
GND | GND, Vss |
5 V (optional) | Vdd, Vcc |
- Pin-Namen sind auf der Rückseite des Konverters aufgedruckt.
- Genaue PIN-Nummern, die ihren PIN-Namen entsprechen, müssen aus dem Datenblatt entnommen werden, wenn sie sich von Gerät zu Gerät ändern.
- Optional kann eine 5-V- oder 3,3-V-Versorgung vom Wandler zur Stromversorgung des Mikrocontrollers verwendet werden.
- Es ist zwingend erforderlich, die Erdung der Steuerung und des Umrichters gemeinsam zu machen.
Für PicKit:
Das PicKit verfügt über einen 6-poligen Anschluss mit Pin Nummer 1, der mit einem weißen Pfeil am Gerät gekennzeichnet ist.
Pin-Nummer auf dem 6-Pin-Header | Entsprechender Pin-Name auf der MCU |
---|---|
2 | Vcc, Vdd |
3 | Gnd, Vss |
4 | TX |
5 | RX |
- Zusätzlich wird der Schaltplan in einem Einschub im UART-Tool des PicKit angezeigt.
3. Senden Sie Daten von dspic über UART
Laden Sie den Code zum Senden von Daten über UART hoch, nachdem Sie die Verbindungen verkabelt und das TTL-Konvertermodul getestet haben, um sicherzustellen, dass es funktioniert.
- Text kann mit der Funktion printf () in der Bibliothek stdio.h gesendet werden.
- Variablen können gesendet werden, indem sie zuerst in ein Array konvertiert und dann mit printf () gedruckt werden.
Beispielcode zum Senden von Daten über UART
#define FCY 30000000 #include xc.h> #include stdio.h> #include delay.h> #include libpic30.h> #include math.h> #include p30F4011.h> _FOSC (CSW_FSCM_OFF & FRC_PLL16); // Fosc = 16 × 7,5 MHz, d. H. 30 MIPS _FWDT (WDT_OFF); // Watchdog-Timer aus _FBORPOR (MCLR_DIS); void UART_Init (void) {_TRISF3 = 0; // Suche nach den genauen TX / RX-Pins deines Bildgeräts _TRISF2 = 1; // TX-Pin muss als Ausgangsport und RX-Eingang U1BRG = 7 gesetzt sein; // 115000 Baudrate bei 30 MIPS U1MODEbits.UARTEN = 1; // UART aktivieren} int main (void) {UART_Init (); while (1) {// Zum Drucken einer Variablen sprintf (Array, "% d", Variable); printf (Array); printf (" r n"); // Text drucken printf ("Grüße aus Pakistan r n"); __delay_ms (1000); }}
4. Empfangen Sie Daten über UART in dspic
Um Daten von UART zu empfangen, müssen Sie einen UART-Empfangsinterrupt verwenden, der jedes Mal ausgelöst wird, wenn ein Datenpaket in den UART-Empfangsregistern (U1RXREG) empfangen wird. Diese Daten werden an eine andere Variable übertragen und der Empfangspuffer wird gelöscht, wenn er voll ist. Sie können den folgenden Beispielcode verwenden.
- Um sicherzustellen, dass der Interrupt tatsächlich ausgelöst wird, wurde an Port D0 eine LED angeschlossen, die einmal blinkt, wenn der Interrupt ausgelöst wird.
- Wenn die LED unmittelbar nach dem Senden einiger Daten vom seriellen Monitor blinkt, gehen Sie davon aus, dass der Code ordnungsgemäß funktioniert.
- Der Wert der Variablen 'data' kann auch im Debug-Modus überprüft werden.
Beispielcode zum Empfangen von Daten von UART
#define FCY 30000000 #include xc.h> #include stdio.h> #include libpic30.h> #include uart.h> #include delay.h> #include p30F4011.h> // Konfigurationseinstellungen _FOSC (CSW_FSCM_OFF & FRC_PLL16) ;; // Fosc = 16 x 7,5 MHz, Fcy = 30 MHz _FWDT (WDT_OFF); // Watchdog-Timer aus _FBORPOR (MCLR_DIS); // Pin-Char-Daten zum Zurücksetzen deaktivieren; void Interrupt_Init (void) {IEC0bits.U1RXIE = 1; } void __attribute __ ((Interrupt, auto_psv)) _U1RXInterrupt (void) {_LATD0 = 1; __delay_ms (500); _LATD0 = 0; Daten = U1RXREG; if (U1STAbits.OERR = 1) {U1STAbits.OERR = 0; } IFS0bits.U1RXIF = 0; } int main () {// Setze alle Port D Pins als Ausgänge _TRISD0 = 0; // UART einrichten - Die meisten Standardoptionen sind in Ordnung. UART_Init (); Interrupt_Init (); während (1) {__delay_ms (1000); } return 0; }}
Dieser Artikel ist genau und nach bestem Wissen des Autors. Der Inhalt dient nur zu Informations- oder Unterhaltungszwecken und ersetzt nicht die persönliche Beratung oder professionelle Beratung in geschäftlichen, finanziellen, rechtlichen oder technischen Angelegenheiten.