Forum: Mikrocontroller und Digitale Elektronik Programmieren von STM32F765VGT6


von Stephan R. (rabbe)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich habe mir kürzlich ein PCB mit einem uC (STM32F765VGT6) 
zusammengebaut (Siehe Anhang). Nun wollte ich diesen programmieren, 
jedoch habe ich keine Ahnung wie man so einen uC direkt progammiert. Bis 
jetzt habe ich immer nur Evaluation Kits gearbeitet.

Ich habe folgende Schnittstellen zur Verfügung :
- USB
- UART
- JTAG/SWD
- direkt über die Pins

Über USB bekomme ich zwar Spannung, aber der PC erkennt kein USB-Gerät.
Außerdem weiß ich nicht, ob der Chip überhaupt funtioniert.

Deswegen bräuchte ich jetzt eure Hilfe :
1) Wie kann ich überprüfen, ob der Chip in Ordnung ist?
2) Wie programmiere ich ihn am besten? Brauche ich da spezielle 
USB-Adapter?

Vielen Dank schon mal :)

: Bearbeitet durch User
von pegel (Gast)


Lesenswert?

Ist zwar eigenartig, dass man erst etwas baut und dann über das 
Programmieren nachdenkt, aber gut.

Das Beste ist ein Programmieradapter ST-Link für SWD.

ebay 282805864780

Gibt es auch günstig aus CN, dauert aber dann.

Dazu nutze ich STM32CubeMX und SW4STM32.

von STK500-Besitzer (Gast)


Lesenswert?

Entweder verwendet man einen ST-Link oder einen Bootloader.
Wie man den ST-Link anschließt oder den Bootloader - sofern ab Werk 
installiert - anspricht, ist im Reference Manual des Controllers 
beschrieben.

von Lutz (Gast)


Lesenswert?

Stephan R. schrieb:
> ich habe mir kürzlich ein PCB mit einem uC (STM32F765VGT6)
> zusammengebaut (Siehe Anhang)

Wirklich?

von pegel (Gast)


Lesenswert?

Wenn es ein Bausatz zu den vielfältigen "Flight Controllern" war,
warum nicht.
Ein Schaltplan ist hoffentlich vorhanden?

von Brutzel Fritze (Gast)


Lesenswert?

Stephan R. schrieb:
> ich habe mir kürzlich ein PCB mit einem uC (STM32F765VGT6)
> zusammengebaut (Siehe Anhang).

Wenn du den Prozessor selbst draufgebruzzelt hast und
so etwas zum ersten Mal (wie es aussieht) gemacht hast
dann ist dabei mit hoher Wahrscheinlichkeit etwas
schiefgeganen.

von pegel (Gast)


Lesenswert?

Brutzel Fritze schrieb:
> mit hoher Wahrscheinlichkeit etwas
> schiefgeganen.

Nicht so negativ bitte. ;)

Ich denke, die 6 Euro für den Adapter, bzw. falls ein USB-RS232 Wandler 
vorhanden ist, könnte schon einen Versuch wert sein.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Stephan R. schrieb:
> Bis
> jetzt habe ich immer nur Evaluation Kits gearbeitet.

Wenn da ein Discovery Board bei war, dann hast du bereits einen ST-Link. 
Der Boardcontroller bei den Disco Boards ist nämlich genau sowas.

von Base64 U. (6964fcd710b8d77)


Lesenswert?

DFU USB keine option? Bei manchen STMs gibt einen USB bootloader (im 
ROM) über den man ohne weitere sachen das ding bespielen kann. Benötigt 
nur eine gewisse konfig der boot pins (boot1 und boot2 pins) und dannach 
erst den anschluss der USB leitung damit das ding am PC auf taucht.

von Stephan R. (rabbe)


Angehängte Dateien:

Lesenswert?

Vielen Dank für eure Hilfe, ich habe mir den ST-Link V2 
Programmieradapter bestellt.
Ich dachte ursprünglich, dass der Controller einen Bootloader lädt (mit 
boot0 auf VCC), wenn ich ihn "out of box" an USB anschließe.

