Forum: Mikrocontroller und Digitale Elektronik Probleme mit STM32F030CC


von Ralph S. (jjflash)


Lesenswert?

Mit oben genanntem Chip (STM32F030CC ist 48 pol.) habe ich im Moment 
derzeit zu kämpfen.

Diesen möchte ich in einem eigenentwickelten Board laufen lassen. Dieses 
Board (Platinen sind von JLCPCB) habe ich bereits mit STM32F103CB, 
F072CB und F030C8 im Einsatz und funktionieren tadellos damit.

Nun wollte ich, des größeren Flashspeichers wegen, einen F030CC darauf 
laufen lassen und bekomme das nicht hin.

Auch wenn hier immer nach einem Schaltplan gefragt wird (im Moment kann 
ich keinen zeichnen).

- Quarz (8MHz) und Ziehkondensatoren (27p) sind angeschlossen
- die Pins 35, 36, die auch PF6 und PF7 sein können sind als Vss bzw. 
Vdd gejumpert.
- an allen Vdd und Vss Anschlüssen liegt 3,28V bzw. GND an. Ebenso an 
Vdda und Vssa
- auf der Platine habe ich nun lange "herumgelötet" und die 
Minimalkonfiguration hergestellt.
- NRST über 10k nach +3,3V , Boot0 hart auf GND verdrahtet.

Das Ding will einfach nicht!

Löte ich den F030CC aus und bestücke das mit F030C8 funktioniert alles, 
nur mit dem CC will das partout nicht klappen.

Flashversuche mittels Cubeprogrammer und ST-Flash zeigen mir an, dass 
der Flashspeicher wohl beschrieben wird, aber das geflashte Programm 
kann nicht gestartet werden.

Meldungen aus Cubeprogrammer:
1
15:09:41 : UR connection mode is defined with the HWrst reset mode
2
15:09:41 : ST-LINK SN  : 55FF75064978555520481787
3
15:09:41 : ST-LINK FW  : V2J43S7
4
15:09:41 : Board       : --
5
15:09:41 : Voltage     : 3,23V
6
15:09:41 : SWD freq    : 4000 KHz
7
15:09:41 : Connect mode: Normal
8
15:09:41 : Reset mode  : Software reset
9
15:09:41 : Device ID   : 0x442
10
15:09:41 : Revision ID : Rev 1.0
11
15:09:41 : Debug in Low Power mode is not supported for this device.
12
15:09:41 : UPLOADING OPTION BYTES DATA ...
13
15:09:41 :   Bank          : 0x00
14
15:09:41 :   Address       : 0x1ffff800
15
15:09:41 :   Size          : 16 Bytes
16
15:09:41 : UPLOADING ...
17
15:09:41 :   Size          : 1024 Bytes
18
15:09:41 :   Address       : 0x8000000
19
15:09:41 : Read progress:
20
15:09:41 : Data read successfully
21
15:09:41 : Time elapsed during the read operation is: 00:00:00.011
22
15:09:46 : Memory Programming ...
23
15:09:46 : Opening and parsing file: blinky.bin
24
15:09:46 :   File          : blinky.bin
25
15:09:46 :   Size          : 1,16 KB 
26
15:09:46 :   Address       : 0x08000000 
27
15:09:46 : Erasing memory corresponding to segment 0:
28
15:09:46 : Erasing internal memory sector 0
29
15:09:46 : Download in Progress:
30
15:09:46 : File download complete
31
15:09:46 : Time elapsed during download operation: 00:00:00.451
32
15:09:46 : Verifying ...
33
15:09:46 : Read progress:
34
15:09:46 : Download verified successfully 
35
15:09:47 : Memory [0x08000000 : 0x08040000] - Checksum : 0x03F8BE3F
36
15:09:47 : RUNNING Program ... 
37
15:09:47 :   Address:      : 0x08000000
38
15:09:47 : Warning: The core is in sleep mode
39
15:09:47 : Start operation achieved successfully
40
15:09:47 : Warning: Connection to device 0x442 is lost
41
15:09:47 : Disconnected from device.

