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?
SPI ist zu langsam. Es geht um 3 ADCs mit 16 Bit Auflösung und min. 1 MSPS.
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
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.