Das Endprodukt soll ein Flugcontroller für Helikopter werden (gut 
geraten :D ).
Dafür habe ich mir ein PCB gezeichnet, in China drucken lassen und zu 
Hause mit Bauteilen bestückt.
Im Anhang ist der Schaltplan.

Aber könnte ich noch irgendwie testen, ob der Mikrocontroller überhaupt 
funktioniert?
Ich bin mir nicht sicher, ob ich den Controller beim Einlöten geschossen 
habe.

von pegel (Gast)


Lesenswert?

Wenn die LED2 einen Vorwiderstand hätte und auf der Platine zu finden 
wäre, könnte ich dir eine hex oder bin basteln, die diese blinken lässt.

Laut:

https://www.st.com/content/ccc/resource/technical/document/application_note/b9/9b/16/3a/12/1e/40/0c/CD00167594.pdf/files/CD00167594.pdf/jcr:content/translations/en.CD00167594.pdf

hat dein µC einen DFU USB Bootloader. Siehe: Table 80

Ich habe mich allerdings nicht damit beschäftigt.

Mit dem STM32CubeProgrammer sollte eine Übertragung der Datei möglich 
sein,
bzw. sich eine Verbindung herstellen lassen.

von pegel (Gast)


Lesenswert?

Dein "Quarz" scheint ein Resonator zu sein, der hoffentlich für USB 
Ansprüche genügt.

von Namelos (Gast)


Lesenswert?

USB_VBUS ist direkt mit PA9!?

von Stephan R. (rabbe)


Lesenswert?

Danke für dein Angebot :D
Ich sollte im Laufe dieser Woche den Programmieradapter bekommen. 
Versuche den uC damit zu erreichen. Falls es nicht funktioniert, melde 
ich mich nochmal bezüglich deines Programms   ;)
Über den BootPin0 und USB hat es leider nicht funktioniert.

Was ist der Nachteil wenn ich nur einen 8MHz Resonator verwende? Ich 
dachte der uC kann den Takt selbst erhöhen.
Bzw. welchen Vorteil hätte es, wenn ich statt dem 8MHz Resonator ein 
25MHz Quarz an PH0/PH1 (OSC-IN/OUT) und an PC14/PC15 (OSC32-IN/OUt) ein 
32.768 kHz Quarz anschließe?

Ja PA9 ist laut Datenblatt ein USB-VBUS Anschluss. Da ich aber über USB 
die ganze Platine mit Spannung versorgen möchte, habe ich die 
Spannungsversorgung vom USB auf den Eingang der 3.3V 
Spannungsstabilisierung gelegt.

von Andrew T. (marsufant)


Lesenswert?

Stephan R. schrieb:
> Ja PA9 ist laut Datenblatt ein USB-VBUS Anschluss. Da ich aber über USB
> die ganze Platine mit Spannung versorgen möchte, habe ich die
> Spannungsversorgung vom USB auf den Eingang der 3.3V
> Spannungsstabilisierung gelegt.

Dann schau bitte noch mal ins DaBla wie der PA9 zu belegen ist.

von pegel (Gast)


Lesenswert?

Stephan R. schrieb:
> Über den BootPin0 und USB hat es leider nicht funktioniert.

Hast du dir den Boot Pin genau angesehen?
Der ist bei deinem µC ein ADC Eingang. D.h. es gibt mehr als nur High 
oder Low Pegel um die Funktion festzulegen.

Der Unterschied zwischen Quarz und Resonator ist die Genauigkeit.
PLL aus 8MHz geht immer, für die 48 MHz USB Takt versechsfacht sich auch 
der Fehler des Resonators. Damit wird dann hoffentlich die USB 
Spezifikation noch eingehalten.

von Jim M. (turboj)


Lesenswert?

Stephan R. schrieb:
> Was ist der Nachteil wenn ich nur einen 8MHz Resonator verwende? Ich
> dachte der uC kann den Takt selbst erhöhen.

Dann muss er aber auch ein entsprechendes Programm drin haben, und der 
Resonator plus PLL muss innerhalb der +-2500 PPM bleiben (USB Spec).

