Forum: Mikrocontroller und Digitale Elektronik Suche einen Mikrocontroller der SCHNELL 24 Bit parallel senden kann


von Tobi (Gast)


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?

von RuckZuckFresseDick (Gast)


Lesenswert?

wiechnellistschnell?

von Werner (Gast)


Lesenswert?

"... dies ist nicht wirklich schnell."

Mich interessiert der Unterschied - in Bit pro Sekunden - zwischen, 
'nicht schnell' und 'nicht wirklich schnell'.

von 2⁵ (Gast)


Lesenswert?

Hm... 5 µS ist in der Größenordnung von 192 kHz Samplerate. Warum nicht 
einen Audio-Codec beim RPi nehmen, der 192 kHz kann? Das könnte dann 
hinreichend stabil sein.

von Tobi T. (tobi82m)


Lesenswert?

Der Raspi ist irgendwo im ms Bereich. Schön wäre wenn die 2x12 Bit im us 
Berich gesendet werden könnten. So 5us und aufwärts.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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...

: Bearbeitet durch Moderator
von Tobi T. (tobi82m)


Lesenswert?

Genau, hatte gedacht ESP32 mit FreeRTOS.
Stabiles Timing wäre schön. Hauptanforderung wäre die Daten schnell zu 
senden.

von 2⁵ (Gast)


Lesenswert?

Wobei ich jetzt dachte, du betreibst einen 2x12 bit DA Wandler (wegen 
I²S). Aber das muss ja nicht sein. Aber wenn I²S eine Lösung wäre, dann 
gehen ja viele µC, z.B. die STM32F40x.

von Tobi T. (tobi82m)


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

: Bearbeitet durch User
von donvido (Gast)


Lesenswert?

Ich blicks nicht...
Wie kommt man darauf eine serielle Schnittstelle (I2S) zu verwenden, 
wenn man 24bit parallel übertragen will?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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?

von Tobi T. (tobi82m)


Lesenswert?

I²S = Inter Sound. Kann man beim ESP32 nehmen weil es schnell ist und 
die Daten direkt aus dem DMA nimmt.

https://github.com/TobleMiner/esp_i2s_parallel

von Tobi T. (tobi82m)


Lesenswert?

Lothar M. schrieb:
> Tobi T. schrieb:
>> 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?

5uS würden mir erstmal reichen. Das maximum was er kann wäre das optimum

von donvido (Gast)


Lesenswert?


von Frank K. (fchk)


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

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

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.

von c-hater (Gast)


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...

von A. B. (Gast)


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.

von Flieger (Gast)


Lesenswert?

Die Frage ist nicht nur wie schnell die Daten rausgehen, sondern auch 
woher sie kommen. Ich nehme an, es muss noch etwas damit gerechnet 
werden. Ich wuerd mal an ein FPGA denken.

von Audiomann (Gast)


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.

von 56k (Gast)


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.

von Forist (Gast)


Lesenswert?

2⁵ schrieb:
> 5 µS
Was haben irgendwelche Isolationswerte mit der Frage des TO zu tun?

von Falk B. (falk)


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.

von Falk B. (falk)


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!

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.