Er zeigt mir also an, dass das Flashen wohl geklappt hat, ein Verify 
auch erfolgreich war, aber starten kann er das wohl nicht, weil "The 
core is in sleep mode". Obwohl er ja sagt: "Start operation achieved 
successfully"

ST-FLASH zeigt folgendes:
1
st-flash write blinky.bin 0x8000000
2
st-flash 1.6.0-301-gd11e6f4-dirty
3
2024-02-07T15:00:59 INFO common.c: F09X: 32 KiB SRAM, 256 KiB flash in at least 2 KiB pages.
4
file blinky.bin md5 checksum: 929a9ac22c87589e48aea6b566c9b47, stlink checksum: 0x00015fc6
5
2024-02-07T15:00:59 INFO common.c: Attempting to write 1188 (0x4a4) bytes to stm32 address: 134217728 (0x8000000)
6
Flash page at addr: 0x08000000 erased
7
2024-02-07T15:00:59 INFO common.c: Finished erasing 1 pages of 2048 (0x800) bytes
8
2024-02-07T15:00:59 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL core id
9
2024-02-07T15:00:59 INFO flash_loader.c: Successfully loaded flash loader in sram
10
2024-02-07T15:01:00 ERROR flash_loader.c: flash loader run error
11
2024-02-07T15:01:00 ERROR common.c: stlink_flash_loader_run(0x8000000) failed! == -1
12
stlink_fwrite_flash() == -1

Habe ich irgendwelche wichtigen Unterschiede von F030C8 zu F030CC 
übersehen?
Das Blinkyprogramm wurde einmal übersetzt für einen F030C8 mit einem dem 
Speicher entsprechenden Linker-Script:

Für F030CC
1
MEMORY
2
{
3
    ram : ORIGIN = 0x20000000, LENGTH = 32K
4
    rom : ORIGIN = 0x08000000, LENGTH = 256K
5
}

Für F030C8
1
MEMORY
2
{
3
    ram : ORIGIN = 0x20000000, LENGTH = 8K
4
    rom : ORIGIN = 0x08000000, LENGTH = 64K
5
}

(und ja, natürlich habe ich auch mittlerweile schon 3 Chips "verheizt", 
weil es ja hätte sein können - allerdings eher unwahrscheinlich - dass 
der Chip hinüber ist).

Bezugsquelle der Chips war: LCSC.COM

:-) irgendein sehr schlauer Forumsteilnehmer weiß doch sicher, wo der 
Hase begraben ist, oder was ich noch probieren kann!

von Jürgen (jliegner)


Lesenswert?

Hast du auch die geänderte PIN-Belegung beim CC beachtet? Bei dem muss 
an PIN36 VDD und an PIN35 VSS. Da wo bei den anderen PF6/PF7 dran ist.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Hast du den STM32F030CC schon mal getauscht?

Durch das viele rum probieren kann es gut möglich sein dass der nun 
"kaputt gelötet" ist.

von Jürgen (jliegner)


Lesenswert?

Jürgen L. schrieb:
> Hast du auch die geänderte PIN-Belegung beim CC beachtet

Lese gerade nochmal oben dass du das beachtet hast. Also vergiss meinen 
Text.

von Andreas B. (abm)


Lesenswert?

1) Reset: da gehört NUR ein 100nF Kondensator nach GND dran, sonst 
nichts.
Daher einfach mal Reset extern auf '0' legen.
2) Der Clock-Tree sieht bei CC doch ziemlich anders aus als beim C8. 
Daher muss die PLL-Konfiguration auch anders aussehen. 1:1-Kopie wird 
daher u. U. nicht funktionieren. Daher mal kurz HSI ausprobieren.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Wo befinden sich welche Abblockkondensatoren?

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Jürgen L. schrieb:
> Hast du auch die geänderte PIN-Belegung beim CC beachtet? Bei dem muss
> an PIN36 VDD und an PIN35 VSS. Da wo bei den anderen PF6/PF7 dran ist.

