Forum: Mikrocontroller und Digitale Elektronik STM32F405 DFU


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Kristian (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe eine "altes" Flightcontrol-Board eines Quadcopters, dass ich 
gerne zweckentfremden will.
Es besitzt einen STM32F405 incl. USB Buchse.

Ich habe per DfuSe-Kit erst per "DFU File Manager" aus der generierten 
.hex eine .dfu gebaut und diese dann mit "DfuSe Demo" geflasht.

Leider passiert auf dem Board nichts (es sollte nur eine LED blinken).

Das Board ist ein OpenPilot Revolution 
(http://opwiki.readthedocs.io/en/latest/user_manual/revo/revo.html#diy-board) 
ganz unten sind auch die Schematics per Download.

Unter anderen sind da die beiden LEDs zu erkennen an den Ports "PB4" und 
"PB5".

Jedoch passiert bei meinem Beispiel-Code nichts....
1
void LED_Init(void)
2
{
3
  GPIO_InitTypeDef GPIO_InitStructure;
4
  /* GPIOD Periph clock enable */
5
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
6
  /* Configure PD12, PD13, PD14 and PD15 in output pushpull mode */
7
  GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_4 | GPIO_Pin_5);
8
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
9
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
10
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
11
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
12
  GPIO_Init(GPIOB, &GPIO_InitStructure);
13
}
14
15
/*---------------------------- Main function -------------------------------*/
16
17
int main(void)
18
{
19
  LED_Init();
20
  int index;
21
22
  while (1)
23
  {
24
      GPIO_ResetBits(GPIOB, GPIO_Pin_5);
25
26
      for (index = 0; index < 500000; index++);
27
28
      GPIO_SetBits(GPIOB, GPIO_Pin_5);
29
30
      for (index = 0; index < 500000; index++);
31
  }
32
}

Stimmt der Code und der Vorgang?

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Als erstes würde ich mir einen ST-Link Adapter besorgen.
SWD an CONN6 ist heraus geführt.

Dann kommt es darauf an wie du entwickeln möchtest.

Ich bevorzuge CubeMX und SW4STM32. Nur als Tipp, andere sehen das anders 
;)

von Kristian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ja darüber hab ich auch schon nachgedacht. Aber eigentlich ist doch der 
DFU Modus da um zu flashen, und mein Projekt ist auch nicht besonders 
umfangreich, daher würde ich gern das nutzen was schon vor mir liegt.

von pegel (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Kannst du machen, merkst aber nicht wenn etwas nicht stimmt.
Z.B.: wenn er direkt im Error landet.

So ist es an dir ein funktionsfähiges Programm zu erstellen.

Ich könnte anbieten eine Blinky hex zum Test zu erstellen.

von pegel (Gast)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Ich habe dir eine hex angehängt.
Damit kannst du die Wanndlung und Programmierung prüfen.

von Kristian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das wäre super, danke!
Dann weiß ich ob mein Fehler in der Toolchain liegt oder im Code.

Ja, ich arbeite sonst auch mit Debuggern, der Vorteil ist da nicht zu 
bestreiten. Nur habe ich gerade keinen für die STM32er hier.

von Kristian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wow, es geht. Es blinkt abwechseld rot/blau :)

Vielen, vielen dank!

Dann liegt mein Fehler in meinem Code irgendwo. :/

Aber es ist schon Mal gut zu wissen dass es flashen geht.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Sehr schön.
Jetzt musst du entscheiden ob du alles "zu Fuß" machen willst, oder Libs 
und HAL zu Hilfe nimmst.
Ohne Debugger würde ich letzteres bevorzugen.

Hast ja gesehen wie einfach das geht ;)

