Hey zusammen, ich möchte Messwerte über SPI am Raspberry Pi einlesen. Da diese Zeitabhängig sind, würde ich gern wissen in wie fern diese tatsächlich äquidistant sind. Ich hatte mir dazu überlegt ein EYE-Diagram des SPI-Taktsignals anzulegen, bei 150 Mhz maximaltakt wird das Ganze aber schon recht sportlich. Warum findet man da eigentlich nichts im Internet zu ? Ich hätte gedacht, dass das schon mal Menschen vor mir untersuchen wollten. Oder habe ich da irgendwo ein Fehler in meinem Ansatz ?
Eis-x schrieb: > Oder habe ich da irgendwo ein Fehler in meinem Ansatz ? Was für ein Betriebssystem hast du denn auf deinem Raspberry Pi am laufen, um ausreichend echtzeitfähig zu sein?
Eis-x schrieb: > Oder habe ich da irgendwo ein Fehler in meinem Ansatz ? Ja. Der Raspi mit Linux ist kein Echtzeitsystem. Man könnte zwar messen, ob Taktsignale quarzgenau sind, nur sagt das über die Äquidistanz von Ereignissen praktisch nichts aus. Googel einfach mal mit Raspberry Echtzeit. Du bist nicht allein. Georg
Also mein AD-Wandler sameplt mit 500 kSps, meine Auflösung liegt bei 12 Bit. Bei 2 Byte pro Messwert komme ich also auf 16 MHz. also etwa einem zehntel der max. Taktrate. Die fehlende Echtzeitfähigkeit versuche ich durch DMA zu umgehen. Das macht das hier verwednete Raspbian (mit bcm835 treiber) ab einer Abfragengröße >96 Byte automatisch.
Korrektur: *der AD-Wandler samplet mit 1 MSps, daher auch die 16 Mhz Taktrate
Wie von anderen bereits angemerkt: Die Taktrate des SPIs leitet sich vom Systemtakt ab und ist recht genau. Anmerkung: Abhängig von deiner Anwendung kann es selbst bei Quarz getakteten Prozessoren zu messbaren Mischprodukten den Clock-Jitters in deinem ADC-Datenstrom kommen. Selbst in der Audiotechnik kann das ein massives Problem darstellen. Wenn du nun in deinem Linux einen SPI-Transfer startest läuft dieser wohl geordnet ab, im Rahmen der Taktpräzision des Raspis. Das Problem sind die Zeiten dazwischen, in denen dein Linux auch mal für einige Millisekunden sagen kann: "Ne. Ich mach jetzt was anderes." Da fehlt in diesem Fall die Echtzeitfähigkeit. Wenn du wirklich Echtzeitfähig sein willst, kannst du versuchen das auf dem Raspi mit Realtime Kernel etc hinzukriegen. Da liegen bei mir jetzt keine Erfahrungen vor. Ich würde eventuell einen zweiten Puffer-Controller zwischen Raspberry Pi und ADC hängen. Dieser wird dann low-level programmiert sodass er den AD-Wandler echtzeitfähig bedienen kann. Über ein weiteres SPI Interface kann dann das Raspberry Pi die Daten auslesen, ohne dass es an dieser Stelle zu größeren Echtzeitproblemen kommt. Man muss natürlich im externen uC soviel Speicher haben, dass nichts überläuft. Das sollte aber im Zeitalter des billigen Speichers kein Problem sein, zumahl der uC sonst ja nichts anderes tut.
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.