das hatte ich hier

Ralph S. schrieb:
> - die Pins 35, 36, die auch PF6 und PF7 sein können sind als Vss bzw.
> Vdd gejumpert.

schon geschrieben gehabt.

Markus M. schrieb:
> Hast du den STM32F030CC schon mal getauscht?
>
> Durch das viele rum probieren kann es gut möglich sein dass der nun
> "kaputt gelötet" ist.

Ich habe den Chip mittlerweile 3 mal getauscht. Die PCB sieht 
mittlerweile nicht mehr so gut aus, ich hatte auf ihr verlötet 
mittlerweile einen F103CB, einen F030C8, einen F072B und einen F303. 
Haben alle funktioniert. Jetzt ist wieder ein F030CC drauf und 
funktioniert nicht !

Andreas B. schrieb:
> 1) Reset: da gehört NUR ein 100nF Kondensator nach GND dran, sonst
> nichts.
> Daher einfach mal Reset extern auf '0' legen.

Reset auf 0 legen ist nicht so sonderlich gut, dann resetet er ja 
permanent. Allerdings hatte ich das ausprobiert gehabt mit Pull-Up 
Widerstand, ohne Widerstand und das ganze auf der PCB mit und ohne 
Kondensator.

Andreas S. schrieb:
> Wo befinden sich welche Abblockkondensatoren?

Ich wußte dass diese Frage kommt!!! Immer wenn etwas nicht funktioniert 
gibt es die Frage nach den Blockkondensatoren. Da das auf einer PCB ist 
sind die Kondensatoren sehr in der Nähe des Chips (der weiteste ist 
vllt. 3mm entfernt). Jeder Vdd hat einen 100n und grundsätzlich liegt 
über der Betriebsspannung noch ein 100µ Kondensator.

Andreas B. schrieb:
> 2) Der Clock-Tree sieht bei CC doch ziemlich anders aus als beim C8.
> Daher muss die PLL-Konfiguration auch anders aussehen. 1:1-Kopie wird
> daher u. U. nicht funktionieren. Daher mal kurz HSI ausprobieren.

Ich habe auch mit der Software "gespielt". Der Kondensator ist zwar 
angeschlossen, aber der Programmcode sollte internen Takt mit 48 MHz 
verwenden (allerdings derselbe Code wie bei einem F30C8).

Um den Fragen nach den Anschlüssen zu entgehen, hänge ich hier jetzt den 
Schaltplan, wie das momentan verschaltet ist.

von Andreas B. (abm)


Lesenswert?

Ralph S. schrieb:
> Reset auf 0 legen ist nicht so sonderlich gut, dann resetet er ja
> permanent. Allerdings hatte ich das ausprobiert gehabt mit Pull-Up
Grummel, grummel, natürlich war ja auch gemeint, Reset für einen Moment 
hart auf '0' zu ziehen ... Man kann auch bewusst alles mißverstehen 
(wollen).

> Ich habe auch mit der Software "gespielt". Der Kondensator ist zwar
Hä??? Kondensator???

> angeschlossen, aber der Programmcode sollte internen Takt mit 48 MHz
> verwenden (allerdings derselbe Code wie bei einem F30C8).

Es gibt keinen "internen 48MHz Takt". Nur 8MHz HSI. 48MHz geht nur via 
PLL, und genau um deren Konfiguration geht's doch! Der Takt kommt 
entweder vom HSI, PLL oder HSE, s. Fig. 11 im RM. Nach Reset ist 8MHz 
vom HSI eingestellt, also reicht es, jedwede Clock-Konfiguration 
auszukommentieren.

von Steve van de Grens (roehrmond)


Lesenswert?

Hast du dein Programm mit den richtigen Include Dateien neu compiliert?

In der stm32f0xx.h musst du das Modell auswählen oder ein entsprechendes 
Symbol in den Einstellungen der IDE definieren.

