Forum: Mikrocontroller und Digitale Elektronik Keine Verbindung zum STM32L0


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Bert S. (kautschuck)


Angehängte Dateien:

Lesenswert?

Hi,

Ich habe 3 Boards gelötet, jedoch kann ich mich bei keinem mit dem 
STM32L031F4P6 verbinden. Die Spannung (3.3V), SWCLK und SWDIO kommen 
korrekt zu den Eingangspins, von daher muss irgendwie etwas falsch 
angeschlossen sein, aber ich sehe absolut nicht was.

Datenblatt: 
https://www.st.com/en/microcontrollers-microprocessors/stm32l031f4.html

Jemand eine Idee?

: Bearbeitet durch User
von pcdulli (Gast)


Lesenswert?

Wie kommst du in den Bootmode wenn der Pin permanent auf GND liegt?

von Bert S. (kautschuck)


Lesenswert?

pcdulli schrieb:
> Wie kommst du in den Bootmode wenn der Pin permanent auf GND liegt?

Der Bootmode wird doch über den Pin gewählt, sprich bei GND ist Boot 
from Flash und sonst vom System Memory?

von Bert S. (kautschuck)


Lesenswert?

Ok, habe es rausgefunden, mein STLink V2 resetet nie den NRST pin. Keine 
Ahnung wieso, aber bei allen bisher hat das geklappt.

von Markus M. (adrock)


Lesenswert?

"Normalerweise" ist der NRST nicht unbedingt notwendig wenn man einen 
STM32 ohne Bootloader programmiert.

Wenn Du allerdings eine "Category 1" device hast (STM32L010x3 oder 
STM32L010x4), dann checkt der Controller - auch wenn BOOT0 auf GND 
gezogen wird - ob er schonmal programmiert wurde. Wenn das nicht der 
Fall ist, startet er den Bootloader, und dann funktioniert die 
Programmierung ohne NRST nicht mehr.

Siehe auch im Refmanual:

"On category 1 devices, an internal empty check flag is implemented to 
allow easy programming of virgin devices by the bootloader. This flag is 
used when BOOT0 pin is configured to select Flash program memory as 
target boot area. When this flag is set, the device is considered as 
unprogrammed and the system memory (bootloader) is selected as boot area 
instead of the Flash program memory to allow the application to program 
the Flash memory"

Ich weiß das, weil ich selbst in dieses Problem gelaufen bin :-)

von Bert S. (kautschuck)


Lesenswert?

Markus M. schrieb:
> Ich weiß das, weil ich selbst in dieses Problem gelaufen bin :-)

Danke, das war mir so nicht bewusst. Hatte bisher noch nie das Vergnügen 
mit so einem Controller.

von Löppt (Gast)


Lesenswert?

Bert S. schrieb:
> Ok, habe es rausgefunden, mein STLink V2 resetet nie den NRST pin.
> Keine Ahnung wieso, aber bei allen bisher hat das geklappt.

Iirc kann man das in der IDE einstellen, ob er RST benutzen kann, oder 
war das eine andere IDE?

von Olaf (Gast)


Lesenswert?

> Iirc kann man das in der IDE einstellen, ob er RST benutzen kann, oder
> war das eine andere IDE?

Beim Segger J-Link kann man das im Debugger selber ueber die
Art des Resetkommandos einstellen. Beim STLink wuerde ich aehnliches
erwarten.

Olaf

von Stefan F. (Gast)


Lesenswert?

Markus M. schrieb:
> startet er den Bootloader, und dann funktioniert die
> Programmierung ohne NRST nicht mehr.

Die STM32 die ich kenne lassen die SWJ Schnittstelle aktiviert, während 
der Bootloader läuft. Deswegen kann man bei diesen den Boot0 Pin auf 
HIGH setzen, falls das geflashte Programm SWJ sonst deaktivieren würde, 
was bei CubeMX ja der Standardfall ist.

von Stefan F. (Gast)


Lesenswert?

Löppt schrieb:
> kann man das in der IDE einstellen, ob er RST benutzen kann, oder
> war das eine andere IDE?

Die chinesischen ST-Link V2 Sticks haben für STM32 gar keinen Reset 
Ausgang. Der entsprechend beschriftete Pin wird nur mit STM8 verwendet.

Siehe dazu

http://stefanfrings.de/stm32/stm32l0.html#proginterfaces

http://stefanfrings.de/stm32/cube_ide.html#flash

http://stefanfrings.de/stm32/system_workbench.html#flash

von Markus M. (adrock)


Lesenswert?

Stefan ⛄ F. schrieb:
> Markus M. schrieb:
>> startet er den Bootloader, und dann funktioniert die
>> Programmierung ohne NRST nicht mehr.
>
> Die STM32 die ich kenne lassen die SWJ Schnittstelle aktiviert, während
> der Bootloader läuft. Deswegen kann man bei diesen den Boot0 Pin auf
> HIGH setzen, falls das geflashte Programm SWJ sonst deaktivieren würde,
> was bei CubeMX ja der Standardfall ist.

Hmmm... also ich weiß nicht mehr die genauen Umstände, aber irgendwie 
hatte mir diese "Leererkennung" da einen Streich gespielt. War 
allerdings auch ein STM32 Minimalcontroller (STM32G030J6) mit nur 8 
Pins, evtl. hatte dieser im Bootloader die Debug-Pins umgeschaltet um 
darüber die Firmware zu laden.

von Stefan F. (Gast)


Lesenswert?

Markus M. schrieb:
> War allerdings auch ein STM32 Minimalcontroller (STM32G030J6) mit nur 8
> Pins, evtl. hatte dieser im Bootloader die Debug-Pins umgeschaltet um
> darüber die Firmware zu laden.

Offensichtlich. Bei diesem kleinen Ding ist Pin 8 SWCLK, USART1_TX und 
USART2_RX.

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.