Hi, Ich möchte für einen STM32F303K8T6 ein eigenes PCB machen. Das flashen soll über den SWD erfolgen mithilfe eines externen STLINK/V2. Als clock nehme ich die interne clock. Gebootet soll vom flash Speicher werden, wie üblich. Die Pinbelegung ist ansonsten noch offen. Sieht Jemand noch Fehler/Probleme im Schaltbild? Bei der Schaltung habe ich mich an diesem Datenblatt orientiert: http://www.st.com/content/ccc/resource/technical/document/application_note/31/14/f4/9d/d3/8f/48/2b/DM00070391.pdf/files/DM00070391.pdf/jcr:content/translations/en.DM00070391.pdf Grüsse Sebastian
R1 ist nicht in den Standardschaltungen ... Lege BOOT0 ueber einen (4k7?) Widerstand an Masse, dann kannst Du zum Testen BOOT0 auch auf ein setzten. 3.3V und VDDA verbinde ich nicht direkt, sondern mit einer EMI Induktivitaet wie BLM18RK102. Das hält hichfrequente Störungen von VDDA fern.
Danke, habe das mal angepasst. Zum Quarz, ich möchte eigentlich keinen verwenden, da ich keine zeitkritischen Anwendungen drauf laufen lasse und mir daher die Toleranz von um die 3% keine Rolle spielt. Das wichtigste ist vor allem die Kompaktheit. Noch zum R1, ich habe das hier gesehen: http://www.st.com/content/ccc/resource/technical/document/user_manual/8a/56/97/63/8d/56/41/73/DM00063382.pdf/files/DM00063382.pdf/jcr:content/translations/en.DM00063382.pdf Und auch hier: http://electronics.stackexchange.com/questions/274815/stm32-custom-board Die Größe von 100kOhm ist vielleicht zu hoch?
:
Bearbeitet durch User
Möchtest du für den SWD-Stecker nicht lieber den Vorschlag von ARM übernehmen? Oder wenigstens die Pinbelegung (wenn RM1.27 zu klein wäre)? Da könnte man dann auch den PB3/TRACESWO drauf legen. C2 ist mit 10uF eigentlich zu klein für den LM2937, Tantals gibt's in der Größe A auch noch mit 22u/10V. --- schrieb: > Einen Quarz, respektive die Pads dafür, wegzulassen ist > Falschgeiz. Wenn er das Teil nur in der Wohnung betreibt und kein CAN nutzt wäre ein Quarz Verschwendung.
eagle user schrieb: > Möchtest du für den SWD-Stecker nicht lieber den Vorschlag von ARM > übernehmen? Oder wenigstens die Pinbelegung (wenn RM1.27 zu klein wäre)? > Da könnte man dann auch den PB3/TRACESWO drauf legen. Meinst du den Vorschalg im Anhang? Für was genau ist TRACESWO? Zum flashen reicht ja SWCLK and SWDIO, oder? Muss ich noch Pull-up Widerstände für SWCLK und SWDIO verwenden? eagle user schrieb: > C2 ist mit 10uF eigentlich zu klein für den LM2937, Tantals gibt's in > der Größe A auch noch mit 22u/10V. Das ist eine gute Idee. Grüsse
:
Bearbeitet durch User
Ich sehe noch ein Problem mit V3.3 am SWD. Der SWD sollte ja eigentlich hier die Betriebspannung bereitstellen, oder? Kann ich einfach V3.3 am SWD weglassen wenn ich den Spannungsregler auf dem Board aktiviere beim flashen?
Erträgt der LM2937 eine Spannung am Output von 3.3V? So könnte ich über SWD trotzdem das Board mit Spannung versorgen und dann nach dem flashen auf den Spannungsregler umschalten. Eine Diode für den Spannungsregler möchte ich nicht, da ich den ADC verwende und die Diode zu stark temperaturabhängig ist.
Die VCC wird vom Board für SWD bereit gestellt, nicht umgekehrt. Ich empfehle dir dich an das gepostete Bild zu halten, sowohl an die Serienwiderstände, als auch ans Layout generell (Pinnummern...). Weiters würde ich raten USART1 oder ähnliches zugänglich zu machen, falls du dich aus versehen mal aus allen sonstigen SWD/JTAG Optionen ausschließt. Die ganzen ST besitzen einen internen Bootloader, über den man schlimmstenfalls auch programmieren kann. Die benötigten Pins um in den Bootloader zu booten heißen (wer hätte das gedacht) meist BOOT0 und oder BOOT1. Da es da mittlerweile eine unüberschaubare Kombination an Typen gibt, musst du das selbst im Datenblatt nachschlagen. SWO heißt übrigens "Serial Wire Output" und der Name ist Programm. Ich persönlich verwende SWO für Debug-Ausgaben ala printf. Kann schon recht praktisch sein, ist aber nicht zwingend erforderlich.
eagle user schrieb: > Möchtest du für den SWD-Stecker nicht lieber den Vorschlag von ARM > übernehmen? bäh.. wer will schon so einen Klumpen auf seinem Board haben? Ich bin mittlerweile auf die Steckverbinder im 1 mm Raster von JST gekommen, 6 oder 10 polig je nachdem. Sowas trägt nicht so unsäglich auf wie eine Zollraster-Wanne. Nein, zu deinem Vorschlag kann man dem TO nicht wirklich zuraten - es sei denn, er will unbedingt die Originalkabel an seinem J-Link benutzen. Ansonsten hagelt es hier von mir noch ne herbe Kritik an der geposteten Schaltung: Mal abgesehen von der "chinesischen" Art, keinen Stromlaufplan, sondern lediglich einen viereckigen Igel mit Pinborsten ohne den eigentlichen STROMLAUF zu malen, obwohl für diepaar Leitungen genug Platz gewesen wäre - sehe ich keinerlei Kommunikationsanschluß. Soweit ich sehe, hat der Chip auch keinen USB. Sowas ist eigentlich immer sehr blöd. Deswegen würde ich lieber auf SWD und das ganze Debugging verzichten, als auf einen Anschluß für U(S)ART1-RX und -TX. Und wenn man schon dabei ist, dann auch noch /Reset und BOOT0 (oder 1 siehe Manual). Bei meiner 10 poligen 1 mm Lösung hab ich das: VCC, GND, RESET, BOOT0, RX, TX, SWDIO, SWDCLK, und die restlichen Pins mit nem SDA und SCL. Da hat man in allen Lebenslagen einen Kommunikationspfad zum µC. Nochwas: SWDCLK und BOOT mit je 22k gegen GND. W.S.
Hallo W.S. USART werde ich sicher noch einplanen. Ich habe noch nicht ganz begriffen, wie ich über den USB den uC flashen kann? Steht das irgendwo im Datenblatt? Noch eine Frage zum BOOT0: ich möchte ja den PIN zu low oder high setzten können, kann ich das so wie auf dem Bild machen oder sollte ich noch irgend einen Widerstand setzen? Warum muss SWDCLK mit einem 22k zu GND? Auf dem Discovery hat der ja keinen solchen Pull_Down Widerstand?
:
Bearbeitet durch User
Die BLM21 Bead an VDDA ist ja gut, aber der C10 ist dann auf der falschen Seite. HF-mäßig ist VDDA so nicht gut angebunden.
Harald A. schrieb: > Die BLM21 Bead an VDDA ist ja gut, aber der C10 ist dann auf der > falschen Seite. HF-mäßig ist VDDA so nicht gut angebunden. Da hast du natürlich recht, danke.
W.S. schrieb: > bäh.. wer will schon so einen Klumpen auf seinem Board haben? Ich bin > mittlerweile auf die Steckverbinder im 1 mm Raster von JST gekommen, 6 > oder 10 polig je nachdem. Welche nimmst Du da genau? Ich habe auch schon damit experimentiert, aber die die ich da hatte (die die in den LiPos 3x/4x/5x genutzt werden) die sind schwer wieder auseinander zu bekommen.
Ralf M. M. schrieb: > Welche nimmst Du da genau? JST SM10BSRSS-TB 1 vcc 2 sda 3 scl 4 swdclk 5 rx1 6 tx1 7 swdio 8 boot 9 reset 10 gnd Die Anschlußstrippen für den Steckerteil gibt's übrigens fertig gecrimpt bei Farnell oder RS. Und das Beispielbild bei Farnell ist falsch. Die Dinger gibt's stehend und liegend. W.S.
Sebastian T. schrieb: > Ich habe noch nicht ganz > begriffen, wie ich über den USB den uC flashen kann? Steht das irgendwo > im Datenblatt? Ich hab mir jetzt das Datenblatt zum STM32F303K8T6 nicht durchgelesen, aber soweit ich das sehe, hat dieser Typ gar keinen USB-Core drin. Also kannst du jetzt entweder auf USB pfeifen oder dir einen anderen Controllertyp aussuchen. Es geht ja auch ohne, dann aber am besten über den USART, der auch vom Bootlader benutzt wird. Den wiederum kannst du mit einem billigen USB-Seriell Adapter benutzen, wenn dieser Adapter simple TTL-Pegel liefert. z.B. ein simpler FTDI oder so. Also ohne MAX232. Und wenn du dir nen anderen µC aussuchen solltest, dann guck lieber zuvor in die Programmier-Appnote von ST (Nummer hab ich grad vergessen), ob der sich über USB programmieren läßt. Bei einigen Typen von NXP weiß ich, daß die das können: da meldet sich der Bootlader als kleiner Massenspeicher an und man braucht dann bloß seine Firmware draufzukopieren - ganz OHNE jegliches Programmiergeschirre. W.S.
Ok, so brächte ich also eigentlich nur den USART um das ganze richtig kompakt zu machen?
Jein, der USART-Stecker braucht zwar nur 3 Pins, aber du musst auch noch NRST und BOOT richtig ansteuern. Einen Reset-Taster hast du ja sowieso, dann wäre wohl ein Jumper für BOOT die kompakteste Lösung; bedienerfreundlicher wäre ein zweiter Taster. Wenn du für die Anwendung einen MAX232 brauchst, aber nur RX und TX nutzt, kannst du BOOT und NRST über DTR und RTS vom PC aus fern steuern -- noch kompakter und noch komfortabler.
eagle user schrieb: > Jein, der USART-Stecker braucht zwar nur 3 Pins, aber du musst auch noch > NRST und BOOT richtig ansteuern. Einen Reset-Taster hast du ja sowieso, > dann wäre wohl ein Jumper für BOOT die kompakteste Lösung; > bedienerfreundlicher wäre ein zweiter Taster. So wie in diesem Schaltplanausschnitt mache ich es bei einigen von meinen Boards. Wenn man den Taster kurz drückt, bekommt man einen Reset. Wenn man länger als 3 Sekunden draufbleibt, gibt es einen Reset und der Bootloader wird aktiviert. Funktioniert zuverlässig, ist bequem und man spart sich den Platz für den 2. Taster.
Gerd E. schrieb: > Funktioniert zuverlässig, ist bequem und man spart sich den Platz für > den 2. Taster. Nett gedacht, kostet aber einiges an Bauteilen. Ich habe (wie weiter oben geschrieben) einfach Reset und Boot an den Steckverbinder gelegt. Bei einem Verbinder im 1.0 Raster oder 1.25 Raster trägt das viel weniger auf als ein Taster und man kann vom PC aus beides betätigen. Finde ich angenehmer. W.S.
W.S. schrieb: > Nett gedacht, kostet aber einiges an Bauteilen. Naja, 2R, 1C, nen kleiner FET. Das läuft unter Hühnerfutter und fällt in der BOM nicht wirklich auf. Und im Gegensatz zu dem einen etwas größeren Taster, passen diese Kleinteile im Layout auch leicht in irgendwelche noch freie Ecken. Vor allem wenn die Schaltung in ein Gehäuse eingebaut ist, ist ein zusätzlicher von außen zugänglicher Taster aufwendiger oder unschöner. Da können auch zusätzliche Pins stören. > Ich habe (wie weiter > oben geschrieben) einfach Reset und Boot an den Steckverbinder gelegt. > Bei einem Verbinder im 1.0 Raster oder 1.25 Raster trägt das viel > weniger auf als ein Taster und man kann vom PC aus beides betätigen. Du brauchst dann halt nen USB-Seriell-Wandler, der diese Pins rausgeführt hat und die Du einfach per Programm ansteuern kannst, ohne daß diese Ansteuerung mit dem Flashprogramm kollidiert. Wenn ich das will, dann nehme ich gleich den ganzen SWD-Stecker mit allem. Dann ist auch die Ansteuerung am PC kein Thema, denn dann ist das ja alles einheitlich über den Debugger zugänglich.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.