Raspberry Pi 3 GPIO/UART Datenrate

OP #4914667
Lesenswert?

Ich würde gerne Daten von einem ADC über die GPIOs (24 Bit parallel) zum 
Raspberry Pi 3 schicken und dabei gleichzeitig noch eine Kommunikation 
über RS232 Realisieren, die ja auch über die GPIO Pins läuft.

Mit welcher Frequenz kann ich denn die Daten vom ADC überhaupt schicken? 
Ich habe gelesen, dass unter Raspian mit C 20MHz möglich sind. 
Allerdings glaube ich nur für einen Pin?? Hat da jemand Erfahrung damit?
#4915789
Lesenswert?

WiringPi kann den SPI glaub ich mit 32 MHz befeuern. Theoretisch also 
machbar, wenn dir das Betriebssystem vom Timing kein Strich durch die 
Rechnung macht.
Ich schätze mal dass die 1 Msps schon ohne Jitter sein sollen. Von daher 
würde ich so oder so sagen dass der Rpi dafür eher ungeeignet ist (außer 
du programmierst ihn bare metal).
Ansonsten mach das lieber mit einem µC bzw FPGA und schicke es dann 
gebündelt über USB/Netzwerk an den RPi, oder halt gleich nen Zynq nehmen 
(z.B. Zybo Board). Dann einfach 3x nen Axi Fifo rein und ein bisschen 
Logik die die ADCs mit 1 MHz sampeln und in den Fifo schmeissen.
Gast #4919537
Lesenswert?

Es geht sicher einiges, die Frage ist aber was vom Userspace aus geht 
mit den im Internet rumgeiternden Treibern. 1MHz vielleicht schon, ohne 
Aussetzer vermutlich nicht.
Wenn du bereit bist einen eigenen Treiber (aka "MODUL") für das Linux u 
programmieren geht es vermutlich schon, auch ohne Aussetzer, denn der 
Treiber kann mit einer Priorität laufen die auch von anderen Treibern im 
Kernel nicht unterbrochen werden kann. Wenn du sowas in der Art lernen 
willst ist das sicher ein gutes Einstieg-Projekt. Der Zeitaufwand ist 
vorhanden, der Lerneffekt allerdings auch.
Gutes Buch dazu:
https://www.amazon.de/Linux-Treiber-entwickeln-systematische-Ger%C3%A4tetreiber-Kernelprogrammierung/dp/3864902886/ref=sr_1_1?s=books&ie=UTF8&qid=1488356941&sr=1-1&keywords=linux+treiber
OP #4920094
Lesenswert?

Christian R. schrieb:
> Sowas probieren bei uns auf Arbeit auch regelmäßig die "Experten" um
> dann nach viel verbranntem Geld und Arbeitszeit festzustellen, dass der
> Raspi nicht für Echtzeit Anwendungen wie äquidistante Abtastung mit ADC
> geeignet ist. Für richtige Messungem brauchst du eine externe Logik mit
> Puffer.

Den FPGA zum puffern wollt ich vermeiden.

Das ich für den Raspi einen eigenen Treiber schreiben muss ist mir klar. 
Naja, einen Versuch ist's jedenfalls Wert. Ich hatte halt gehofft das 
sowas schonmal jemand gemacht hat und berichten kann welche Datenrate 
man erwarten kann.
Gast #4969925
Lesenswert?

M. M. schrieb:

> Naja, einen Versuch ist's jedenfalls Wert. Ich hatte halt gehofft das
> sowas schonmal jemand gemacht hat und berichten kann welche Datenrate
> man erwarten kann.

Ich hab mal mit selbstgebauten 8bit ADC auf Basis R2R und sukzessiver 
Approx am Raspi experimentiert, da ist man froh wen man auf 10 kSps 
kommt. Auch Recherchen haben damals keine Hoffnung gemacht um mit 
mehreren GPIO's was schnelleres als 100kHZ zu erreichen. Das 
SPI-Peripheral ist ne andere Geschichte. Das wahr damals noch modelB+. 
Der Raspi 3 ist da an den GPIO's sicher nicht viel schzneller geworden, 
die sind eben nur für langsamen Handy-kram wie LED-blinken oder I2C/SPI 
gedacht. Das schafften acuh die Experten mit Kerneltreibern nicht 
schnell genug - ein Handy-SoC ist eben kein DSP.
Schau dir mal die Linksammlung unter
Hardwarenahe Programmierung am Raspberry Pi an, dort findet sich 
sicher eine genauere Beschreibung der erzielbaren Maximalwerte - wenn es 
dir gelingt 1 MHz für einen parallelen Bus zu erreichen wäre das schon 
ein kleines Wunder.

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