Problem mit SPI

Gast #1452381
Lesenswert?
• ▲
▼
Hallo Leute,

ich habe ein kleines Problem mit der Bedienung einer SPI-Schnittstelle. 
Ich haben einen A/D-Wandler an einen XC167CI angeschlossen, und will von 
diesem nun die Werte auslesen. Hier erst mal das Datenblatt des 
ICs(serielle Schnittstell: S. 28ff):
www.analog.com/static/imported-files/data_sheets/AD2S1210.pdf

Mein Problem besteht nun darin, dass der A/D-Wandler ja insgesamt 3 Byte 
an den XC167 schicken will. Dafür braucht er aber die ganze Zeit den 
Takt des Masters, und der wird doch nur erzeugt, wenn der Master auch 
was sendet, oder lieg ich da falsch?

Bis jetzt hab ich folgenden Code:


SSC0_BR = 0x0013;
SSC0_CON = 0x4078;
SSC0_CON |= 0x8000; //einschalten

while(1)
{
  P3_P7 = 0;                //Sample low
  P3_P7 = 1;    //Sample high

  P3_P6 = 0;               //WR low
  SSC0_TB = 0xFF;          //irgendwas schicken
  while(!SSC0_CON_BSY);    //warten bis "busy" erkannt wurde
  while(SSC0_CON_BSY);     //warten bis "busy" vorbei
  P3_P6 = 1;               //WR high
}


Das funktioniert soweit auch ganz gut, nur dass der A/D-Wandler leider 
immer nur das erste Byte schickt.
Hat jemand vielleicht eine Idee??

Viele Grüße

Michael
Gast #1452390
Lesenswert?
• ▲
▼
Hallo Michael,

ich kenn zwar den Controller und den AD-Wandler nicht. Aber warum 
schickst du nicht noch zwei Dummy Bytes (zB 2x FF) an den AD-Wandler. 
Bei einem aktuellen Projekt setzen wir den ADS1256 von TI zusammen mit 
nem MSP430 ein, und da klappt das so prima.

Gruß
Rainer
Gast #1455288
Lesenswert?
• ▲
▼
Hallo,

danke erstmal für die schnelle Antwort. Die Kommunikation mit dem ADC 
klappt soweit schon ganz gut, nur ein Problem hab ich noch.
Wenn ich die drei Dummy-Bytes schicke und das WR Signal auf low halte 
kommen die Daten rüber. Leider ist das MSB aber immer fest auf einem 
Wert. Wenn ich immer im "Normal-Mode" bin dann ist das MSB immer auf 
low, wenn ich aber zuvor im "Configuration-Mode" ein Register gelesen 
oder geschrieben habe und anschließend im "Normal-Mode" wieder die 
Position lesen will, dann ist das MSB immer auf high.
Hat jemand vielleicht schon mal ein ähnliches Problem gehabt?
Am Eingangssignal kann es meiner Meinung nach nicht liegen, da im 
Parallel-Betrieb alles einwandfrei läuft.

Gruß

Michael

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.