mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP 16bit A/D Wandler mit TMS320F2808 - mit SPI Bus oder Parallel auslesen


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.