STM32F103C8T6 Schaltplanüberprüfung

OP #7260286
Lesenswert?

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
Angehängte Dateien:
#7260311
Lesenswert?

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
Gast #7260329
Lesenswert?

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).
Gast #7260338
Lesenswert?

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.
OP #7260537
Lesenswert?

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.
#7260666
Lesenswert?

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
Gast #7260684
Lesenswert?

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.
Gast #7260691
Lesenswert?

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.
Gast #7260720
Lesenswert?

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.
OP #7261368
Lesenswert?

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?
Gast #7261374
Lesenswert?

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.
#7261387
Lesenswert?

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.
OP #7261531
Lesenswert?

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.
Angehängte Dateien:
Gast #7261605
Lesenswert?

. 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.
Gast #7261651
Lesenswert?

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)"
Gast #7261671
Lesenswert?

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.
OP #7261728
Lesenswert?

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?
Gast #7261735
Lesenswert?

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.
Gast #7261757
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren