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
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.
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!
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.
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.
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.
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.
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.
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).
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
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.