Forum: PC-Programmierung FT2232H: USB --> SPI Kommunikationsfehler


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Lukas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche im Rahmen einer Studienarbeit einen AD-Wandler mit 
SPI-Schnittstelle mit dem PC anzusprechen und zu steuern.
Deshalb habe ich ein FT2232H Mini Module gekauft.

Ich verzweifle an der Programmierung. An sich habe ich den Vorgang und 
den Ablauf verstanden, er funktioniert nur nicht.
Ich versuche im Moment als erstes mit einer Brücke zwischen MOSI und 
MISO einen Loopback zu erzeugen und meine gesendeten Daten wieder 
einzulesen. Das klappt nicht.

Hier die Fakten:
- Programmierung direkt mit der D2XX_Net (also ohne vorgefertigte 
Libary)
- Hardwareaufbau wurde mehrfach geprüft
- Wenn ein Byte gesendet wurde, bekomme ich immer "FA" und das gesendete 
Byte zurück --> Der uC denkt, dass es sich um einen Befehl handelt, 
erkennt also nicht, dass ich Daten senden möchte. Hier muss irgendwo der 
Fehler liegen.
- Programierung erfolgt in C#, da später ein automatisierter Ablauf mit 
mehreren Kommunikationsschnittstellen mit graphischer Überwachung am 
Bildschirm realisiert werden soll.

Im Anhang habe ich die relevanten Codeelemente zusammenkopiert.
Wenn noch Infos fehlen, bitte nachfragen!

Ich danke euch schonmal im Vorhinein für eure Mühen, mir bei meinem 
Problem zu helfen!

Gruß
Lukas

: Bearbeitet durch Moderator
von Gustl B. (-gb-)


Bewertung
0 lesenswert
nicht lesenswert
Lukas schrieb:
> AD-Wandler mit
> SPI-Schnittstelle

Welchen denn? Oft übertragen die keine Bytes, sondern mehr als 8 Bits 
und man muss auch nicht von einer Adresse lesen sondern nur die 
Convert/Chipselect und eine Clock anlegen. Im Datenblatt ist bestimmt 
ein Timing abgebildet, hast Du das eingehalten? Was sagt der 
Logicanalyzer/Oszi?

Lukas schrieb:
> Ich versuche im Moment als erstes mit einer Brücke zwischen MOSI und
> MISO einen Loopback zu erzeugen und meine gesendeten Daten wieder
> einzulesen. Das klappt nicht.

Müsste das funktionieren? Kann SPI gleichzeitig senden und empfangen?

: Bearbeitet durch User
von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Gustl B. schrieb:
> Kann SPI gleichzeitig senden und empfangen?

Es kann gar nicht anders.

von Gustl B. (-gb-)


Bewertung
0 lesenswert
nicht lesenswert
Ist das jetzt eine Spitzfindigkeit? Ich kenne SPI nur so wie hier im 
Bildchen: http://www.corelis.com/images/screenshots/spi-read-command.jpg 
Betrachtest Du das Anlegen einer Clock schon als Senden?

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Nein, das ist keine Spitzfindigkeit. Die von Dir dargestellte 
SPI-Variante ist schon eher eine Ausnahme; SPI sendet und empfängt 
gleichzeitig. Und ja, gesendet wird, sobald ein Takt anliegt, synchron 
zum Takt, ein Bit pro Zyklus.

Du hast da ein "intelligentes" Gerät, das erst antwortet, wenn es ein 
Kommando ("Instruction") erkennt, das ist also schon ein Protokoll, das 
über SPI abgewickelt wird.

Die SPI-Hardware in Deinem µC aber wird nichts davon wissen, die 
empfängt synchron mit dem Senden eines Bytes ein Byte (oder welche 
Wortgröße auch immer sie überträgt).

Wenn Du ein simples Schieberegister per SPI ansteuerst, wird es 
vielleicht klarer, das hat keine Kommandos, Adressen o.ä.

von Gustl B. (-gb-)


Bewertung
0 lesenswert
nicht lesenswert
OK, habe ich bisher noch nicht gesehen. Bisher habe ich einen ADXL362, 
einen LIS3DH und diverse SPI ADCs angesprochen wie den LTC2325, bei den 
ADCs wird sogar nur empfangen siehe 
http://cds.linear.com/docs/en/datasheet/232516fa.pdf ab Seite 14.

Ich denke daher dass je nach ADC wird er mit einem SPI wie er es mit dem 
FT2232H betreiben kann nicht weiter kommen.

von Lukas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
So, die SPI-Kommunikation läuft seit ein paar tagen. Ich poste meinen 
Quellcode sobald ich ihn richtig kommentiert und formatiert habe.

Das nächste Problem ist jetzt aber der ADC: Das ID-Register kann ich 
richtig auslesen, alles andere Funktioniert nicht richtig.
Ich bin hier echt langsam am Verzweifeln :(

von Gustl B. (-gb-)


Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es mit mehr Information? Welcher ADC ist es denn?

von Lukas (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Es handelt sich um einen AD7176-2.

Das Problem hat sich aber nach einem Tag knobeln auch schon wieder 
erledigt. Eine falsche Registereinstellung hatte einen Error 
hervorgerufen.

(für alle, die es interessiert):
Anbei ist mein Code zur SPI-Kommunikation.

Gruß
Lukas

: Bearbeitet durch Moderator

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]
  • [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.