Kennt jemand ADS8327? Ist er wirklich SPI-kompatibel?

Gast #1999226
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?
Angehängte Dateien:
Gast #1999239
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.
Gast #1999639
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.
Angehängte Dateien:
Gast #1999994
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.
Gast #2000080
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.
Angehängte Dateien:
Gast #2000123
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...
Gast #2000163
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.
Gast #2000787
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
Angehängte Dateien:
#2009099
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.
Gast #2009181
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!!
Gast #2009310
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.
#2009499
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.
Gast #2009563
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.
Persönliche Seite #2009568
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.
Gast #2009624
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren