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


von noips (Gast)


Angehängte Dateien:

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?

von Sebastian (Gast)


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.

von noips (Gast)


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.

von XMEGA (Gast)


Angehängte Dateien:

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.

von noips (Gast)


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.

von noips (Gast)


Angehängte Dateien:

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.

von sepp (Gast)


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...

von noips (Gast)


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.

von noips (Gast)


Lesenswert?

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

von XMEGA (Gast)


Angehängte Dateien:

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

von noips (Gast)


Angehängte Dateien:

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?

von Rubelus (Gast)


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.

von noips (Gast)


Lesenswert?

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

Warum das?

von Edi R. (edi_r)


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.

von noips (Gast)


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!!

von noips (Gast)


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.

von Edi R. (edi_r)


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.

von noips (Gast)


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.

von Rufus Τ. F. (rufus) Benutzerseite


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.

von noips (Gast)


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.

von schnufff (Gast)


Lesenswert?

Hast du es jetzt eigentlich hinbekommen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.