STM32F405 DFU

Gast #5173004
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?
Angehängte Dateien:
Gast #5173020
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 
;)
Gast #5173057
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.
Gast #5173069
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.
Gast #5173087
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.
Gast #5173145
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 ;)
Gast #5173155
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... :(
Gast #5174456
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...
Gast #5175679
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.
Angehängte Dateien:
Beitrag #5176275 wurde von einem Moderator gelöscht.
Gast #5177441
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.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren