Mit diesem Projekt kann die STM32F4 CPU mit einem PC “gesteuert” werden.
Bilder :
Funktion :
Man verbindet die CPU mit dem PC und kann dann Kommandos an die CPU senden, die diese dann ausführt.
Auf wunsch von “Joerg” kann man 3 Verbindungsarten benutzen :
1. Per USB-Kabel und der USB-OTG-Buchse = USB-CDC (über einen virtuellen Comport)
2. Per “normaler” UART-Schnittstelle
3. Per Ethernet-Kabel über das UDP-Protokoll (dazu ist ein externer PHY notwendig)
Welche der Schnittstellen aktiviert werden soll, kann im H-File eingestellt werden
(im standard ist nur USB-CDC aktiviert)
Auf der PC-Seite könnt ihr für die Schnittstellen 1+2 z.B. “Putty.exe” oder mein “UART-Terminal” benutzen.
Für die UDP-Schnittstelle könnt ihr mein “UDP-Server.exe” benutzen (der ist zwar eigentlich für das myAVR MK3 Board, geht aber hierfür genauso)
Im Moment gibt es Digitale GPIO Funktionen um einen beliebigen GPIO-Pin als Ausgang (oder Eingang) zu definieren und danach entweder den Pegel am Pin zu schalten oder den Pegel auszulesen.
Und auf Wunsch von “Tom” können jetzt auch die 16 AD-Kanäle ausgelesen werden.
Ich habe im PC-Terminal-Programm eine extra Registerkarte eingebaut um die Funktionen etwas komfortabler bedienen zu können.
Falls jemand noch zusätzliche Funktionen wünscht (z.B. DAC usw) und das nicht selbst realisieren kann, dann schreibt mir.
Kommandos :
Die Kommandos müssen als “Strings” an die CPU gesendet werden (mit CarriageReturn “0x0D” als Endekennung)
das Kommando “HELP” listet alle im Moment implementieren Befehle auf
falls ein Kommando nicht verstanden wurde (z.B. weil falsch geschrieben) wird ein “CMD=?” zurückgesendet
Beispiele :
GPIO:
um den Pin [Port-D, Pin-12] als Ausgang zu deklarieren : “GPIO_OUT_D12″
um einen Hi-Pegel an [Port-D, Pin-12] auszugeben : “GPIO_HI_D12″
um einen Lo-Pegel an [Port-D, Pin-12] auszugeben : “GPIO_LO_D12″
um den Pin [Port-C, Pin-3] als Eingang zu deklarieren (mit PullUp) : “GPIO_IN_PU_C03″
um den Pegel an [Port-C, Pin-3] zu lesen : “GPIO_RD_C03″
ADC:
um den Pin [Port-A, Pin-0] als Analog-Eingang zu deklarieren : “ADC_IN_A00″
um den AD-Wert an [Port-A, Pin-0] zu lesen : “ADC_RD_A00″
um eine Mittelwertbildung über 32 Werte einzuschalten : “ADC_SET_MW_5″
Hier der komplette CooCox-Projektordner zum download :
Hier der Link zu meinem Terminal PC-Programm :
Das ging ja echt fix
Danke!
Vorneweg: Super Seite, super Anleitungen, alles perfekt und funktioniert einwandfrei!
“Falls jemand sowas gebrauchen kann” —> Ja genau das was ich gesucht habe!
und dann “falls jemand eine zusätzliche Funktion wünscht”: Ja das wäre eine richtig gute Sache, dass man per Terminalbefehl jeweils 2 oder 3 ADC Ports ausliest und den ADC Wert ans Terminal zurücksendet.
Wäre toll, wenn du das auf deine To-Do Liste setzen könntest.
Dann müssten wir ernsthaft mal über dein Zepter reden
Ja, kein Problem. Ich werde dann mein PC-Terminal-Programm auch erweitern, damit man das etwas komfortabler einsetzen kann.
fertig. probier es mal aus. und den speed vom auslesen bitte nicht kleiner als 50ms einstellen (known bug
Hallo Uwe,
ich würde gerne Variablen hin und her senden können. int und float. Falls du dazu mal Zeit finden würdest. Würde mich freuen.
Grüße
Jörg
schau dir mal die Library-75 an.
Das umwandeln zum senden ist ja nicht wirklich schwierig, komplizierter ist das extrahieren des empfangenen Strings.
Mit festen Längen wird man da ja nichts.