Anfang des Monats habe ich ein Minimal-Board mit Cortex-M0-Kern basteln
wollen: ein Minimum STM32 Board. Zwei Wochen später startete ein Thread
im EEVBlog
(http://www.eevblog.com/forum/microcontrollers/stm32-ghetto-style/) mit
ähnlicher Idee. Informationen dort waren zunächst spärlich, weshalb ich
das hier zum Nachbauen vorstellen möchte.
Ganz ohne Zusatzbeschaltung ist gar nicht nötig, ich habe noch
Blockkondensatoren mit 100nF zwischen Vcc/AVcc und GND gelötet sowie für
beide einen gemeinsamen 10µF-Kerko integriert. Am Ende habe ich den
"frei schwebenden" 10µF mit einem Tropfen Sekundenkleber auf freier
Fläche fixiert. Das Löten ging erstaunlich gut und einfach - ordentlich
Lotfluss (RMA 223 ging gut) auf die Platinenkontakte, Prozessor
ausrichten und mit einem Tropfen Lötzinn auf der Spitze von den
Prozessorpins über die Kontaktflächen streichen. Entlötlitze hilft,
überschüssiges Lot aufzunehmen.
Zwei Pinreihen einlöten, anschließend die Kondensatoren dazu. Wie man
auf dem Foto sieht, nicht optimal, aber in dem Frequenzbereich noch
unkritisch. AVcc ist mit Kupferlackdraht an Vcc angeschlossen. Das
sollte also auch für ADC-Messungen ausreichen.
Als Test dient ein schnell gestricktes Blinky (ich nutze die STM
Standard Peripheral Lib):
Via SWD / ST-LINKv2 kann ich den µC verbinden - das Flashen schlägt
jedoch nach dem "Flash erase" fehl. Daher der Preisklasse angemessen die
Alternative, den Bootloader zu verwenden und einfach via UART (TX - PA9,
RX PA10) und stm32flash zu flashen. Das klappt dann auch einwandfrei:
1
MacBook-Air:Release koepi$ ./flash.sh
2
stm32flash - http://stm32flash.googlecode.com/
3
4
Using Parser : Intel HEX
5
Serial Config: 57600 8E1
6
Version : 0x31
7
Option 1 : 0x00
8
Option 2 : 0x00
9
Device ID : 0x0444 (STM32F030)
10
- RAM : 8KiB (4096b reserved by bootloader)
11
- Flash : 64KiB (sector size: 4x1024)
12
- Option RAM : 12b
13
- System RAM : 3KiB
14
15
Wrote and verified address 0x080003bc (100.00%) Done.
16
17
Resetting device... failed.
Unter Windows gibt es dazu den
"Flash_Loader_Demonstrator_v2.6.0_Setup.exe" direkt bei ST zum Download.
In den Flash-Modus gelangt man, indem man BOOT0 auf NRST verbindet und
den µC neu startet/bestromt.
Die µCs gibt es für rund 8 Euro inlusive Versand für das Zehnerpack aus
China. Ist etwa vier Wochen unterwegs:
http://www.ebay.de/itm/321426013659
20 TSSOP20-zu-DIL-Adapterplatinchen gibt es für rund 2,50€:
http://www.ebay.de/itm/121382728173
Die Pinreihen und die Kondensatoren kosten auch nur wenige Cent und hat
man idealerweise schon herumfliegen, sonst gibt es 50er- bis 500er-Packs
aus dem Reich der Mitte für 2-3 Euro (etwa 10 µF 16V X5R/X7R, auch 100nF
16V X5R/X7R).
Insgesamt komme ich auf rund einen Euro für einen fertig aufgebauten
32-bittigen Mikroprozessor mit 48 MHz, 16 kByte Flash und 4 kByte RAM.
Für viele Dinge reichen die ~15 nutzbaren IOs (Alternate Function für
PF0 und PF1 verwenden, ...) schon aus. Der ADC löst mit 12 anstatt 10
Bit auf im Vergleich zu Arduino/AVR; es gibt zahlreiche Timer/PWM. Wenn
ich das jetzt mit dem ebenso teuren ATtiny13 oder teureren ATtiny85
vergleiche ...
Hier noch ein Clip von dem Board im Einsatz - es funktioniert wirklich
:)
http://youtu.be/oX-A-OXUrns
Ach ja, das Datenblatt/Reference Manual könnte noch hilfreich sein zum
Programmieren des kleinen Schmuckstücks:
http://www.st.com/web/en/resource/technical/document/reference_manual/DM00091010.pdf
Vielleicht hat ja noch jemand Spaß daran, so ein minimales µC-Board
aufzubauen und einzusetzen :)
Dirk K. schrieb:> Insgesamt komme ich auf rund einen Euro für einen fertig aufgebauten> 32-bittigen Mikroprozessor mit 48 MHz, 16 kByte Flash und 4 kByte RAM.
Herzlichen Glückwunsch.
Sie haben erkannt, warum viele Firmen auf ARM-based µCs wechseln.
Laut unseren FAEs zeichnet sich der Trend ab, dass 16-Bit-µCs
aussterben und 8-Bit-µCs in Nischenanwendungen gedrückt werden.
Und auch nur das, wenn der Preis günstiger ist, als der günstigste
Cortex-M0 (was schwer wird!).
Die ARM-based µCs überrollen zur Zeit den Markt und stellen schon jetzt
einen Quasi-Standard dar.
Ich hoffe auf eine radikale Moderation. (Wenn die 3,37kB-große main.c
gelöscht werden könnte, wäre das auch super. Habe da noch etwas
aufgeräumt.)
Das Projekt macht richtig Spaß - bekomme das Teil langsam in den Griff
und kann es als richtiges µC-Board nutzen :)
Zwei "Meilensteine" habe ich soweit: Zum Einen Feedback via UART. Ist
doch langweilig, wenn der µC nur eine LED blinkt und nicht mit mir
spricht, dafür reicht auch ein NE555. Außerdem hängt der
USB-zu-Seriell-Wandler doch eh schon dran zum Programmieren.
Und dann wäre da zum Anderen noch der Haken des internen Quarzes mit 8
MHz. Da der µC 48 MHz kann, muss also der PLL dazugeschaltet werden -
quasi den Turbo einschalten.
Erster Zwischenstand auf 57.6kBit-Terminal:
1
STM32F030-Test begins.
2
HCLK is 8 MHz, PCLK 8 MHz, System 8 MHz.
Zweiter Zwischenstand:
1
STM32F030-Test begins.
2
HCLK is 48 MHz, PCLK 48 MHz, System 48 MHz.
Anstatt nur zu blinken, dimme ich die LED jetzt gemütlich.
http://youtu.be/hkWmO3jxxbs
Den vollständigen Code habe ich angehängt. Für das PLL-Setup habe ich
einen Codeschnippsel aus den weiten des Netzes angepasst, daher stehen
da nur sinnfreie "Bit-Werte" für die Register drin. War noch zu sehr mit
"bring es endlich hin" und Freuen beschäftigt, sodass ich die
Inverssuche im Datenblatt nicht vollzogen habe.
> Jedes Avr Asm-Blinky auf einem Tiny ist um Welten einfacher und kürzer.
Und mit einem astabilen Multivibrator blinkt es sogar ganz ohne
Code...
Aber es geht HIER nicht darum, ob irgendwas mit irgendwas Anderem
schneller und/oder einfacher ginge. Können wir also bei der Sache
bleiben?
Beim Weiterbasteln beiße ich mir am ADC die Zähne aus - den hatte ich
auf STMs bislang noch gar nicht benutzt (derzeitiger Code im Anhang, der
unterscheidet sich schon von dem, was auf STM32F1xx üblich war;
physikalisch hängt zwischen PA3 und PA4 einfach ein Temperaturfühler aus
einem alten Akkupack. Die ADC-Wandlung jetzt wartet sich tot, daher
auskommentiert).
Das Rumgestecke der Kabel ging mir arg auf die Nerven, daher habe ich
jetzt zwei 5x5mm-Print-Taster eingelötet. Einer verbindet BOOT0 mit nRST
und hält durch anlöten der Beinchen an die Pin-Basis.
Der zweite Taster zwischen Vss und nRST hält durch Sekundenkleber, die
Verbdindung selbst ist mit Kupferlackdraht aufgebaut.
Da ist natürlich nichts entprellt, manchmal muss man mehrmals drücken -
aber immer noch besser, als immer Kabel hin- und herzustöpseln. Das tut
den Kontakten nicht gut und verbessert die nicht grade.
Zum Flashen dann also: BOOT0-Taster drücken und halten, Reset drücken.
Flashprogramm starten bei gedrücktem BOOT0-Taster. Wenn fertig,
loslassen und nochmals Reset drücken. Klingt komplizierter, als es ist.
Und ist auf dem Platz auf dem Adapterplatinchen gerade noch so
unterzubringen.
Ähm..... wo kommen denn die tausend Zeiger bei einer so einfachen
Anwendung her? Ich finde den Source schon echt unverständlich und extrem
lange Ausdrücke, die man ohne eine Autoergänzung mühsam eintippen muss.
Auf meinem LPC2378 sieht sowas lesbarer aus.... LED1_OFF ist nur ein
Makro.
1
// ------- Setzt die Pin Matrix und andere Sachemn -------
Unf für die verwöhnte Arduino (Jehova! klatsch bums* knock*) Jünger,
das simple Setzen einer Taktrate sieht bei ARM etwas "mehr" aus ....
aber man freut sich wenn es fertig ist und man alle Plutimikatoren und
Divisatoren *örks+ richtig hat.
1
/*
2
Einstellen der PLL auf gewünschte Taktrate, Taktrate
3
der Peripherie festlegen
4
Eingabe: 1=PLL an, 0=aus, APB Teiler
5
*/
6
7
voidInit_PLL(uint8_tmode,uint8_tapb_div)
8
{
9
unsignedlongMValue,NValue;
10
11
// Anleitung Kap 6.14, 50 UM
12
13
if(mode==PLL_ON)
14
{
15
// Ist die PLL durch Boot Code angeschlossen?
16
if(PLLSTAT&(1<<25))
17
{
18
// Dann trennen wir sie vom Clock ab
19
PLLCON=1;
20
PLLFEED=0xaa;
21
PLLFEED=0x55;
22
}
23
24
// ...und schalten sie aus
25
PLLCON=0;
26
PLLFEED=0xaa;
27
PLLFEED=0x55;
28
29
CLKSRCSEL=0x1;// PLL Source = Main Oscillator
30
31
// PLL neu konfigurieren
32
PLLCFG=PLL_M|(PLL_N<<16);
33
PLLFEED=0xaa;
34
PLLFEED=0x55;
35
36
// PLL einschalten aber abgetrennt
37
PLLCON=1;
38
PLLFEED=0xaa;
39
PLLFEED=0x55;
40
while(((PLLSTAT&(1<<26))==0));// Warte bis stabil
41
42
// CPU Clock Teiler setzen
43
CCLKCFG=CCLKDiv;
44
45
// PLL an Main Oscillator andocken....
46
PLLCON=3;
47
PLLFEED=0xaa;
48
PLLFEED=0x55;
49
while(((PLLSTAT&(1<<25))==0));/* Check connect bit status */
50
}
51
elseif(mode==PLL_OFF)
52
{
53
// Dann trennen wir sie vom Clock ab
54
PLLCON=1;
55
PLLFEED=0xaa;
56
PLLFEED=0x55;
57
58
// ...und schalten sie aus
59
PLLCON=0;
60
PLLFEED=0xaa;
61
PLLFEED=0x55;
62
}
63
64
MAMCR=0x00;// MAM Funktion ausschalten
65
MAMTIM=0x03;// MAM fetch Zyklen sind 3 Prozessor Clock's
Toll, es gibt andere µProzis, wo man das anders macht, wo der
Programmcode anders aussieht? Also Religionskrieg NXP vs ST?
Ist heute "Troll melde dich"-Tag? Was hat das jetzt zu dem Thema
beigetragen ...*selbst zesnier*?
Dirk K. schrieb:> Toll, es gibt andere µProzis, wo man das anders macht?>> Ist heute "Troll melde dich"-Tag? Was hat das jetzt zu dem Thema> beigetragen, außer, dass du dein Glied in der Öffentlichkeit präsentiert> hast?
Kritik ist keine Einbahnstraße !!!
Wer immer austeilt sollte auch einstecken können !!!
Christian J. schrieb:> Ähm..... wo kommen denn die tausend Zeiger bei einer so einfachen> Anwendung her?>>> Ironie On
Das sind seine Wegweiser damit er sich beim Kopieren der Code nicht
verläuft.
>>> Ironie Off
> Hier noch ein Clip von dem Board im Einsatz - es funktioniert wirklich :)> Youtube-Video "30.08.2014 Minimum STM32 Board!"
Am besten gefällt mit der Kommentar zum Video. Danke :)
Dirk K. schrieb:> Toll, es gibt andere µProzis, wo man das anders macht, wo der> Programmcode anders aussieht? Also Religionskrieg NXP vs ST?>> Ist heute "Troll melde dich"-Tag? Was hat das jetzt zu dem Thema> beigetragen ...*selbst zesnier*?
Das hat doch aber auch nichts mit dem Beitrag zu tun.
Beinly schrieb:>> Hier noch ein Clip von dem Board im Einsatz - es funktioniert wirklich :)>> Youtube-Video "30.08.2014 Minimum STM32 Board!">> Am besten gefällt mit der Kommentar zum Video. Danke :)>>> Ironie On
Ja ist halt kurz und knapp so wie sein Programmcode, ein Typischer
Minimalist.
>>> Ironie Off
Tjo, habe halt mal alles ausprobiert und sogar dokumentiert und dabei
andere Geräte und Software angetestet. Ich will nämlich viel Lernen,
daher auch das hiesige Projekt. Deine Einwürfe haben echt richtig was
mit einem Minimal-Board zu tun. Applaus! (Ich verstecke mich auch nicht
hinter einem anonymen Zugang.)
Besorgter Gast schrieb im Beitrag #3784552:
> Das kann ich euch nicht vorenthalten.>> Blink Blink> Youtube-Video "15.03.2014 Blink Blink!"
Das interessante Teil darin ist das Mini Oszi, ist das ein
umprogrammierter Meizu MP3 Player?
>Unf für die verwöhnte Arduino (Jehova! klatsch bums* knock*) Jünger,>das simple Setzen einer Taktrate sieht bei ARM etwas "mehr" aus ....
Aber, aber wer wird denn gleich ... guck mal hier:
https://github.com/leaflabs/libmaple
;-P
Den ADC hätte ich nach eingehender Lektüre der
STM-Peripheral-Lib/stm32f0xx_adc.c dann doch noch in Betrieb genommen :)
Die Taster machen das Austesten von einzelnen
Programmversionen/Iterationen sehr einfach und komfortabel, also habe
ich das auch für die anderen vorbereiteten Platinchen übernommen. Kann
das für Nachbauer nur empfehlen!
Das Einstellen und Einschalten der PLL war auf einem 32L053 auch nicht
mehr als ein 4-Zeiler, wenn man die passenden Werte gleich in die
Register schreibt und auf die Segnungen von irgendwelchen 'Stdlibs' und
'Frameworks' verzichtet.
Ditto das Konfigurieren des ADC...
Da meine ST-Link V2 nach dem Flash Erase nicht weiterkommen (und unter
Windows das ST-util nicht einmal den µC identifiziert), ein simpler
USB-zu-Seriell-Adapter (derzeit FTDI, geht aber jeder, der auch 3,3V
Versorgungsspannung liefern kann).
Compilieren ganz normal in der IDE. Flashen des .hex/.bin selber
anschließend mit stm32flash (Mac/Linux) oder dem
Flash-Loader-Demonstrator von ST. Details dazu gibt es auch nach dem
Blinky-Codeschnippsel im Start-Post.
Hmmm ... über Seriell zu programmieren finde ich nicht so gut. Ich habe
vor kurzem einen LPC810 programmiert. Ich habe eine Demo-Code
hochgeladen, der die serielle Schnittstelle zur Textausgabe benutzt. Das
hat gut funktioniert, aber leider nur ein mal. Danach konnte ich den
Prozessor nicht mehr programmieren, ich nehme an, der Code hat die Pins
umkonfiguriert.
Bei STM32 kann da nichts passieren, da du zum Flashen - wie oben bereits
beschrieben: Beitrag "Re: ~1€ ARM-Cortex-M0 (STM32)-Bord selbstgestrickt" - über
einen Taster den Bootloader auswählst. Den kannst du darüber nicht
kaputt flashen, der funktioniert immer.
Mit Datenblatt und stm32f0xx_rcc.h lässt sich das 48 MHz-Setup auch mit
der Standard Peripheral Lib erreichen. Einfach den Block hiermit
ersetzen:
1
// ---- Setup PLL for 48 MHz :) ----
2
RCC_PLLCmd(DISABLE);
3
RCC_PLLConfig(RCC_PLLSource_HSI, RCC_PLLMul_12);
4
// Flash: 1 WaitState for 24MHz < SysCLK < 48 MHz
5
FLASH_SetLatency(FLASH_Latency_1);
6
FLASH_PrefetchBufferCmd(ENABLE);
7
// Set ADC clock to internal 14MHz HSI source
8
RCC_HSI14Cmd(ENABLE);
9
RCC_HSI14ADCRequestCmd(ENABLE);
10
// and turn the PLL back on again
11
RCC_PLLCmd(ENABLE);
12
// set PLL as system clock source
13
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
14
// ---- End of Setup PLL for 48 MHz :) ----
Interessant ist der Overhead - die Binärdatei wuchs um 300 Byte an.
Fluchen auf die Lib ist also schon berechtigt. Dafür liest sich der
Quelltext viel einfacher.
Dirk K. schrieb:> Bei STM32 kann da nichts passieren, da du zum Flashen - wie oben bereits> beschrieben: Beitrag "Re: ~1€ ARM-Cortex-M0 (STM32)-Bord> selbstgestrickt" - über> einen Taster den Bootloader auswählst. Den kannst du darüber nicht> kaputt flashen, der funktioniert immer
Ist bei den LPCs nicht anders. Einziger Unterschied: Der Loader wird
nach einem Reset immer aufgerufen und prüft anhand einer Prüfsumme ob
ein "gültiges" Programm im Flash liegt. Ist das der Fall, wird der
Loader beendet und das Programm angesprungen - es sei denn der ISP Pin
ist low. Dann wartet der Loader auf Kommandos.
Wird allerding kein Programm im Flash erkannt, bleibt der Loader aktiv
und man kann ihm auch ohne daß der ISP Pin bedient wird ein Hexfile
schicken.
Und das ist überlicherweise auch der Grund wenn sich ein LPC scheinbar
nur einmal flashen läßt: Der ISP Pin wird nicht (richtig) bedient.
Weitere Fortschritte: BOOT0 floating ist eine schlechte Idee. Dadurch
startet der µC manchmal nicht. Laut Datenblatt (S. 62) hat nRST einen
internen Pullup von minimal 30kOhm, typisch 40kOhm, maximal 50kOhm. Den
missbrauchen wir bislang zum Setzen von BOOT0 auf 1, für den Bootloader
respektive Flash-Modus.
Also fehlt da noch ein Pulldown an BOOT0; Dank der doppelseitigen
TSSOP20-zu-DIP-Platine ist noch etwas Platz zum Einlöten. Ich habe einen
250kOhm-Widerstand genommen, das reicht schon: Der µC startet nun
verlässlich durch :)
Unter Windows funktioniert jetzt auch das ST-Werkzeug ST-Util; ich habe
neben den SWD-Verbindungen noch RST auf nRST gelegt. Damit konnte ich
dann auch via ST-Link das .hex brennen. Debugging/Step-by-Step/Register
auslesen klappt damit auch. Nur unter MacOS mag das st-util/texane noch
immer nicht über "Flash erase"/"flashloader in den SRAM laden und
starten" hinaus - immerhin ist der Speicher danach schön leer ;)
Und auch den ADC-Code habe ich nun im Griff:
Dirk K. schrieb:> Den> missbrauchen wir bislang zum Setzen von BOOT0 auf 1
wieso verbindest du BOOT0 überhaupt mit RESET?
BOOT0 gehört auf 0 für Starten aus dem Flash und auf 1 für Starten aus
dem System-Memory.
Also einfach Pulldown und Taster gegen Vcc. Aber nicht gegen RESET.
lg
Chris
Hätte ich eigentlich auch so gemacht, aber der Platz ist knapp und an
VCC/VSS hängen schon so viele Kupferlackdrähte. Da nRST einen Pullup
benutzt, kann man also auch von dort den 1-Pegel abholen. Nachteile sehe
ich bislang keine.
Der Denkfehler war nur, dass man BOOT0 vielleicht auch im Zustand
floating lassen könnte für "Normalbetrieb". Und das geht gehörig schief.
Dirk K. schrieb:> Da meine ST-Link V2 nach dem Flash Erase nicht weiterkommen (und unter> Windows das ST-util nicht einmal den µC identifiziert)
Komme aus der AVR Ecke, habe mal PSoC4 angetestet (die cy8ckit-49 passen
super auf's Steckbrett - aber die Windows-IDE und der generierte Code
sind nicht mein Ding) und habe für mich noch nicht das "richtige"
gefunden. Die ersten Tests mit STM32F4Discovery fühlten sich gut an und
ich war zufrieden. Nur Steckbrett passt nicht. Daher habe ich auch den
F030 TSSOP20 auf ein Adapterboard gelötet. Die weiteren notwendigen
Komponenten kommen bei mir aber extern auf's Steckbrett.
STLink muss funktionieren, da ich debuggen will. Das STLink vom
F4Discovery klappte nicht und ein China-Clone STLink-V2 kam auch nicht
klar. Bis ich dann ein FX2LP Board an SWDIO/SWCLK angeklemmt habe um die
Signale per PulseView mitzuschneiden, da hat der STLink den F030 erkannt
- allerdings nur bis max. 450kbit (In der ST Windows-Software - openocd
kann man nicht einstellen). Also FX2LP wieder weg und ein Pull-Down an
SWDIO dran -> Flashen und Debuggen funktioniert einwandfrei.
Also bei meinem STM32F030 (TSSOP20) reicht: 100nF Zwischen NRES und VSS.
10kOhm zwischen SWDIO und VSS. VDDA muss versorgt werden. Und 100nF +
10µF zwischen VDD/VDDA und GND. Vom ST-Link NRES, SWDIO, SWCLK und GND
anklemmen.
...Alex
So, die aus Kanada bestellten LQFP48-DIP48 Adapterplatinen sind endlich
gekommen. Die bleifrei vorverzinnte Platine mit bleihaltigem Lot
"vorbehandelt", den Chip mit Tesa draufgeklebt und die Pins einzeln
herunterdrücken und anlöten hat super geklappt (RDS80 bei 350° und 1mm
Bleistiftspitze) - der 1. Versuch mit bleifreiem Lot ging schief...
Die für mich ausreichende Debugger-/STlink-kompatible
Minimal-Beschaltung:
(im Prinzip wie beim STM32F030)
Pin7 (NRST) mit 100nF auf Gnd -> RST
Pin8 auf Gnd
Pin9 auf Vcc
Pin34 SWDIO mit 10k auf Gnd -> SWDIO
Pin35 auf Gnd
Pin36 auf Vcc
Pin37 SWDCLK ->SWDCLK
Pin44 BOOT0 auf Gnd
Vcc mit 100nF und 10µF auf Gnd
...Alex
Christian J. schrieb:> Ähm..... wo kommen denn die tausend Zeiger bei einer so einfachen> Anwendung her? Ich finde den Source schon echt unverständlich und extrem> lange Ausdrücke, die man ohne eine Autoergänzung mühsam eintippen muss.
Für alle die es nicht wissen, das was ihr da seht ist die Standard
Peripheral Library. Niemand wird gezwungen dieses Ungetüm zu nutzen. Der
µC lässt sich auch klassisch mit dem Setzen von Bits in Registern
steuern:
Alexander Brickwedde schrieb:> Pin7 (NRST) mit 100nF auf Gnd -> RSTAlexander Brickwedde schrieb:> 100nF Zwischen NRES und VSSAlexander Brickwedde schrieb:> Pin34 SWDIO mit 10k auf Gnd -> SWDIOAlexander Brickwedde schrieb:> 10kOhm zwischen SWDIO und VSS
Hallo Zusammen,
nach einigen kleinen Spielereien mit den AVR's möchte ich mich mit den
32 Bit uC befassen. Also habe ich das kleine Platinchen mit dem
STM32F030 zusammengelötet und mache meine ersten Gehversuche unter Mac,
ST-Link/V2, SWD, GDB, ... Das ganze funktioniert auch(manchmal), nur
benötige ich meistens 2 bis 3 Versuche um den uC zu beschreiben /
Debuggen. Es scheint also etwas zu stören. Deswegen würde mich
interessieren welche Aussage richtig ist.
Danke und Gruß
Rainer
Rainer schrieb:>...> Debuggen. Es scheint also etwas zu stören. Deswegen würde mich> interessieren welche Aussage richtig ist.>
Arbeitest Du mit Wire Jumpern zwischen Debugger/Programmierer und
Target? Dann ist eine gute Masseverbindung zwischen beiden Platinen
wichtig. Mehrere Masseleitungen statt nur einer zwichen den beiden
Platinen hilft haeufig!
Dirk K. schrieb:> Interessant ist der Overhead - die Binärdatei wuchs um 300 Byte an.> Fluchen auf die Lib ist also schon berechtigt. Dafür liest sich der> Quelltext viel einfacher.
Echter Overhead oder besch... Compiler?
Rainer schrieb:> Alexander Brickwedde schrieb:>> Pin7 (NRST) mit 100nF auf Gnd -> RST>> Alexander Brickwedde schrieb:>> 100nF Zwischen NRES und VSS>>>> Alexander Brickwedde schrieb:>> Pin34 SWDIO mit 10k auf Gnd -> SWDIO>> Alexander Brickwedde schrieb:>> 10kOhm zwischen SWDIO und VSS>> benötige ich meistens 2 bis 3 Versuche um den uC zu beschreiben /> Debuggen. Es scheint also etwas zu stören. Deswegen würde mich> interessieren welche Aussage richtig ist.
Welcher meiner 4 Aussagen? Die ersten beiden und die letzten beiden der
4 zitierten sind jeweils redundant. Gnd entspricht doch Vss... oder?
Alexander Brickwedde schrieb:> Gnd entspricht doch Vss... oder?
Ups, Sorry mein Fehler - VSS gelesen, VDD gedacht.
Uwe Bonnes schrieb:> Arbeitest Du mit Wire Jumpern zwischen Debugger/Programmierer und> Target?
Verbinde den ST-Link/V2 mit meinem Steckbrett über einzelne Kabel, oder
Flachkabel (beides ausprobiert) auf dem die Platine aufgesteckt ist. Wie
weiter oben auf dem Bild von Alexander Brickwedde.
Bekomme auch öfters Fehlermeldungen die ich noch nicht deuten kann.
z.B.:
> Warning: the current language does not match this frame.> The target endianness is set automatically (currently little endian)> Note: automatically using hardware breakpoints for read-only addresses.> Program received signal SIGTRAP, Trace/breakpoint trap.> 0x2000002e in impure_data ()
oder
> Error in final launch sequence> Failed to execute MI command:
...
> Error message from debugger back end:> Error finishing flash operation> Error finishing flash operation
Wenn ich das stm32F4 discovery anschließe, läuft alles problemlos.
Gruß
Rainer
Dirk K. schrieb:> sowie für beide einen gemeinsamen 10µF-Kerko integriert.
Hallo,
Wo wird denn der Kerko genau eingelötet? Direkt zwischen Vcc und VAcc?
Gruß
Kai
Ich habe mal einen größeren Ausschnitt fotografiert, vielleicht macht es
das deutlicher. Eine Seite des Kerkos an Vcc, die andere an GND; von Vcc
geht eine Strippe durch die Ferritperle an Vdda. Ein kleinerer Kerko
dann mit einer Seite an Vdda und die andere Seite nach GND.