Forum: Mikrocontroller und Digitale Elektronik STM32 Highspeed ADC PCB Design


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Michael (log99)


Lesenswert?

Hallo zusammen,

ich arbeite gerade an einem Versuch einen High-Speed ADC (12 Bit, 5-20 
MSPS) parallel mit einem STM32 Mikrocontroller auszulesen. Die ersten 
Versuche waren bereits erfolgreich, allerdings bereitet mir das Pinout 
des STM32-Mikrocontrollers etwas Kopfzerbrechen.

Nach meiner Logik wäre es am sinnvollsten, die 12 Datenpins des ADC auf 
12 GPIO-Pins des gleichen GPIO-Ports zu legen, um alle Daten 
gleichzeitig über das entsprechende Register auslesen zu können.

Es ist mir jedoch aufgefallen, dass die GPIO-Pins einer Bank über das 
gesamte Pinout verteilt sind und nicht in unmittelbarer Nähe zueinander 
liegen. Dies bei praktisch allen STM32 ob F1 oder H7. Teilweise sogar 
auf der gegenüberliegenden Seite des ICs.

Nun frage ich mich, wie kritisch diese Verteilung der Pins in Bezug auf 
das PCB-Layout bei hohen ADC-Datenraten ist.

Hat jemand von euch schon einmal etwas ähnliches gemacht oder 
Erfahrungen damit?

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

Michael schrieb:
> Hat jemand von euch schon einmal etwas ähnliches gemacht oder
> Erfahrungen damit?

Mit ADC nicht, aber ich entwerfe gerade eine Leiterplatte mit STM32H7 
(LQFP100, später mit LQFP176 u. LQFP208) für LCD-TFT im 
Parallel-RGB-Betrieb mit Sync-Signalen (RGB666 und RGB888), hinzu kommen 
noch Quad-SPI-Speicher – hier sind es also deutlich mehr Pins und die 
sind dann noch viel schlimmer über den ganzen µC verteilt, insofern 
würde ich sagen – man hat keine Wahl. Hier und dort kann man noch ein 
paar Leitungen umrouten, aber das war's dann auch schon, wenn es um 
'schöne Anordnung' der Leiterbahnen geht. Man muss sich mit dem, wie das 
eingebettet ist, anfinden und arrangieren.

__
> Nun frage ich mich, wie kritisch diese Verteilung der Pins in Bezug auf
> das PCB-Layout bei hohen ADC-Datenraten ist.

Kommt auf die Arbeitsfrequenz an – bis 25MHz sollte das alles noch 
unkritisch sein, sogar bis 50MHz sollte das noch funktionieren, aber 
spätestens ab 50MHz sollte man sich ernste Gedanken über die Laufzeit 
der Signale machen und die Längendifferenzen dann nicht so groß 
gestalten bzw. etwas angleichen.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Michael schrieb:
> Nun frage ich mich, wie kritisch diese Verteilung der Pins in Bezug auf
> das PCB-Layout bei hohen ADC-Datenraten ist.

Das ist in erster Line eine Softwarefrage. Denn wie willst du die Daten 
von zwei verschiednen Ports nahezu gleichzeitig einlesen, vor allem bei 
20 MHz? Klar kann man das vielleicht mit 2 DMA-Kanälen hintricksen, aber 
warum? Leg einfach die Pins an einen Port und gut. Wenn das mehr Aufwand 
im Layout ist, so what! Mit 2 Lagen kommst du bei deim IC sowieso nicht 
weg. Und komm mir jetzt nicht mit Längenausgleich der Leitungen, da fall 
ich ins Lachkoma! ;-)

von Falk B. (falk)


Lesenswert?

Gregor J. schrieb:
> 50MHz sollte man sich ernste Gedanken über die Laufzeit
> der Signale machen und die Längendifferenzen dann nicht so groß
> gestalten bzw. etwas angleichen.

Ja, so auf grob +/- eine handbreit! Bei beim Cuba Libre mixen! Eine 
handbreit Cola, 2 Finger breit Rum! ;-)

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

Falk B. schrieb:
> Das ist in erster Line eine Softwarefrage. Denn wie willst du die Daten
> von zwei verschiednen Ports nahezu gleichzeitig einlesen, vor allem bei
> 20 MHz?

