STM32F405 DFU

Gast #5173004
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?
Angehängte Dateien:
Gast #5173020
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 
;)
Gast #5173057
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.
Gast #5173069
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.
Gast #5173087
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.
Gast #5173144
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.
Gast #5173145
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 ;)
Gast #5173155
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... :(
Gast #5173156
Meinen Vorschlag kennst du.
Hatte noch keine Probleme mit den aktuellen Versionen, da beides von ST 
unterstützt wird und inzwischen recht ausgereift scheint.
Gast #5173217
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?
Gast #5174456
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...
Gast #5175679
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.
Angehängte Dateien:
Beitrag #5176275 wurde von einem Moderator gelöscht.
Gast #5177441
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.
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.