www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit SPI


Autor: Michael (Gast)
Datum:

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

Autor: Rainer (Gast)
Datum:

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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Aber warum schickst du nicht noch zwei Dummy Bytes (zB 2x FF) an den >AD-Wandler.

Ist wohl das Standard-Verfahren bei SPI-Abfragen...

Autor: Michael (Gast)
Datum:

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

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.