Ich habe grad keine Ahnung wie genau Resonatoren sind oder ob die 
überhaupt am Oszillator funktionieren (gibt welche die nur Quarze 
vertragen).


Die allererste Platinenrevision funktioniert praktisch nie ohne 
Änderungen mit Fädeldraht und Cutter Messer.

Namelos schrieb:
> USB_VBUS ist direkt mit PA9!?

Könnte den µC Pin (oder den ganzen µC) grillen. Schau mal im DB/Manual 
nach wieviel Spannung der Pin verträgt, da gehört fast sicher ein 
Spannungsteiler davor.

Fehlt im Bild der Kondensator an V_CAP1 (C16)? Dann geht gar nix, denn 
dann hat der Core keine stabile Spannung IMHO.

Mir gefällt auch die Plazierung der Abblock-C nicht wirklich, die würde 
ich beim QFP100 Package mindestens einmal an jeder der 4 Seiten des 
Chips erwarten.

von Beachstar (Gast)


Lesenswert?

Den STM um 180 Grad gedreht einlöten?

von Brutzel Fritze (Gast)


Lesenswert?

Beachstar schrieb:
> Den STM um 180 Grad gedreht einlöten?

Würde meiner Meinung nach helfen!

Aber nur wenn der Controller nicht schon kaputt ist.

(gratuliere, Beachstar. Ich war zu faul nachzuschauen)

von Stephan R. (rabbe)


Angehängte Dateien:

Lesenswert?

Andrew T. schrieb:
> Dann schau bitte noch mal ins DaBla wie der PA9 zu belegen ist.
Dieser Pin hat laut Datenblatt als "Alternate functions" USB-VBUS.
Ich habe diesen Pin zwar nicht verwendet, könnte an diesen jedoch über 
einen Spannungsteiler die 5V vom USB anlegen.


pegel schrieb:
> Hast du dir den Boot Pin genau angesehen?
> Der ist bei deinem µC ein ADC Eingang. D.h. es gibt mehr als nur High
> oder Low Pegel um die Funktion festzulegen
Laut Datenblatt Seite 158 (Bild im Anhang) müsste der Bootpin ein 
GPIO-Pin sein ohne ADC-Baugruppe.


Jim M. schrieb:
> Fehlt im Bild der Kondensator an V_CAP1 (C16)?
Nein, ich habe einen 2.2uF Kondensator angeschlossen, wie im Datenblatt 
beschrieben.


Ich habe im Schaltplan vom uC das Quarz und den Bootpin überarbeitet 
(siehe Bild im Anhang). Passt das so?

Datenblatt vom 25MHz Quarz:
http://www.farnell.com/datasheets/2608076.pdf?_ga=2.239234307.1249151660.1534183037-202067146.1534183037

Ich hab das mit dem 25MHz-Quartz von einem Evaluation-Board (Siehe 
Anhang).
Leider gibts leider kein Evaluation board mit dem uC.

von Brutzel Fritze (Gast)


Lesenswert?

Stephan R. schrieb:
> Ich habe im Schaltplan vom uC das Quarz und den Bootpin überarbeitet
> (siehe Bild im Anhang).

Die Änderungen die du jetzt offensichtlich planst hättest du
billiger haben können wenn du vorher hier im Forum aktiv
geworden wärst.

Ich würde auch nochmal diese Bemerkung unterstreichen:

Jim M. schrieb:
> Mir gefällt auch die Plazierung der Abblock-C nicht wirklich, die würde
> ich beim QFP100 Package mindestens einmal an jeder der 4 Seiten des
> Chips erwarten.

Die Masse- und 3.3V-Führung dazu ist nicht ganz unerheblich.
Solide Designs verwenden eine durchgehende Masse-Plane. Verlangt
natürlich nach einem 4-fach Layeraufbau.

von Stephan R. (rabbe)


Lesenswert?

Brutzel Fritze schrieb:
> Die Änderungen die du jetzt offensichtlich planst hättest du
> billiger haben können wenn du vorher hier im Forum aktiv
> geworden wärst.
Ja leider, aber im nachhinein ist man immer schlauer :D
Ich kannte das Forum vorher noch nicht...

