Suche einen Mikrocontroller der SCHNELL 24 Bit parallel senden kann

Gast #6993201
Lesenswert?

Hallo,
ich bin auf der Suche nach einem Mikrocontroller der wirklich schnell 
2x12 Bit parallel ausgeben kann.
Derzeit ist dies mit einem Raspi realisiert und dies ist nicht wirklich 
schnell.
Meine Idee war nun einen ESP32 zu nehmen dort die Daten über DMA und I2S 
rauszuschicken. Geschwindigkeit ist da wohl nicht das Problem, da ist 
eher das Problem des stabilen Timings. Wenn man alle 5us sendet schwankt 
es wohl ziemlich um diesen Wert. Weiteres Problem, der ESP32 hat nur 21 
GPIOS die als Output definiert werden können.

Hat jemand einen Tipp um 2x12 Bit schnell und stabil parallel senden zu 
können?
Moderator (Firma: Titel) Persönliche Seite #6993219
Lesenswert?

Tobi schrieb:
> Hat jemand einen Tipp um 2x12 Bit schnell und stabil parallel senden zu
> können?
Nimm einen µC, der nicht nebenher ein Betriebssystem zu bedienen hat.

> parallel senden zu können?
Wie sieht dabei das Handshake aus? Alle parallelen Busse haben einen 
Mechanismus, der signalisiert "jetzt sind die Daten stabil, jetzt kannst 
du sie übernehmen".

> da ist eher das Problem des stabilen Timings.
Das ist also die zweite Anforderung? Oder ist das im Grunde die einzige? 
Denn 24 Bit pro 5µs ist eigentlich recht langsam...
#6993230
Lesenswert?

Handshake gibt es keinen.
Es soll ein Vector Modulator angesteuert werden der I und Q mittels 
jeweils 12 Bit Daten bekommt.
Habe grade geschaut, der Modulator hat eine maximale 
Schaltgeschwindigkeit von 500ns/2Mhz. Wenn der uC das schaffen würde 
wäre Top
Moderator (Firma: Titel) Persönliche Seite #6993237
Lesenswert?

Tobi T. schrieb:
> Wenn der uC das schaffen würde wäre Top
Der µC ist nicht das Problem, sondern die darauf laufende Software. Und 
das kann durchaus spannend werden, wenn man die Googletreffer so 
anschaut:
https://www.google.com/search?q=FreeRTOS+jitter

> der Modulator hat eine maximale Schaltgeschwindigkeit von 500ns/2Mhz.
Das ist jetzt aber doch 10x schneller als vorhin, oder wie passen die 
5µs jetzt da rein?
#6993249
Lesenswert?

Für ein wirklich exaktes Timing nimmst Du einen FIFO-Baustein, z.B. 
sowas hier:

https://www.renesas.com/eu/en/products/memory-logic/fifo-products/synchronous-fifos/72v36100-64k-x-36-supersync-ii-fifo-33v?

Der hat einen Speicher von 64k-Worten zu 36 Bit. Den Eingäng fütterst Du 
aus irgendeiner Quelle, wobei das Timing da unkritisch ist - du musst 
eben nur im Mittel die Datenrate schaffen. Die reingeschriebenen Daten 
kannst Du ab Ausgang abholen, wobei mit jedem RXCLK ein Wort 
herausfällt. Die Genauigkeit des RXCLK bestimmt die Genauigkeit des 
gesamten Systems, und so bekommst Du ein wirklich präzises Timing hin.

Dieser konkrete FIFO kann auch Busbreiten umsetzen. D.h. Du kannst mit 
18 Bit reinschreiben und mit 36 Bit auslesen.

Als Controller würde ich irgend einen 32-Bit Controller mit genügend 
IO-Pins nehmen. Digikey hat z.B. gerade TM4C1233 im TQFP144 lieferbar. 
(296-35820-ND).

Heutzutage werden FIFOs nur noch selten als Einzelbausteine eingesetzt, 
sondern finden sich in vielen FPGAs.

fchk
Gast #6993264
Lesenswert?

Tilo R. schrieb:

> RP2040
>
> Mit dem PIO des Raspberry-Mikrocontrollers sollten sich Timing-Wünsche
> sehr präzise und jitterfrei erfüllen lassen.
> Daten-Nachschub geht per DMA.

