Forum: Mikrocontroller und Digitale Elektronik ADS1299 - DRDY reagiert auf SPI obwohl CS nicht aktiv


von Adam P. (adamap)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

da ich dazu keine zufriedenstellende Antwort im Datenblatt finde, hoffe 
ich, dass einer von euch einen Hinweis hat.

Der TI support hatte auch keine Ahnung!

Ich habe 3x ADS1299 AD-Wandler. Diese sind in der Standard-Konfig., 
sprich ohne Daisy-Chain.

Soweit funktioniert alles, DRDY läuft synchron.

Problem:
Egal welchen Chip ich nun abfrage, die beiden anderen Chips setzen 
ebenfalls ihr DRDY Signal auf high. So als hätte der CS dabei gar keine 
Bedeutung.
Klar, die Daten liefert nur der Chip mit CS, aber warum wechseln die 
beiden anderen ebenfalls in den Zustand (Daten noch nicht bereit).

Übersehe ich da etwas.

Anbei ein Mitschnitt.
- rot, orange, gelb: Der Zeitpunkt wo ich den jeweiligen CS setze und 
lese
- grün , blau, violett: Zustand des jeweiligen DRDY Signals

von Wolfgang (Gast)


Lesenswert?

\CS bezieht sich beim ADS1299 IMHO nur auf die SPI-Schnittstelle, aber 
nicht auf Start und \DataReady (Blockschaltbild Fig. 9.2 auf S. 19 im 
DS)

von Jim M. (turboj)


Lesenswert?

Adam P. schrieb:
> Egal welchen Chip ich nun abfrage, die beiden anderen Chips setzen
> ebenfalls ihr DRDY Signal auf high. So als hätte der CS dabei gar keine
> Bedeutung.

Äh, DRDY ist aktiv low. Das muss währen des Samplens high sein und sieht 
bei Dir merkwürdig aus - als wäre automatisches Triggering mit hoher 
Datenrate an.

> - rot, orange, gelb: Der Zeitpunkt wo ich den jeweiligen CS setze und
> lese

Es wäre besser gewesen diese Signale direkt abzugreifen. Falls Du das 
bereits tust: Auch diese Signale sind aktiv low und wären dann total 
falsch.

Ansonsten: Schaltplan, bitte.

von Adam P. (adamap)


Lesenswert?

Jim M. schrieb:
> Äh, DRDY ist aktiv low. Das muss währen des Samplens high sein und sieht
> bei Dir merkwürdig aus - als wäre automatisches Triggering mit hoher
> Datenrate an.

Ja, das ist mir bewusst.
DRDY ist aktiv low.
Das Sampling läuft mit 4k und auch kontinuierlich...die Pause/erste 
Sampling nach jedem START wäre zeitlich nicht machbar (zu lange).

Jim M. schrieb:
> Es wäre besser gewesen diese Signale direkt abzugreifen.

Dabei handelt es sich nicht um den CS, sondern um meinen Task 
(Funktion).
Desalb heißen die Kanäle ja "ADS x read" und nicht "ADS x CS".

...das alles ist aber auch nicht das Problem.

Ich hätte einfach nicht (wie Wolfgang sagte) gedacht, dass sich die 
anderen Chips angesprochen fühlen und somit ihren Status von DRDY zu (ah 
ich bin noch am sampeln) ändern, obwohl ich die gar nicht 
anspreche...somit muss ich nun immer warten, obwohl es eigentlich vom 
prinzip gar nicht nötig wäre.

edit:
Ich muss die 3 Chips jede 1ms abfragen.
Würden die anderen Chips ihren Status nicht mitändern, dann würde auch 
eine Config. der Chips mit 1kHz/2kHz wohl ausreichen, aber so ist es 
dann die Sampling-Zeit zu lang, wenn die anderen sich immer mit 
angesprochen fühlen und neu beginnen.

Hätte TI meiner Meinung nach anders umsetzen sollen...
CS ist nun mal für mich CS und nicht nur für Datenkommunikation.

Also beleiben mir wohl nur 2 Möglichkeiten:
- es so belassen mit dem "Oversampling"
- oder Umbau auf Daisy-Chain

Sehe ich das richtig?

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Adam P. schrieb:
> Hätte TI meiner Meinung nach anders umsetzen sollen...
> CS ist nun mal für mich CS und nicht nur für Datenkommunikation.

CS heißt bei SPI immer CS, nicht ahnend, dass ein Hersteller auf die 
Idee kommt, den Chip nicht nur über SPI zu steuern ;-)

