mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kennt jemand ADS8327? Ist er wirklich SPI-kompatibel?


Autor: noips (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

hat jemand schom mal mit dem Wandler ADS8327 was gemacht? Ich teste den 
gerade und stelle fest, dass er wohl nicht SPI-kompatibel ist. Der 
schreibt die Daten auf SDO bei der fallenden Flanke und liest die 
Input-Daten am SDI ebenfalls bei der fallender Flanke. Beim richtgen SPI 
müsste er doch bei der steig. Flanke lesen, wenn er bei der fallender 
schreibt, sehe ich es richtig?

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na ja, normalerweise kennt man bei SPI zwei Parameter, Clock Phase 
(CPHA) und Clock Polarity (CPOL). Ich würde mal versuchsweise das 
CPHA-Bit ändern, falls der verwendete Mikro dies unterstützt.

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soweit ich es verstehe verhält sich SPI bei keiner der 4 möglichen 
Kombinationen von CPHA und CPOL so wie der oben beschriebene Wandler.

Autor: XMEGA (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

noips schrieb:
> Soweit ich es verstehe verhält sich SPI bei keiner der 4 möglichen

siehe Bild, so soll es sein. Laut Datenblatt hat der AD-Wandler ein 
normales  SPI Protokoll. Bei fallender Flanke werden MOSI/MISO ein- bzw. 
ausgelesen.

Lege mal an CS/SS einen Widerstand mit ca. 10K gegen Plus und  fahre den 
CS/SS vor jeder Wandlung gegen Low. Nach erfolgter Wandlung (auto oder 
per Software) wieder hoch. CLK Timing sollte bei 50 MHZ SPI-TAKT  auch 
kein Problem darstellen.

Kontrolliere mit einem Frequenzmesser oder OSZI ob am SCLK 16 Impulse 
durchgeschoben wurden.

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
XMEGA schrieb:
> Bei fallender Flanke werden MOSI/MISO ein- bzw.
> ausgelesen.

Ja, so sollte das bei SPI sein. Aber das stimmt nicht überein mit der 
folgenden Beschreibung im Dattenblatt auf Seite 29 Abschnitt DIGITAL 
INTERFACE, 1. Absatz:

Output data are changed at the falling edge of SCLK so
that the host processor can read it at the next rising edge. Serial data 
input is latched at the falling edge of
SCLK.

Autor: noips (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Entsprechend der Beschreibung im Datenblatt (siehe mein vorheriger 
Beitrag) schreibt der Baustein die Daten auf SDO (MISO) bei fallender 
Flanke und liest Daten auf SDI (MOSI) ebenfalls bei fallender Flanke. 
Und das ist kein Standard-SPI. Bei SPI (siehe angehängtes Timing-Diagram 
von Wikipedia) passiert das Lesen und Schreiben immer bei 
unterschiedlichen Flanken, z.B. lesen bei fallender und schreiben bei 
steigender Flanke oder umgekehrt. Somit ist der Baustein nicht von 
Controllern mit Standard-SPI ansprechbar, obwohl unter Features sthet, 
dass er SPI-kompatibel ist.

Autor: sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der ADS8327  ist SPI kompatibel.
 Die Figure-5 des Datenblatts enthält ein ausführliches SPI Timing 
Diagramm, das hilft dir vielleicht mehr als die prosa Beschreibung.

Anstatt Wikipedia würde ich dir auch empfehlen in das Datasheet deines 
SPI Masters zu schauen.

Ansonsten solange mit Clock Phase und Polarität spielen, bis es geht. 
Sind ja nur vier möglichkeiten...

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sepp schrieb:
> Die Figure-5 des Datenblatts enthält ein ausführliches SPI Timing
> Diagramm, das hilft dir vielleicht mehr als die prosa Beschreibung.

Figure-5 habe ich natürlich davor schon angeschaut. Das im Diagramm 
gezeigte Verhalten stimmt aber auch genau mit Prosa-Beschreibung 
überein. Man sieht eindeutig, dass SDO-Daten bei fall. Flanke geändert 
werden und SDI-Daten ebenfalls bei fall. Flanke gelesen werden.

sepp schrieb:
> Anstatt Wikipedia würde ich dir auch empfehlen in das Datasheet deines
> SPI Masters zu schauen.
Da bestehen auch keine Unterschiede, SPI ist immer das gleiche 
(abgesehen davon, dass manche Controller die Parameter (CPOL, CPHA) 
invertiert interpretieren.

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Scheint wohl niemand hier damit Erfahrungen gemacht zu haben. Ich 
dachte, der Wandler wäre verbreitet.

Autor: XMEGA (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Servus,


noips schrieb:
> Scheint wohl niemand hier damit Erfahrungen gemacht zu haben. Ich
> dachte, der Wandler wäre verbreitet.

mach dir keine Gedanken über das Protokoll, das stimmt 100 prozentig!
Ich verwende  mehrere AD-Wandlern(zuletzt den LTC2418 24 Bit, DAC 
LTC1655) und da macht das SPI Protokoll auch kein Problem.

Der von dir geschilderte Text aus dem Datenblatt ist wo möglich falsch 
interpretiert.

Die Initialisierung könnte da schon ein größeres Problem darstellen.
Die sind von Firma zu Firma unterschiedlich!

und... ich lese nichts von diversen Messungen oder Pegel  an bestimmten 
Pin's

Stimmt die Hardware? PORT-Init? usw.


Gruß XMEGA

Autor: noips (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Was sagt ihr denn zu diesem Scope-Bild. Das ist ein Screen-Shot der 
Signale von dem ADS8327.

gelb - CS
grün - SCKL
rot  - SDI
blau - SDO

Sind die Signale SPI-kompatibel? Und wenn ja, welche Werte für Parameter 
CPHA und CPOL sind hier gültig?

Autor: Rubelus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht aber allgemein sehr "unsauber" aus.. Welche Auflösung hast du denn 
an deinem Scope eingestellt? Sollte das eine 5V Auflösung sein, dann 
dringend Pullups an die Leitung.

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Sollte das eine 5V Auflösung sein, dann
> dringend Pullups an die Leitung.

Warum das?

Autor: Edi R. (edi_r)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rubelus meint, weil HIGH nicht bis zur Rasterlinie geht. Möglicherweise 
ist die Versorgung aber auch 3,3V, dann ist der Hinweis von Rubelus 
sowieso hinfällig. Die Flanken schauen jedenfalls schnell genug aus.

Zur Frage: Nachdem CLK im Idle-Zustand LO ist, ist CPOL = 0. SDI (rot) 
ist der Eingang des ADC, SDO ist der Ausgang des ADC. Die Daten müssen 
mit der fallenden Flanke von CLK übernommen werden, also CPHA = 1. Das 
ist dann Modus 1, was meiner Ansicht nach sehr häufig vorkommt.

Nachdem der SPI-Master (Controller) die SDO-Daten gleichzeitig mit der 
fallenden CLK-Flanke (oder sogar kurz vorher) liest und der ADC die 
SDO-Leitung frühestens nach der fallenden CLK-Flanke ändert, wird es 
da keine Verständnisprobleme geben. Diese Feinheiten sieht man im 
Oszillogramm natürlich nicht.

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Rubelus meint, weil HIGH nicht bis zur Rasterlinie geht. Möglicherweise
> ist die Versorgung aber auch 3,3V, dann ist der Hinweis von Rubelus
> sowieso hinfällig. Die Flanken schauen jedenfalls schnell genug aus.

Scope-Auflösung ist 5V/div
Versorgungsspannung ist aber 3,3V

> Nachdem der SPI-Master (Controller) die SDO-Daten gleichzeitig mit der
> fallenden CLK-Flanke (oder sogar kurz vorher) liest und der ADC die
> SDO-Leitung frühestens nach der fallenden CLK-Flanke ändert, wird es
> da keine Verständnisprobleme geben. Diese Feinheiten sieht man im
> Oszillogramm natürlich nicht.

OK, das ist einleuchtend, besten Dank! Mich irritierte, dass der Wandler 
die Daten bei fall. Flanke liest und ebenso bei fall. Flanke 
aktualiesiert. Bei Standard-SPI ist es ja so, dass wenn der Slave die 
Daten bei fallender Flanke liest, so soll er bei steigender Flanke 
aktualisieren, weil der Master ja auch bei fallender Flanke liest.

Vielen Dank allen für die Antworten!!

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nachdem der SPI-Master (Controller) die SDO-Daten gleichzeitig mit der
> fallenden CLK-Flanke (oder sogar kurz vorher) liest

Allerdings braucht der Controller ja eine Haltezeit (hold time), 
innerhalb welcher die Daten nach der Taktflanke gehalten werden müssen, 
damit der Controller sie noch einlesen kann. Wenn der ADC die Daten nach 
der Flanke schneller ändert als diese Haltezeit des Controllers, dann 
kann es sehr wohl Verständnisprobleme geben.

Autor: Edi R. (edi_r)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast recht, im Datenblatt des ATmega84/88/168 (Atmel), den ich mal 
als Beispiel herausgezogen habe, steht als Hold Time für die 
Hardware-SPI 10 ns (typ) drin. Der PIC16F88 (Microchip) ist da mit 100 
ns sogar noch schlechter. Dagegen kann der ADS8327 seine Ausgangsdaten 
in 8 ns (min) ändern. Das kann tatsächlich knapp werden.

Ich bin also mit Dir der Ansicht, dass der ADS8327 (und der AD7949, den 
ich selber einsetze, und möglicherweise auch noch andere Bausteine von 
Analog Devices) nicht so arbeiten, wie es bei SPI üblich ist, d. h. 
bei der einen Flanke die Daten einstellen, bei der anderen Flanke lesen.

Mit Software-SPI wäre man dabei fein raus, weil man dann wirklich vor 
der Clock-Flanke lesen kann, aber schließlich will man ja die Hardware 
nutzen, wenn sie schon da ist.

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Edi R. schrieb:
> Ich bin also mit Dir der Ansicht, dass der ADS8327 (und der AD7949, den
> ich selber einsetze, und möglicherweise auch noch andere Bausteine von
> Analog Devices) nicht so arbeiten, wie es bei SPI üblich ist, d. h.
> bei der einen Flanke die Daten einstellen, bei der anderen Flanke lesen.

Danke schön! Endlich versteht jemand was ich meine und teilt meine 
Ansicht! Davor haben ja alle "geschrieen", keine Sorge, der Baustein sei 
100% kompatibel, ich soll es nur richtig machen.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noips schrieb:
>> Ich bin also mit Dir der Ansicht, dass der ADS8327 (und der AD7949, den
>> ich selber einsetze, und möglicherweise auch noch andere Bausteine von
>> Analog Devices) nicht so arbeiten, wie es bei SPI üblich ist, d. h.
>> bei der einen Flanke die Daten einstellen, bei der anderen Flanke lesen.

Genau das aber steht doch da:

noips schrieb:
> Output data are changed at the falling edge of SCLK so
> that the host processor can read it at the next rising edge. Serial data
> input is latched at the falling edge of
> SCLK.

Gelesen wird mit der fallenden Flanke, und die Daten werden so 
ausgegeben, daß die Gegenseite sie mit der (folgenden) steigenden Flanke 
übernehmen kann.

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hier

> bei der einen Flanke die Daten einstellen, bei der anderen Flanke lesen

gilt gleichzeitig für Master und Slave, d. h. wenn der Master bei 
steigend liest und bei fallend einstellt, so tut dies der Slave genauso.

Deswegen stimmt das mit dem hier

> Gelesen wird mit der fallenden Flanke, und die Daten werden so
> ausgegeben, daß die Gegenseite sie mit der (folgenden) steigenden Flanke
> übernehmen kann.

nicht überein. Denn wenn bei fallend gelesen wird, so müssen die Daten 
so ausgegeben werden, dass die Gegenseit sie ebenfalls bei fallend 
übernehmen kann.

Autor: schnufff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du es jetzt eigentlich hinbekommen?

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.