von Kristian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Japp, hab eigentlich libs.
Ist mein erstes STM32 Projekt, daher wollte ich es mir einfach machen.
Habe die CooCox IDE geladen, aber die ist ja mal Grütze. Jedoch gabs da 
fertige libs zum reinladen, aber scheinbar nicht wirklich 
funktionsfähig... :(

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Meinen Vorschlag kennst du.
Hatte noch keine Probleme mit den aktuellen Versionen, da beides von ST 
unterstützt wird und inzwischen recht ausgereift scheint.

von Kristian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ja, ST-Link ist bestellt :) Wahrscheinlich bin ich so ungeduldig, dass 
ich es vorher schon versuche zu fixen.
Aber danke nochmal.

Gibts eigentlich für die STM32 dann eine bessere IDE als dieses CooCox?

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das meinte ich mit CubeMX und SW4STM32.

Es ist eclipse neon mit einem Plugin von AC6.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Vergiss das Video.
In der neuen Version ist es einfacher geworden.

von Kristian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Haha es geht. Knaller :)

Danke vielmals

von Kristian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Diese IDEs sind ja depremierender als alles was ich bis jetzt gesehen 
habe.

Ich versuche jetzt seit gestern irgendwie einen USB VCP Stack zum laufen 
zu bekommen, aber CooCox ist buggy, TrueStudio startet nicht und AC6 
WorkBench ignoriert alle Dateien in anderen Ordnern außer /inc und /src.

Davon ab habe ich keine lauffähige Version mit nur einem einfachen VCP 
Stack hinbekommen, selbst das von STMCubeMX generierte erzeugt 
durchgehend Fehler... Frustrierendes Programmieren...

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kristian schrieb:
> AC6 WorkBench ignoriert alle Dateien in anderen Ordnern außer /inc und /src

Lass den Index neu aufbauen.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ein CubeMX -> AC6 CDC Projekt lief bei mir sofort.

von Kristian (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hab die Toolchain auf einem anderen Laptop installiert, da compiliert es 
das STM32CubeMX Projekt auf Anhieb. Irgendwie hat mein PC ein 
Konfig-Fehler. Egal, Problem für später.

Schlimmer ist das Problem, dass ich den VCP Stack nicht zum laufen zu 
bekommen auf dem Board.

Nach langem versuchen und trial-and-error habe ich mal nach einem Guide 
gesucht und diesen gefunden:
http://microtechnics.ru/en/stm32cube-and-usb-virtual-com-port-2/
Er ist zwar für ein anderen STM32, aber auch ein F4. Macht eigentlich 
fast alles so wie ich vorher auch, außer ein SYSCLK

Ich habe alles soweit genau so, abgesehen von der fehlenden VBUS 
Leitung, daher dort auch kein Harken. Dafür noch eine LED hinzugefügt, 
die blinkt.

Die LED blinkt auch, nur es wird gar kein USB Gerät erkannt.
Was mach ich noch falsch? Ich würde erwarten dass es nach dem ich es per 
CubeMX generiert habe, es out-of-the-box läuft, so ließt man es ja im 
mehrfach.

Beitrag #5176275 wurde vom Autor gelöscht.
von Kristian (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin die Clock Settings noch Mal durch und schaue dass alle 
Funktionen in der MX_USB_DEVICE_Init() den Rückgabewert USBD_OK haben.
Immer noch kein Erfolg...

von pegel (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo noch mal

ich habe kein F4 zur Zeit hier, für das Nucleo-F746 habe ich das 
minimalste USB CDC erstellt.

in CubeMX:
- ext. 8MHz bypass
- Takt auf 216MHz, USB Takt auf 48MHz
- USB Device only
- USB Device CDC

in SW4STM32:
- Projekt importiert
- in die main.c Schleife einen Blinker eingebaut
1
  /* USER CODE BEGIN 3 */
2
    HAL_GPIO_TogglePin(LD1_GPIO_Port,LD1_Pin);
3
    HAL_Delay(500);

lsusb zeigt das Ergebnis im Bild.

von Kristian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke für die Hilfe, ich habe as Problem gefunden, war ein Kabelproblem 
zum VBus.

Danke :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.