Wenn ich die beiden Dateien stm32f030xc.h und stm32f030x8.h miteinander 
vergleiche, sehe ich einige Unterschiede. Es geht nicht nur darum, dass 
der größere mehr Register hat, sondern einige Werte sind anders. Zum 
Beispiel:

EXTI_IMR_IM_Msk
(0x8EFFFFUL << EXTI_IMR_IM_Pos) versus (0x9EFFFFUL << EXTI_IMR_IM_Pos)

RCC_CFGR_ADCPRE_Pos
(14U) versus (15U)

RCC_CFGR_ADCPRE_Msk
RCC_CFGR_ADCPRE
RCC_CFGR_ADCPRE_DIV2
RCC_CFGR_ADCPRE_DIV4
RCC_CFGR_PLLSRC_Pos
RCC_AHBENR_TSEN
SYSCFG_CFGR1_DMA _RMP, _Pos und _Msk
SYSCFG_CFGR1_ADC_DMA _RMP, _Pos und _Msk
SYSCFG_CFGR1_USART1TX_DMA _RMP, _Pos und _Msk
SYSCFG_CFGR1_TIM16_DMA _RMP, _Pos und _Msk
SYSCFG_CFGR1_TIM17_DMA _RMP,  _Pos und _Msk

gibt es alle nur bei dem kleinen xC Modell.

Und natürlich hat das große xC Modell eine ganze Menge zusätzliche 
Register, die aber wohl kein Problem sind.

von Ralph S. (jjflash)


Lesenswert?

Andreas B. schrieb:
> Es gibt keinen "internen 48MHz Takt". Nur 8MHz HSI. 48MHz geht nur via
> PLL, und genau um deren Konfiguration geht's doch! Der Takt kommt
> entweder vom HSI, PLL oder HSE, s. Fig. 11 im RM. Nach Reset ist 8MHz
> vom HSI eingestellt, also reicht es, jedwede Clock-Konfiguration
> auszukommentieren.

:-) wie war das mit dem "falsch Verstehen"? Natürlich habe ich intern 
nur 8 MHz Takt und mein Coretakt wird natürlich von der PLL generiert. 
Aber ich habe jetzt einmal keine Clock-Konfiguration gemacht: das 
gleiche !

Steve van de Grens schrieb:
> Wenn ich die beiden Dateien stm32f030xc.h und stm32f030x8.h miteinander
> vergleiche, sehe ich einige Unterschiede. Es geht nicht nur darum, dass
> der größere mehr Register hat, sondern einige Werte sind anders. Zum
> Beispiel:

Ich arbeite mit libopencm3 und nicht mit der HAL, da wird kein 
Unterschied zwischen C8 und CC gemacht (und einiges vom CC wird dann 
eben nicht benutzbar sein).

von Daniel D. (danielduese)


Lesenswert?

Scheint ein Problem von libopencm3 zu sein.

Ralph S. schrieb:
> Gif

Also bei mir steht im Datenblatt noch ein 4,7uF.
Aber der 100uF tuts vermutlich auch

: Bearbeitet durch User
von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Ralph S. schrieb:
> Andreas S. schrieb:
>> Wo befinden sich welche Abblockkondensatoren?
>
> Ich wußte dass diese Frage kommt!!! Immer wenn etwas nicht funktioniert
> gibt es die Frage nach den Blockkondensatoren. Da das auf einer PCB ist
> sind die Kondensatoren sehr in der Nähe des Chips (der weiteste ist
> vllt. 3mm entfernt). Jeder Vdd hat einen 100n und grundsätzlich liegt
> über der Betriebsspannung noch ein 100µ Kondensator.

Wer hier mit einem Prosa-Schaltplan und ohne Leiterplattenlayout 
ankommt, darf sich nicht über solch eine Frage wundern. Insbesondere das 
Flash-Programmieren führt zu ganz erheblichen Spitzen bei der 
Stromaufnahme.

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.