Möchte er doch gar nicht – wärst Du nicht weiter auf Deinem Trip, 
hättest Du es herausgelesen.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Gregor J. schrieb:
>> Das ist in erster Line eine Softwarefrage. Denn wie willst du die Daten
>> von zwei verschiednen Ports nahezu gleichzeitig einlesen, vor allem bei
>> 20 MHz?
>
> Möchte er doch gar nicht – wärst Du nicht weiter auf Deinem Trip,
> hättest Du es herausgelesen.

Gleichfalls!

"ich arbeite gerade an einem Versuch einen High-Speed ADC (12 Bit, 5-20
MSPS)"

von Michael (log99)


Lesenswert?

Danke euch für die Antworten.

Gregor J. schrieb:
> Kommt auf die Arbeitsfrequenz an – bis 25MHz sollte das alles noch
> unkritisch sein, sogar bis 50MHz sollte das noch funktionieren, aber
> spätestens ab 50MHz sollte man sich ernste Gedanken über die Laufzeit
> der Signale machen und die Längendifferenzen dann nicht so groß
> gestalten bzw. etwas angleichen.

In diesem Fall, sollte es kein Problem sein, wenn ich nicht über 25 MHz 
gehe.

Falk B. schrieb:

> Das ist in erster Line eine Softwarefrage. Denn wie willst du die Daten
> von zwei verschiednen Ports nahezu gleichzeitig einlesen, vor allem bei
> 20 MHz? Klar kann man das vielleicht mit 2 DMA-Kanälen hintricksen, aber
> warum? Leg einfach die Pins an einen Port und gut. Wenn das mehr Aufwand
> im Layout ist, so what! Mit 2 Lagen kommst du bei deim IC sowieso nicht
> weg.

Also das PCB wird sicher 4 Lagig. Das ich mit zwei Ports nicht Arbeiten 
kann ist mir klar. Ich habe bis jetzt noch nie ein Layout mit solchen 
ADC's gemacht, daher die Unsicherheit über das Routing.

Danke euch.

von Frank O. (frank_o)


Lesenswert?

Falk B. schrieb:
> Ja, so auf grob +/- eine handbreit! Bei beim Cuba Libre mixen! Eine
> handbreit Cola, 2 Finger breit Rum! ;-)

Hahaha! Der war gut!

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

Michael schrieb:
> In diesem Fall, sollte es kein Problem sein, wenn ich nicht über 25 MHz
> gehe.

Man kann das eigene Layout später mit mehr testen, wenn die Hardware da 
mitmacht – ich werde es bei Quad-SPI bis 100MHz probieren, da die 
verwendeten ICs das angeblich auch können, später mit SDRAM-Bausteinen 
möchte ich auch in diesen Bereich gehen oder noch ein wenig mehr, um 
zumindest einige Erfahrungswerte zu bekommen bzw. die Grenze für das 
Funktionieren herauszufinden. Danach kann man alles mit einem 
Sicherheitsabstand zu der Grenze laufen lassen.

von G. K. (zumsel)


Lesenswert?

Alternate Pins sind bekannt?

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

G. K. schrieb:
> Alternate Pins sind bekannt?

Mein „Umrouten” aus meinem Posting oben bezog sich genau dadrauf, dass 
man gewisse Pins (der internen Module) auf verschiedene µC-Pins 
umswitchen kann – das geht aber in einem Fall, wo z.B. durchgehend 12 
Bits eines bestimmten GPIOs zum Auslesen eines ADCs explizit benötigt 
werden, leider nicht. Man kann z.B. nicht PA0 auf PB0 umrouten, weil man 
PA0 lieber dort auf der anderen Seite des µControllers als Input oder 
Output hätte, das Multiplexen selbst ist außerdem sehr eingeschränkt und 
spezifisch – man kann nicht alles beliebig umrouten und in jeder 
STM32-µC-Familie ist es etwas anders gestaltet. Das alles weiß man aber, 
wenn man sich damit ausgiebig beschäftigt hat. Es gibt noch ein paar 
undokumentierte Tricks beim Umrouten von Pins eines STM32, auf die man 
in bestimmten Situationen zurückgreifen könnte – die behalte ich aber 
für mich, für das Anliegen des Autors sind sie eh irrelevant.

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.