Bevor ich mir eine neue Platine anfertigen lasse möchte ich trotzdem 
noch die grundlegenden Funktionen auf der vorhandenen ausprobieren.
Vielleicht tauchen noch weitere Fehler auf :D

Was genau meint ihr mit den Abblockkondensatoren?
Die 0,1uF von VCC1-5 am uC?
Oder ist es wegen der Plazierung auf dem PCB?

Ja das mit dem 4fach Layer ist mir bekannt jedoch für die erste Platine 
einwenig zu teuer :(

Aber der Rest ist so in Ordnung?

von Brutzel Fritze (Gast)


Lesenswert?

Stephan R. schrieb:
> Was genau meint ihr mit den Abblockkondensatoren?
> Die 0,1uF von VCC1-5 am uC?

Ja. Alle Cs am Controller.

Stephan R. schrieb:
> Oder ist es wegen der Plazierung auf dem PCB?

Ja. Die Cs müssen ganz nah an die Controller-Pins. Vorrangig
vor allen Leitungen.

Stephan R. schrieb:
> Aber der Rest ist so in Ordnung?

Das sieht man erst klar wenn ein neuer Schaltplan und
ein neues Layout da ist.

Aber HTML ist ja geduldig und braucht keinen Radiergummi.

von Stephan R. (rabbe)


Lesenswert?

Okay, danke :D
Ich überarbeite das PCB-Layout nocheinmal.

von Stephan R. (rabbe)



Lesenswert?

So, hat'n bisschen gedauert, aber hier ist das neue Layout:
https://github.com/RabbeS/OpenFlightController

Bin auf eure Meinungen gespannt :D


Den ST-Link v2 hab ich heute auch bekommen und kann jetzt den Controller 
ausprobieren.



PS:
Die Bilder im Anhang entsprechen denen im Repository :)

von Harry L. (mysth)


Lesenswert?

Du hast keine Ahnung von der Programmierung?!
Su hast keine Ahnung von den Hardware?!
Du glaubst mit dem Vorwissen eine Leiterplatte designen zu können?!

Normalerweise fängt man erstmal mit einem Evaluation-Board vom 
Hersteller an, und lernt worauf es ankommt (Hard- und Software)

..aber vielleicht bist du ja ein "Wunderkind"

Träum weiter!

von pegel (Gast)


Angehängte Dateien:

Lesenswert?

Stephan R. schrieb:
> Den ST-Link v2 hab ich heute auch bekommen und kann jetzt den Controller
> ausprobieren.

Na dann, lass blinken.

Beim dem Blinky im Anhang wird PC13 geschaltet und dazu der interne 
Oszillator benutzt.

Zum übertragen empfehle ich das neue STM32CubeProg.

https://www.st.com/en/development-tools/stm32cubeprog.html

von pegel (Gast)


Angehängte Dateien:

Lesenswert?

Ups, kleiner Fehler.
Hier die Richtige:

von Stephan R. (rabbe)


Lesenswert?

@pegel: Vielen Dank für das Programm :D
Die "alte" Platine und der uC funktionieren.

Passt die Position der Kondensatoren auf der "neuen" Platine?

von Stephan R. (rabbe)


Angehängte Dateien:

Lesenswert?

@mysth:
Harry L. schrieb:
> ..aber vielleicht bist du ja ein "Wunderkind"
>
> Träum weiter!

Hier ein Video von meinem ersten eigenem Programm,
umgesetzt mit libopencm3 :D

: Bearbeitet durch User
von Lutz (Gast)


Lesenswert?

pegel schrieb:
> PLL aus 8MHz geht immer, für die 48 MHz USB Takt versechsfacht sich auch
> der Fehler des Resonators. D

Na zum Glück nicht.

von Stephan R. (rabbe)


Lesenswert?

Lutz schrieb:
> Na zum Glück nicht.

Um die LED blinken zu lassen, benötigt man das externe Quarz nicht.
Momentan läuft der uC nur über seine integrierte Taktquelle.

Um den USB Standard zu erfüllen, wird leider sowohl interne, als auch 
das externe Quarz von der Genauigkeit nicht ausreichen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.