Hallo zusammen, die Schlechtwetterphase hat begonnen und mich mal wieder in die Bastelecke getrieben. Ich habe mir ein neues PCB-Design für ein STM32F103C8T6 erstellt. Verarbeitet werden sollen: Bis zu 10 Taster (In diesem Bild nicht zu sehen) oder Bis zu 4x Taster und 6x Rotary Encoder (In diesem Bild nicht zu sehen) welche wahlweise durch ein Modulsystem aufgesteckt werden können. Bis zu 10x WS2812B als Statusanzeige (+5V) über einen 74LVC1G17W5-7 (U3) (Stefan F. hat zu WS2812B eine super PDF sofern gewünscht verlinke ich es hier im Nachgang auch gerne noch mal) Einspeisung erfolgt im USB-Betrieb über USB +5V und im CAN-Betrieb über externe +5V, welche dann für den STM32 auf +3.3V reduziert werden. Nun zu meinen Fragen: Gibt es Verbesserungen zur Schaltung? Welches Bauteil empfehlt ihr für die Schottky Diode? Weitere ergeben sich eventuell….. Infos: Der Schaltplan wird im Nachgang noch sauber gemacht und genauer beschriftet. Diverse Pins des STM32, welche aktuell nicht belegt sind, werden später noch zu Stiftleisten geführt. Basis hierfür waren diverse im Google, Youtube und hier zu findende Beiträge. Danke für eure Hilfe
1. Ich würde den MCP2551 durch einen MCP2562 ersetzen. Der hat einen extra 3.3V Spannungseingang für die Logik. Damit hast Du auch passende Logikpegel am Prozessor. 2. Ich schalte immer einen 1M Widerstand parallel zum Quarz als Anschwinghilfe. Schadet nicht, hilft manchmal. 3. Am Besten noch NRST an den Programmierstecker führen. Sicherheitshalber 10k Pullup an NRST. 4. Überlege, ob Du nicht anstelle des veralteten STM32F103 den moderneren STM32F303 verwenden möchtest. Da hast Du auch nicht das Risiko, Fälschungen aufzusitzen. Außerdem ist Dir klar, dass Du USB und CAN beim '103 nicht gleichzeitig verwenden kannst, weil beide das gleiche DPRAM verwenden? Beim '303er ist das kein Problem mehr. 5. Ich verwende als Programmierheader den von ARM standardisierten 10-Pin Header, weil der quer durch alle ARM-Familien verwendet wird und schön klein ist. Beim STLINKV3 Mini wird die 14-polige Version verwendet, die noch einen Debug-UART drauf hat. Wäre auch empfehlenswert. fchk
Kein ESD-Schutz an CAN und USB, keine Gleichtaktdrossel am CAN?
Für die DIP Switche genügen vermutlich die internen Pull-Up Widerstände,
die externen können entfallen.
Bist du sicher, einen 16 MHz Quarz nehmen zu wollen? Das geht, üblicher
wäre aber einer mit 8 MHz.
Du hast du viel kapazitive Last am USB Anschluss (in Summe ca 70µF). Da
sind nur 10µF erlaubt.
Ich würde die Polyfuse ruhig großzügiger auslegen. Weil: Wenn die einmal
auslösen, haben sie danach für immer einen erhöhten Innenwiderstand.
Eine 1A Polyfuse würde kurzzeitig ca. 2A zulassen, das sollte eigentlich
jede ansonsten (ungeschützte) Quelle, sowie Kabel und Stecker vertragen.
> Welches Bauteil empfehlt ihr für die Schottky Diode?
Ist eigentlich ziemlich egal ob da jetzt 0,2 oder 0,8V abfallen und wie
viel Ampere sie verträgt. Im Kurzschlussfall an einer kräftigen Quelle
wird sie wahrscheinlich eh schneller durchbrennen, als die Polyfuse
abschaltet (ist meine Erfahrung mit Arduino Boards).
:
Bearbeitet durch User
Du hast recht eigenwillige Vorstellungen darüber, wie du den Bootlader benutzen willst. Ich würde dir alternativ vorschlagen, auf einen Steckverbinder so etwa folgende Signale zu legen: - PA13 = SWDIO - PA14 = SWCLK - PA9 = TX1 - PA10 = RX1 - Pin 44 = BOOT0 - Pin 7 = /Reset - VCC (3.3V) - GND Und PB2 (BOOT1) über 10K auf GND. Auch BOOT0 und SWCLK über je 22K auf GND. Den Umschalter von BOOT0 kannst du dann weglassen. Das wird dann vom Programmer gemacht. W.S.
Die Sektion +3,3 V to +3,3 VA verstehe ich nicht. Da kommen 4,x Volt bis 5 Volt rein nach Schottky-Diode.
Frank K. schrieb: > 1. Ich würde den MCP2551 durch einen MCP2562 ersetzen. Ist ne gute Idee.... ist es richtig, dass der STBY nur auf GND gezogen wird? > 2. Ich schalte immer einen 1M Widerstand In den meisten Fällen werden (wenn überhaupt) nur 47 Ohm Widerstände zwischen HSE out und Pin 3 des Crystel als Feed-Resistor eingesetzt. Aber generell werden sie als überflüssig angesehen. Könntest du mir das erklären? > 3. Am Besten noch NRST an den Programmierstecker führen. > Sicherheitshalber 10k Pullup an NRST. Wird gemacht > 4. Überlege, ob Du nicht anstelle des veralteten STM32F103 den > moderneren STM32F303 verwenden möchtest. USB und Can werden zwar eh nie gleichzeitig benutzt (entweder USB oder CAN), aber generell ist es eine Überlegung wert. Da ich vor habe davon (bei JLCPSB PCBWAY…. oder) ca. 80 bis 100 Stück inkl. Bestückung anfertigen zu lassen ist die Frage, ob der Preis dann nicht doch ne Rolle spielen wird. Aber generell hast du schon recht. > 5. Ich verwende als Programmierheader den von ARM standardisierten Da bin ich mir noch nicht ganz so einig, was ich da nehmen werde. Bin aber für alle Empfehlungen dankbar. Niklas G. schrieb: > Kein ESD-Schutz an CAN und USB, keine Gleichtaktdrossel am CAN? Was würdest du da empfehlen? Steve van de Grens schrieb: > Für die DIP Switche genügen vermutlich die internen Pull-Up Widerstände, Ja habe ich mir auch schon überlegt. > Bist du sicher, einen 16 MHz Quarz nehmen zu wollen? Das geht, üblicher > wäre aber einer mit 8 MHz. Habe die Schaltung von Phil´s Lab aus Youtube übernommen, aber es wurde auch überwiegender weise so in anderen Beiträgen gemacht. Habe es deswegen als Standard aufgefasst. > Du hast du viel kapazitive Last am USB Anschluss (in Summe ca 70µF). Da > sind nur 10µF erlaubt. Wie meinst du das? > Ich würde die Polyfuse ruhig großzügiger auslegen. Sind nicht maximal 500mA an USB zulässig? >> Welches Bauteil empfehlt ihr für die Schottky Diode? > > Ist eigentlich ziemlich egal ob da jetzt 0,2 oder 0,8V abfallen und wie Gibt es eine bessere alternative als die Schottky? W.S. schrieb: > Du hast recht eigenwillige Vorstellungen darüber, wie ich oben geschrieben habe werden später noch auf Stiftleisten geführt, aber danke für die Erinnerung (lieber einmal mehr als es würde vergessen gehen). Ich werde es zusammen mit den anderen Änderungen einzeichnen.
noreply@noreply.com schrieb: > Die Sektion +3,3 V to +3,3 VA verstehe ich nicht. Da kommen 4,x Volt bis > 5 Volt rein nach Schottky-Diode. Das PWR_FLAG ist wohl eine KiCAD Besonderheit, mit der man ein Netz als Versorgung definieren kann. Damit werden keine Netze verbunden. fchk
noreply@noreply.com schrieb: > Die Sektion +3,3 V to +3,3 VA verstehe ich nicht. Da kommen 4,x Volt bis > 5 Volt rein nach Schottky-Diode. Wieso kommen da 4,x bis 5 Volt rein? U1 AMS1117-3.3 regelt doch schon auf 3.3V runter und +3,3 V to +3,3 VA ist nur für den Fall das Analog benötigt wird da. Oder verstehe ich dich Falsch? Edit: genau wie Frank K. sagt.
:
Bearbeitet durch User
Hier noch das Bild zu meinem Post vom 21.11.2022 17:43 Ist ne gute Idee.... ist es richtig, dass der STBY nur auf GND gezogen wird?
D. Z. schrieb: > Hier noch das Bild zu meinem Post vom 21.11.2022 17:43 > > Ist ne gute Idee.... ist es richtig, dass der STBY nur auf GND gezogen > wird? Ist korrekt so. fchk
D. Z. schrieb: >> 2. Ich schalte immer einen 1M Widerstand > > In den meisten Fällen werden (wenn überhaupt) nur 47 Ohm Widerstände > zwischen HSE out und Pin 3 des Crystel als Feed-Resistor eingesetzt. > Aber generell werden sie als überflüssig angesehen. Könntest du mir das > erklären? Ein niederohmiger Serienwiderstand dient dazu, dass der Quarz nicht übersteuert wird. Hab ich beim STM32 nie gebraucht. Ein hochohmiger Parallelwiderstand hilft dem Quarz beim Anschwingen. Wenn der Quarz schwingt, hat er keine Wirkung mehr. >> 4. Überlege, ob Du nicht anstelle des veralteten STM32F103 den >> moderneren STM32F303 verwenden möchtest. > > USB und Can werden zwar eh nie gleichzeitig benutzt (entweder USB oder > CAN), aber generell ist es eine Überlegung wert. Da ich vor habe davon > (bei JLCPSB PCBWAY…. oder) ca. 80 bis 100 Stück inkl. Bestückung > anfertigen zu lassen ist die Frage, ob der Preis dann nicht doch ne > Rolle spielen wird. Aber generell hast du schon recht. https://lcsc.com/product-detail/Microcontroller-Units-MCUs-MPUs-SOCs_STMicroelectronics-STM32F302CBT6_C94046.html https://lcsc.com/product-detail/Microcontroller-Units-MCUs-MPUs-SOCs_STMicroelectronics-STM32F302C8T6_C90795.html Beide vorrätig. >> 5. Ich verwende als Programmierheader den von ARM standardisierten > > Da bin ich mir noch nicht ganz so einig, was ich da nehmen werde. Bin > aber für alle Empfehlungen dankbar. https://www.st.com/resource/en/user_manual/um2910-stlinkv3minie-debuggerprogrammer-tiny-probe-for-stm32-microcontrollers-stmicroelectronics.pdf >> Kein ESD-Schutz an CAN und USB, keine Gleichtaktdrossel am CAN? > > Was würdest du da empfehlen? Drossel: https://www.we-online.com/catalog/de/WE-CNSW#744235510 ESD: https://www.we-online.com/katalog/de/WE-TVS-HS#8240026 geht für beides >> Bist du sicher, einen 16 MHz Quarz nehmen zu wollen? Das geht, üblicher >> wäre aber einer mit 8 MHz. genau. 8MHz ist üblicher. >> Ich würde die Polyfuse ruhig großzügiger auslegen. > > Sind nicht maximal 500mA an USB zulässig? Es gibt auch noch diese Möglichkeit: https://www.ti.com/product/TPS2051B fchk
D. Z. schrieb: > Sind nicht maximal 500mA an USB zulässig? Theoretisch ja, aber das stellt die 500mA Polyfuse nicht sicher. Schau dir mal an, bei welchem Strom sie auslöst. Falls du jetzt eine 200mA Polyfuse nehmen willst, damit sie sicher bei 500mA auslöst, schau dir an, welche Innenwiderstand sie hat. Vor allem welchen Innenwiderstand sie nach der ersten Auslösung haben wird. Das willst du nicht.
D. Z. schrieb: >> Du hast du viel kapazitive Last am USB Anschluss (in Summe ca 70µF). Da >> sind nur 10µF erlaubt. > Wie meinst du das? Du hast zu große Kondensatoren an VUSB. C5 und C8 dürfen zusammen nur 10µF haben. Sonst riskierst du, dass der PC beim Einstecken des Kabel einen Reset macht oder sich aufhängt. Außerdem riskierst du, dass die Kontakte der USB Stecker/Buchsen durch die Funken beim Einstecken allmählich verbrannt werden.
D. Z. schrieb: > U1 AMS1117-3.3 regelt doch schon auf 3.3V runter und +3,3 V to +3,3 VA > ist nur für den Fall das Analog benötigt wird da. > > Oder verstehe ich dich Falsch? Ich bin davon ausgegangen, daß PWR_FLAG ein Netz ist. Wenn es nur eine KICAD Besonderheit ist, soll es mir recht sein.
D. Z. schrieb: > Bis zu 10x WS2812B als Statusanzeige (+5V) über einen 74LVC1G17W5-7 (U3) Man kann da auch einfach den Pin auf Open-Drain schalten und den Pegel mittels externem Pull-Up Widerstand auf 5V ziehen. So kann man sich den Pegelwandler sparen. Vorallem bei den neueren STM32 sind fast alle Pins 5V tolerant, aber dennoch noch kurz im Datenblatt prüfen.
:
Bearbeitet durch User
Johnny B. schrieb: > D. Z. schrieb: >> Bis zu 10x WS2812B als Statusanzeige (+5V) über einen 74LVC1G17W5-7 (U3) > > Man kann da auch einfach den Pin auf Open-Drain schalten Ich hatte mich hier erkundigt und die zu bevorzugende Methode sollte diese sein. siehe Link: Beitrag "Re: WS2812B mit 3.3V ansteuern"
Ich bin mich aktuell noch am rum schlagen mit CUBEIDE, weil die Pin-Einstellungen immer wieder fehler auswerfen. Error: (This peripheral has no parameters to be configured) und rot leuchtende Schrift bei diversen anderen Bereichen. Dann ist auf einmal alles okay und ein paar min später wieder nicht?!? Kann das sein, dass der STM32F303C8T6 generelle Probleme hat?
:
Bearbeitet durch User
D. Z. schrieb: > Gibt es Verbesserungen zur Schaltung? Wenn die Leitungen vom Quarz zum Controller auf dem Board genau so lang werden wie im Schaltplan dann wird das nix. Könnte ja sein dass da jemand auf die Idee kommt. Hamma hier alles schon erlebt.
D. Z. schrieb: > Kann das sein, dass der STM32F303C8T6 generelle Probleme hat? Nein, das Problem sitzt vor deinem Bildschirm. Poste einfach dein *.ioc File, dann werden sie geholfen. Ein paar Anforderungen dazu schreiben wäre hilfreich. Wie andere schon sagten ist ein 8MHz Quarz durchaus als "optimaler" zum Konfigurieren geeignet als ein 16MHz. Die meisten Designs machen das so.
Steve van de Grens schrieb: > Bist du sicher, einen 16 MHz Quarz nehmen zu wollen? Das geht, üblicher > wäre aber einer mit 8 MHz. Aber entweder größer oder hochohmiger, also nicht so schwingfreudig. Für CAN möchte man evt. eine höhere Frequenz oder sogar genau 10MHz, oder, je nach CAN-Controller. Der interne CAN-Bootloader braucht 8, 14.7456 oder 25MHz. Johnny B. schrieb: > Man kann da auch einfach den Pin auf Open-Drain schalten und den Pegel > mittels externem Pull-Up Widerstand auf 5V ziehen. So kann man sich den > Pegelwandler sparen. Die Pins sind nur 5V-tolerant wenn sie keine Analog-Funktion haben, die internen Pull-Up abgeschaltet sind und wenn VDD größer als ca. 2V ist. Mit VDD = 0 sind maximal 4 Volt erlaubt. Bei manchen Pins kann man die Analog-Funktion (z.B. Komparator) abschalten, bei manchen nicht.
:
Bearbeitet durch User
lay outa schrieb: > Nein, das Problem sitzt Bin echt verwirrt wegen des Crystal ob jetzt 8 10 oder 16MHz.... So wie ich das verstanden hatte, hieß es immer 16 bei verwendung mit CAN BUS?!? Hier mal die .ioc: https://www.file-upload.net/download-15044875/5x_Buttonbox.ioc.html Nachfolgend noch die Pinbelegung (siehe Anhang) *Signal x.x sind Taster und/oder Rotary-Encoder Signalgeber und mindestens Signal 1.1 bis 5.3 sind notwendig 6.1 bis 6.8 nice to have falls noch was geändert werden müsste.
Frank K. schrieb: > Sicherheitshalber 10k Pullup an NRST. Datenblatt beachten! Der Controller verfügt bereits über einen internen Pullup Widerstand. Ein paralleler externer Pullup kann dazu führen, dass zu viel Strom über den Pin fließt.
D. Z. schrieb: > Hier mal die .ioc: Du kannst das *.ioc File einfach als Anhang einem Beitrag hinzufügen. Alles andere ist umständlich und fehlerträchtig.
D. Z. schrieb: > Kann das sein, dass der STM32F303C8T6 generelle Probleme hat? Ich hab Dir Pointer auf den 302 genannt. Stell das mal um. Sorry für die Verwirrung. fchk
. Z. schrieb: > Nachfolgend noch die Pinbelegung (siehe Anhang) Wenn du den Controller in seinen Pin-Resourcen so voll ausnutzt kommst du zwangsläufig in Schwierigkeiten da Kollisionen auftreten können. Nicht jeder Pin kann unter allen Umständen in jeder beliebig gewünschten Konfiguration verwendet werden. Es empfiehlt sich alle gelben Warndreiecke zu "entfernen", --> Umkonfigurieren. Wenn du absolut so viele Pins vergeben/nutzen willst gehe über auf den grösseren F303 mit mehr Pins. Ob es dann funktioniert wie du vorgesehen hast muss man erst sehen. Aber dafür gibt es ja das CubeMX.
D. Z. schrieb: > Bin echt verwirrt wegen des Crystal ob jetzt 8 10 oder 16MHz.... > So wie ich das verstanden hatte, hieß es immer 16 bei verwendung mit CAN > BUS?!? Über die Baudrate musst du dich selbst schlau machen. Nach meinem flüchtigen Eindruck ist es nicht relevant welchen Quarz bzw. Quarzfrequenz man verwendet. Habe kein Wissen / keine Erfahrung mit CAN. Ich behaupte immer noch dass die von STM auf ihren Evaluation Boards meist verwendeten 8MHz am "optimalsten" sind. Hier eine gute Hilfestellung für die Baudrate. Man muss ja nur suchen ..... Beitrag "STM32 CAN Baudrate Berechnung (Can Bit Timing)"
D. Z. schrieb: > Nachfolgend noch die Pinbelegung (siehe Anhang) Nachdem du ja einiges vorhast und du offensichtlich nicht viel Erfahrung mitbringst hier meine Empfehlung: kaufe dir für schlappe (ca.) 25 Euro ein Nucleo Board mit dem F303 und teste alles vorher aus sonst wirst du mit deiner fertigen Schaltung erst mal baden gehen.
Machen wir es mal anders herum. Da ihr euch hier viel besser auskennt, wäre es wohl sinnvoller, wenn ihr anhand meiner Angaben eine empfehlung geben würdet. Ich möchte 2 Betriebsarten haben 1. USB Betrieb (Standalone) oder 2. CAN-BUS Betrieb (Slave) Ausgang: 1x für 5x oder 10x WS2812B RGB LEDs Eingänge: 30x (max) über Button und Rotary Encoder Power: 1 Standalone über USB 2 Slave über externe +5V Einspeisung Besonderheit: Extern soll immer bevorzugt werden, wenn vorhanden. ESD für USB und CAN "Industriestandart" wäre auch noch ein zu berücksichtigendes Wort, also keine "so funktoniert es auch", sondern "so muss es gemacht werden" Ich brauche von dem "fertigen Ergebnis" ca 90 bis 100 PCBs (zumindest am Anfang), weshalb ich natürlich alles zu 100% richtig haben möchte. Dieses PCB dient als Base PCB, auf welches im Anschluss andere PCBs mit Button und Rotary Encodern aufgesteckt werden sollen. Also welcher STM32 wäre da der beste, der alle Anforderungen erfühlt und habt ihr die diversen Schematic für die Notwendigen Schaltungen oder eventuell eine komplette?
D. Z. schrieb: > wenn ihr anhand meiner Angaben eine empfehlung > geben würdet. Eine Menge Holz. Daher - in Anbetracht der "90 bis 100 PCBs" und des Wortest "Industriestandart" die Wiederholung meiner Empfehlung: lay outa schrieb: > teste > alles vorher aus sonst wirst du mit deiner fertigen Schaltung > erst mal baden gehen. Den "geringfügigen" Rest der Arbeiten (nochmal: "Industriestandart") überlasse ich jetzt gerne den anderen Mitwirkenden / Mitlesern.
D. Z. schrieb: > Kann das sein, dass der STM32F303C8T6 generelle Probleme hat? Steht im Errata Dokument. Der STM32F103C8T6 kann aber kaum daran schuld sein, dass deine PC Software zickt. D. Z. schrieb: > So wie ich das verstanden hatte, hieß es immer 16 bei verwendung mit CAN > BUS?!? Wo hieß es immer? Ich würde mich ja lieber an die Dokumentation von ST halten, also dem Datasheet, dem Reference Mnaual und passenden Application Notes, falls vorhanden. Gerne darfst du auch von den Nucleo Boards von ST abgucken.
Beitrag #7261764 wurde von einem Moderator gelöscht.
Ich hatte die "gleiche" Schaltung auf Basis des Atmel32u4 da funktionierte alles Super. Dann kam es dazu, dass die Atmel immer schlechter zu bekommen waren und mir die STM32 empfohlen wurden (aus mir verständlichen Gründen). Nun versuche ich die gleichen Funktionen, wie mit dem Atmel3204 in STM32 umzusetzen.
D. Z. schrieb: > Dann kam es dazu, dass die Atmel immer > schlechter zu bekommen waren und mir die STM32 empfohlen wurden Ich habe es umgekehrt in Erinnerung. Die 8 Bit Mikrocontroller von Atmel waren in den vergangenen 2 Jahren wesentlich besser verfügbar, als die STM32.
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.