Zum Glück gibt es Datenblätter und Blockschaltbilder, aus denen man 
soetwas ablesen kann ...

von Adam P. (adamap)


Lesenswert?

Wolfgang schrieb:
> CS heißt bei SPI immer CS, nicht ahnend, dass ein Hersteller auf die
> Idee kommt, den Chip nicht nur über SPI zu steuern ;-)
>
> Zum Glück gibt es Datenblätter und Blockschaltbilder, aus denen man
> soetwas ablesen kann ...

Ja ok...dass würde ich ja alles einsehen, ergibt ja auch alles Sinn -
und doch ist es ein Widerspruch in sich!

Wenn CS lediglich für SPI ist, was ja auch ok ist, dann sollten Chips 
die nicht "selected" sind, dass SPI auch ignorieren...und nicht trotzdem 
ihren Status ändern (DRDY Signal).

edit:
Im Datenblatt steht, DRDY ändert den Status zu high beim ersten Takt-bit 
von SPI & wenn SPI nur bei CS gilt - folgt der Logik nach:

Kein CS, kein SPI, keine Änderung an DRDY.

Wenn ein Datentransfer per SPI nicht per CS für diesen Chip gedacht ist, 
sollte diese Änderung nicht eintreffen...

Daran ist doch alles logisch.

Wolfgang schrieb:
> auf die Idee kommt, den Chip nicht nur über SPI zu steuern

Man kann ihn starten, stoppen, reseten, aber SPI braucht man nun mal um 
die Daten auszulesen und da sollten sich andere Chips nicht angesprochen 
fühlen. ;-)

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Adam P. schrieb:
> ... und nicht trotzdem ihren Status ändern (DRDY Signal).

Sag das TI. Die werden das Verhalten gerne für dich ändern, wenn du 
ihnen einen Liefer-Rahmenvertrag anbietest, den sie nicht ablehnen 
wollen.

Im Datenblatt steht "The CS signal has no effect on the data ready 
signal". Und Recht scheint es zu haben - beschwere dich nicht.

Beitrag #5159650 wurde vom Autor gelöscht.
von Adam P. (adamap)


Lesenswert?

...OK, nun seh ich es auch.

Vielen Dank!

Hätte es so jedoch nicht erwartet, ist unschön in der Handhabung - 
bringt nur Zeitverzögerungen.

edit:
Und doch verwirrend - unter der Grafik steht:
"Figure 41. DRDY with Data Retrieval (CS = 0)"

somit doch mit CS.

Ich werde es nun mal so hinnehmen und das beste drauß machen...
danke Wolfgang.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Adam P. schrieb:
> Und doch verwirrend - unter der Grafik steht:
> "Figure 41. DRDY with Data Retrieval (CS = 0)"
>
> somit doch mit CS.

Ist doch alles gut. Halte mal Wandler und SPI auseinander. Ohne CS wird 
aus DOUT nichts raus kommen. Und ohne DRDY hat der Wandler nichts 
(gültiges?), was mit der steigende Flanke von SCLK für die SPI-Ausgabe 
ins Latch übernommen werden könnte.

von Jim M. (turboj)


Lesenswert?

Adam P. schrieb:
> Egal welchen Chip ich nun abfrage, die beiden anderen Chips setzen
> ebenfalls ihr DRDY Signal auf high. So als hätte der CS dabei gar keine
> Bedeutung.

Schau Dir doch mal Figure 36 im ADS1299 Datenblatt an. Der nDRDY geht 
beim Samplen kurz hoch, damit neue Daten per fallender Flanke 
signalisiert werden können. Da passiert auch ganz ohne jedes Lesen der 
Daten.

von Adam P. (adamap)


Lesenswert?

Jim M. schrieb:
> Da passiert auch ganz ohne jedes Lesen der
> Daten.

Ja das stimmt und funktioniert auch so, wenn ich nicht lesen.
ABER:

Angenommen, dieser Impuls kommt alle 10ms und das Sampling würde 3ms 
dauern, dann sieht es wie folgt aus wenn ich doch lese:

0ms: Impuls
...
5ms: lese Chip#1 (ALLE Chips ziehen DRDY nach high)
6ms: alle high
7ms: alle high
8ms: DRDY wechsel zu low (aller Chips)
8/9ms: alle wieder low und ich kann nun erst Chip#2 lesen, da dieser 
durch das lesen von Chip#1 ebenfalls neu zu sampeln begonnen hat.
-> Wie auf meinem Screenshot zu sehen.

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.