So ist es. Allerdings wird es mit den Pins etwas eng. Wenn man 24 für 
die Ausgabe braucht, bleiben nur noch genau zwei für andere Aufgaben 
über...
Gast #6993294
Lesenswert?

STM32 mit FMC, die Adressleitungen werden als Datenausgänge 
"mißbraucht", dann den Write-FIFO (für Adressen und Daten!!!) via CPU 
regelmäßig nachfüllen. Die Datenleitungen des FMC bleiben für 
anderweitige Verwendung frei, was als Datum geschrieben wird, ist egal.

Die Datenleitungen zu verwenden, wär' schöner, aber es gibt deren nur 
16. Man könnte aber natürlich auch "mischen", dann käme man auf max. 
28+16 Ausgänge.
Gast #6993336
Lesenswert?

donvido schrieb:
> Wie kommt man darauf eine serielle Schnittstelle (I2S) zu verwenden,
> wenn man 24bit parallel übertragen will?
Vielleicht deshalb, weil es Wandlerchips dafür gibt und man mit I2S 
ausreichend schnell ist? Mein XMOS-board macht 384kHz Stereo 32 Bit in 
I2S, bei S/PDIF über eine Leitung.
Gast #6993353
Lesenswert?

Die 56k DSPs haben 24 bit Wortbreite.
Damit ist natuerlich einfach 24 bit parallel und mit genauem
Timing auszugeben.
Wenn man ein Byte "verschwendet" sollten auch alle TMS320C5xyz
das leicht koennen.
Eigentlich alle 32 bit Controller die ein externes
Speicherinterface haben. Z.B. Renesas SH-3/4/...

Schlussendlich tut es ein FPGA natuerlich sowieso.
Wenn der TO nicht ganz ungeschickt ist, auch ein nicht zu
kleiner CPLD.

Aber wie es aussieht, spielt der TO nur mit Bastlermainstreamzeug herum.
#6993397
Lesenswert?

Tobi T. schrieb:
> Handshake gibt es keinen.
> Es soll ein Vector Modulator angesteuert werden der I und Q mittels
> jeweils 12 Bit Daten bekommt.
> Habe grade geschaut, der Modulator hat eine maximale
> Schaltgeschwindigkeit von 500ns/2Mhz. Wenn der uC das schaffen würde
> wäre Top

Man nehme Dr. Oetker, ähhh, ein kleines FPGA Evaluation Board mit bissel 
SRAM. Damit ist das ein Kinderspiel, mit 2 MHz 24 Bit Datenwörter 
jitterfrei auszugeben. Den RAM kann man per SPI über das FPGA an jede 
X-beliebigen Controller anbinden und von dort die passenden Daten laden. 
Fertig ist der beliebig programmierbare Funktionsgenerator.

Eine andere Möglichkeit wäre ein paralleler FLASH-Speicher, den man mit 
einem einfachen CMOS-Zähler ala 74HC4060 oder ähnlich als Adresszähler 
benutzt. Den kann man auch sehr gleichmäßig takten und damit die Daten 
ausgeben. Das Programmieren ist halt deutlich langsamer. Wenn ein 
deutlich kleinerer Speicher ausreicht, tut es auch ein SRAM.
#6993487
Lesenswert?

Was man mit dem RasPi und VIEL HACKER Spirit machen könnte.

Man programmiert den LCD-Controller auf die passende Frequenz (einfach) 
und gibt ein Bild aus, welches in den 24 Bit RGB-Daten die gewünschten 
Daten enthält! Man muss nur dafür sorgen, daß die H/V Sync Ränder 
(Front/Back Porch) auf 0 gesetzt werden, damit keine Lücken im 
Datenstrom entstehen. Ob der LCD-Controller das mitmacht, weiß ich 
nicht. Wenn ja, könnte man dann über das SDI (Serial Digital Interface) 
und den Adapter für den Touchscreen eben letzteren ersetzen und die 24 
Bild Daten anzapfen, sogar mit zugehörigem Takt! Das alles würde dann 
ohne einen Funken CPU-Last laufen, 100% per DMA und mit 
Standardhardware!

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