Forum: PC-Programmierung Raspberry Pi 3 GPIO/UART Datenrate


von M. M. (blackcow)


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?

von TestX (Gast)


Lesenswert?

Nimm einen spi adc..

von M. M. (blackcow)


Lesenswert?

SPI ist zu langsam. Es geht um 3 ADCs mit 16 Bit Auflösung und min. 1 
MSPS.

von (prx) A. K. (prx)


Lesenswert?

Kameraschnittstelle?

: Bearbeitet durch User
von Timmo H. (masterfx)


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.

: Bearbeitet durch User
von Christian R. (supachris)


Lesenswert?

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.

von asd (Gast)


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

von M. M. (blackcow)


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.

von Bitwurschtler (Gast)


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.

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.