Hallo Forum, ich schreibe immer noch an meiner Diplomarbeit über Rogowski Stromsensoren (dazu gab's schonmal einen Thread: Beitrag "100kHz Signal analog einlesen (16bit) und verarbeiten" )und wäre froh über eure Meinung zu folgendem Thema: Mir steht ein AD7671 A/D Wandler von Analog Devices mit Eval board zur Verfügung (16bit, bipolarer Eingang, SPI und paralleles Interface, 1MSPS). Jetzt geht es darum, den Baustein möglichst schnell mit einem TMS320F2808 Controller auszulesen (und die Abtastrate bestmöglich auszunutzen). Der Plan war bisher dafür SPI zu nehmen, wobei die Taktrate bei SPI bei dem TMS320F2808 auf 12,5Mhz begrenzt ist - selbst im Idealfall könnte ich damit also bei 16bit nur noch mit 781KSPS fahren. Drum liegt die Überlegung nahe den Wert über einen 16bit breiten Bus über die GPIO Eingänge einzulesen. Ein Mitarbeiter von Texas Instruments hat mir vor einiger Zeit von dem Gedanken abgeraten weil es unterm Strich länger dauern würde wie das Einlesen mit SPI - warum konnte ich leider nicht nachvollziehen - welche Meinung habt Ihr dazu? Viele Grüße und ein schönes Wochenende!! Christian
Hallo Christian, ein Ansprechen des Wandlers mit einem GPIO-Port sieht ja etwa so aus: Adresse anlegen Read Strobe low Daten auslesen Read Strobe high Das benötigt also mindestens 4 CPU Takte. Bei jedem solchen Vorgang werden 16 Bit übertragen. Mit (angenommen) 60 MHz CPU-Takt kommt man damit auf eine Datenrate von 16 Bit * 15M / Sekunde = 240 MBit/Sekunde. Das ist deutlich über den 12,5 MBit/Sekunde. Man muss nätürlich bedenken, dass die CPU in der Zeit der Datenübertragung nichts anderes mehr macht als GPIOs zu schalten. Bei 1 MSps wird dadurch mindestens 1/15 der Rechenleistung verbraucht. Hier ist das Speichern der Daten noch nicht mitgerechnet. Nun ist mir aber noch nicht ganz klar, wie man auf die 12,5 MHz (maximaler SPI Takt) kommt. Der LSPCLK Takt darf maximal 100 MHz sein und der SPI Takt ist maximal ein Viertel davon, also 25 MHz. Warum ist das nicht möglich? Grüße, Peter
Hallo Peter, herzlichen Dank für deine ausführliche Antwort!! Ich bin nach Aussage des Datenblatts (TMS320F2808) auf die 12.5Mhz gekommen - hier wird folgendes empfohlen: Internal clock prescalers must be adjusted such that the SPI clock speed is limited to the following SPI clock rate: Master mode transmit 25-MHz MAX, master mode receive 12.5-MHz MAX Slave mode transmit 12.5-MAX, slave mode receive 12.5-MHz MAX. Hast du Erfahrung mit "Übertakten"? Jetzt hab ich nur mal einen SPI Clock mit 15Mhz generiert und das Signal ist schon stark verschliffen (die Controllerpins gehen ca. 3cm über eine Leiterplatte, dann direkt auf eine Stiftleiste und von dort aus greif ich sie mit meinem Tektronix Tastkopf ab - vielleicht nicht optimal aber auch keine besonders lange Leitung) Weiterer Vorteil des parallelen Auslesens ist die höhere Genauigkeit des AD Wandlers: Wenn der Wandler gerade die LSB bits bestimmt im "analog Teil" und währenddessen noch SPI CLK läuft führt dies zu Ungenauigkeiten beim eingelesenen Wert (so stehts sinngemäß im Datenblatt). Viele Grüße Christian
Den Abschnitt mit der Einschränkung auf 12.5 MHz habe ich übersehen. Andererseits ist das Senden mit 25 MHz erlaubt und damit man etwas empfangen kann, muss man ja auch senden. Also das geht ja normal so, dass man in das Senderegister schreibt, dieses Wort wird dann gesendet und gleichzeitig wird die Antwort in das Empfangsregister geschoben. Damit empfängt man ja zwangsläufig, wenn man sendet. Auch bei 25 MHz Takt. Die Frage ist ja nur, wie zuverlässig die Daten dann sind. Ich würde das einfach mal ausprobieren. Selbst habe ich das noch nicht getestet, das Ergebnis würde mich aber durchaus interessieren. Grüße, Peter
Hallo Peter, vielen Dank für deine Meinung!! Ich verfolge im Moment das Konzept mit dem parallelen auslesen - konnte es leider noch nicht testen weil ich den Baustein noch nicht habe!! Viele Grüße Christian
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.