STM32F103C8T6 - die ersten Schritte. Fahren Sie mit dem Oszilloskop fort
Fortsetzung des Artikels . Dieses Mal werden wir versuchen, USB ohne einen Abfall der Messfrequenz anzuschließen und einen einkanaligen analogen Teil zu sammeln.
Kampf mit USB
Unser MK hat einen Hardware-USB. Ich wollte es wirklich benutzen. Ich wollte es sogar vor dem Kauf. Aber aufgrund von Schwierigkeiten wurde er "für später" verschoben. Und die Schwierigkeiten sind:- Die USB-Entwickler hatten offenbar zu viel Zeit und Intelligenz. Das Problem ist, dass sie das Gefühl hatten, dass alle anderen nicht weniger haben sollten. Wenn Sie versuchen, gemäß der Dokumentation mit USB umzugehen, ist diese Lektion eindeutig nicht für einen Tag gedacht.
- Beim Verbinden von Bibliotheken traten ständig Schwierigkeiten auf. Wie man sie in Coocox-Projekten verbindet, habe ich nicht herausgefunden.
Als Ergebnis fand ich in einem Forum ein Beispiel, das in Coocox konvertiert wurde und funktionierte.Die Probleme mit unserem USB haben dort nicht geendet. Ein separater USB <-> USART-Adapter hat den Vorteil, dass er separat ist, was bedeutet, dass sein Betrieb nicht von unserem MK abhängt, nämlich:- Frequenzen (für eine höhere Konvertierungsfrequenz habe ich MK übertaktet);
- Neustarts, die während eines Blinkens auftreten.
Wenn es einen Adapter gibt, können wir mit MK alles machen - der Adapter funktioniert in diesem Fall und der COM-Port im System geht nirgendwo hin.Mit dem Übertakten wurde diese Entscheidung getroffen: Im Normalzustand arbeitet der MK mit der Standardfrequenz. Wenn wir eine Messung durchführen müssen, übertakten wir den MK (ja, im Gegensatz zum AVR kann er dies unterwegs tun), sammeln Daten, reduzieren die Frequenz und übertragen die Daten langsam auf den Computer.Um nach jedem Neustart / Blinken nichts zu wechseln, schauen wir uns die Platine an:
Bei einem Jumper wird hier eines der Kabel auf +3,3 V hochgezogen, und der Computer erkennt, dass das Gerät angeschlossen ist. Es wurde experimentell festgestellt, dass Sie nach dem Flashen des MK den USB-Anschluss entweder herausziehen und wieder anschließen müssen, um den COM-Anschluss wieder zu verwenden, oder den Jumper entfernen und wieder aufsetzen müssen. Die zweite Option ist viel einfacher zu automatisieren. Der zweite Pin des Jumper-Steckers über einen Widerstand, der mit dem MK-Fuß verbunden ist, und nach einem Neustart nach einer Weile speise ich ihn auf einen hohen Pegel. Infolgedessen glaubt der Computer, dass das Gerät aus- und wieder eingeschaltet wurde. Hier ist ein weiterer Punkt: Wenn Sie das Gerät bei geöffnetem Port trennen und dann wieder einschalten, wird der COM-Port im Geräte-Manager angezeigt, Sie können ihn jedoch nicht öffnen (ich verwende Windows 7).Nun zum Übertakten. Damit USB funktioniert, kann MK mit folgenden Frequenzen arbeiten:
Und um die maximale ADC-Geschwindigkeit zu erhalten, übertakte ich sie auf Folgendes:
Um den PLL-Multiplikator zu ändern, muss er ausgeschaltet sein. Und wenn zumindest für einen Moment die PLL getrennt wird, gefällt es dem von ihr getakteten USB nicht und die Anwendung auf dem Computer hängt in den meisten Fällen mit einem offenen Port. Nach einem erfolglosen googeln des Problems wurde eine Möglichkeit gefunden, den eingebauten USB und das Übertakten zu kombinieren:- Die Anwendung auf dem PC sendet den MK-Befehl, um eine Reihe von Transformationen durchzuführen, und schließt sofort den Port.
- MK wartet eine Weile (damit die Anwendung Zeit hat, den Port zu schließen) und deaktiviert das Ziehen der USBDP-Leitung auf +3,3 V.
- MK deaktiviert PLL, ändert den Multiplikator von 9 auf 16 und schaltet PLL wieder ein;
- MK führt eine Reihe von Transformationen durch, um das Ergebnis zu speichern.
- MK schaltet die PLL aus, ändert den Faktor von 16 auf 9 zurück und schaltet die PLL wieder ein;
- MK beinhaltet das Ziehen der USBDP-Leitung auf +3,3 V;
- Nach einiger Zeit wird der virtuelle COM-Anschluss wieder auf dem PC angezeigt.
- Die Anwendung auf dem PC öffnet den Port erneut und sendet einen Befehl an den MK, um das Ergebnis zu erfassen.
- MK überträgt das Ergebnis langsam, die Anwendung erstellt einen Zeitplan.
Nicht praktisch, aber um den USB <-> USART-Hardwareadapter aufzugeben und nicht 7/16 = 44% der Geschwindigkeit zu verlieren, lohnt es sich.Wir übernehmen eine weitere Gebühr
Die ganze Zeit zuvor habe ich dieses Board verwendet:
Es ist praktisch, wenn es das Hauptboard im Gerät ist, aber ich möchte es nicht mit Drähten an das Steckbrett anschließen. Zu diesem Zweck wurde vor langer Zeit eine andere Platine bestellt,
die Sie in die Platine stecken oder einfach in eine andere Platine löten können.Die Schaltung dieses Boards wurde im Forum kaum gefunden .Ein paar Eindrücke. Im Allgemeinen freute sie sich. Auf der linken Seite befinden sich die SWD-Pins. Jeder Kontakt ist signiert. Wenn die Chinesen den Eckverbinder dort nicht verlötet hätten, wäre die Signatur sogar sichtbar und bequemer, als jedes Mal auf die JTAG-Pinbelegung auf der vorherigen Platine zu schauen. Alles wurde ohne Probleme geflasht, USB erschien, aber es trat ein kleines Problem auf: Die USBDP-Leitung war fest mit dem +3,3 V-Widerstand verbunden. Der USB-Anschluss war also nicht trennbar ... Ich musste diesen Widerstand ablöten und die Leitung durch den Widerstand an das freie Bein von MK anlöten.Analoger Teil
Zuvor habe ich nur mit Signalen im Bereich von 0 - 3,3 V gearbeitet. Und dies ist dort keine schwebende Null, sondern die Erde, die mit einem USB-Kabel geliefert wurde. Ich möchte jedoch, dass das Oszilloskop die Form der Netzspannung (Hunderte von Volt) und des EKG (Bruchteile eines Millivolt) anzeigen kann.Die Aufgabe ist im Allgemeinen einfach: Nehmen Sie den Eingangsbereich des Oszilloskops und ordnen Sie ihn dem Eingangsbereich des ADC (0 - 3,3 V) zu. Die Schaltung wurde folgendermaßen erfunden:
R1, R2, R3 - Eingangsteiler. Durch Übertragen von MK-Beinen in den Eingabe- oder Ausgabemodus können wir das Teilungsverhältnis ändern.R11, R12, R13 - Widerstände eines nicht invertierenden Verstärkers. Die Verstärkung hängt vom Zustand der Füße des Controllers ab.Es gab Zweifel, ob es möglich ist, die digitalen Ausgänge von MK für solche Zwecke zu verwenden. Die Messung zeigte, dass der Strom durch den MK-Ausgang bei 3,3 mA den Ausgang auf 80 mV führt, d. H. Der Ausgangswiderstand beträgt etwa 24 Ohm. Das Potential eines Ausgangs, der bei 3-4 mV in der Luft hängt, unterscheidet sich je nach Erde / Leistung. Für ein nicht sehr genaues System ist das Ergebnis durchaus akzeptabel.Um die Frequenzeigenschaften, für die ich so viel gekämpft habe, nicht zu ruinieren, wird der Mitarbeiter nicht nur irgendwie, sondern auch schnell benötigt. Ich habe mich für den AD826 entschieden. Und dann gab es Probleme. Wen kümmert es, Sie können die Geschichte hier und hier lesen . Kurzum: Bei Ebay werden gefälschte Chips verkauft.Shelter brauchen bipolare Energie. Dafür wurde ein weiterer Chip benötigt - LT1054. Das Verbindungsdiagramm stammt aus dem Datenblatt, daher werde ich es nicht im Detail beschreiben.Gesamt
Erinnern an die Pläne aus dem ersten Teil des Artikels :- Besiege USB, um den USB-Konverter zu verlassen. <-> USART;
- Beenden Sie den analogen Teil so, dass der Eingangsspannungsbereich nicht 0 - 3,3 V beträgt, sondern anständiger ist.
- Mehrkanalmodus erstellen;
- Implementieren Sie die Steuerung von einem PC aus.
- Machen Sie ein fertiges Gerät in dem Fall;
Ich verstehe, dass ich 1, 2 und teilweise den 4. Absatz abgeschlossen habe.Wird ein solches Gerät im Haushalt benötigt? Wenn Sie es mit dem analogen C1-117 vergleichen, ist es in der Frequenz C1-117 um ein Vielfaches größer. Hier können Sie das Signal jedoch ausreichend lange aufzeichnen und dann langsam untersuchen. So sah ich zum Beispiel einen Interrupt, der von meinem Generator auf dem Arduino ausgelöst wurde:
Im Vergleich zu Handwerken auf dem AVR oder der Soundkarte überschreitet dieser die Konvertierungsfrequenz erheblich.Auf Kosten der Komponenten stellt sich heraus:- LT1054 - 0,8 USD;
- Board mit Controller - $ 4;
- operativ - $ 3;
- Widerstände, Kondensatoren, Dioden - nicht mehr als 1 US-Dollar.
Insgesamt ergibt sich ein Preis von 9 USD + Board + Fall.Konvertierungsfrequenz 9 Mit MSPS können Sie die Signalfrequenz bis zu 1 MHz beobachten. Für 60 US-Dollar können Sie ein PC-basiertes Oszilloskop mit den besten Funktionen kaufen, aber es gibt einfach keine Angebote für den resultierenden Betrag.Das Gerät, das für mich am wertvollsten war, war jedoch nicht das Gerät selbst, sondern die Erfahrung, die ich gemacht habe, als ich versucht habe, etwas schwieriger zu machen, als mit einer Diode zu blinken und zu behaupten, nützlich zu sein! Ich habe mich noch nie mit Elektronik bei der Arbeit beschäftigt und als Amateur kann ich sagen, dass es nicht schwierig ist. Lange ja. Benötigen Sie eine Funktion - Sie fangen an zu tun. Unterwegs sammelst du viele Rechen, aber am Ende stellt sich heraus. Und so oft. Selbst bei solch einer scheinbar kleinen Aufgabe war es so oft. Zum Beispiel gelang es mir erst ab dem dritten Versuch, eine bipolare Ernährung für den Operationsverstärker herzustellen. Aber wenn es genug Ausdauer gibt und die Aufgabe im Prinzip machbar war, wird das Ergebnis definitiv zu etwas ähnlichem führen, wie es ursprünglich gedacht war!Aussehen des Handwerks: Fortsetzung
Source: https://habr.com/ru/post/de385385/
All Articles