Forum: Mikrocontroller und Digitale Elektronik ADC Daisy Chain


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Volkmar S. (voschi)


Lesenswert?

Hallo,

der einkanalige ADC MCP33131D-10 von Microchip (16Bit, 1MS/s) ist ein 
relativ kostengünstiges Bauteil, und es ist zu prüfen, ob er in einem 
zweikanaligen Messsystem (Strom, Spannung) einsetzbar ist.
Der diesbezügliche host-µC hat nur ein SPI-Interface.

Nun meine Frage:

Ist es möglich, den MCP33131D-10-I_MS im daisy chain mode zu betreiben?
Das Datenblatt für diesen ADC enthält keine Informationen zu diese 
Problematik.

Die Funktion des SDI PINs ist unklar. Das Datenblatt sagt: SDI : 
SPI-compatible serial data digital input. Tie to DVIO for normal 
operation.

Wohin soll das PIN denn in anderen Betriebsarten verbunden werden?
Die Beschreibung anderer Betriebsarten habe ich im Datenblatt nicht 
gefunden. Im Datenblatt des AD7686 von Analog Devices beispielsweise 
sind die Betriebsarten ausführlich beschrieben.

Für eine Antwort, die zur Klärung beiträgt, wäre ich dankbar

voschi

von Peter D. (peda)


Lesenswert?

Für daisy chain muß es einen Mode geben, die Auslesungen aller 
vorherigen ADCs durchzureichen.
Ist sowas nicht im DB angegeben, geht es auch nicht.

von Frank O. (frank_o)


Lesenswert?

Volkmar S. schrieb:
> Tie to DVIO for normal
> operation.

Da muss noch davor etwas stehen, dass du mit diesem Pin verbinden 
sollst.

von Volkmar S. (voschi)


Lesenswert?

Hallo Peter,

habs mir schon gedacht, dass mit dem ADC kein daisy chain mode möglich 
ist. Wahrscheinlich ist er deshalb auch so preiswert. Daisy chain setzt 
- wenn ich das so richtig verstanden habe -  Schieberegister voraus, und 
wenn die nicht auf dem Chip implementiert sind, geht daisy chain nicht. 
Trotzdem, die Angaben im DB bezüglich des SDI-Pins sind unklar. Im 
Normalbetrieb soll es mit DVIO verbunden werden, wohin aber in 
"unnormalem" Betrieb und was ist "unnormaler" Betrieb?
Im Microchip-Forum kommt keine Antwort auf meine dort auch gestellte 
Frage.

voschi

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Volkmar S. schrieb:
> Die Funktion des SDI PINs ist unklar.
Da ist das Datenblatt grauenhaft schlecht, völlig informations- und 
nutzlos. Vor der Verwendung dieses Bausteins würde ich erst mal beim FAE
gründlich auf den Busch klopfen und hören, was da runterfällt.

Aber was das Datenblatt klarstellt, ist, dass sich der Pegel während der 
Wandlung bzw. Übertragung auf high befinden muss. Also darf dort mit 
Sicherheit kein SDO eines anderen Bauteils dran rumzappeln.

Fazit: aus der Traum von der Chain.

von Florian L. (muut) Benutzerseite


Lesenswert?

So wie ich das lese könnten zwei dieser Bausteine möglich sein. SCK und 
SDO parallel. CS jeweils separat. Wenn inaktiv, ist die jeweilige SDO 
Leitung hochohmig.

von Hannes (taurus16)


Lesenswert?

Moin,
du darfst halt netterweise ein ganzes SPI Interface an den ADC 
anschließen und parallel andere SPI Geräte.

CNVST dient als CS (steigende Flanke startet den ADC und sinkende Flanke 
macht das Interface an).

Du kannst also einfach 2 ADCs parallel an deine SPI hängen und brauchst 
dann 2 CS (pro CNVST einen).

Gruß
Hannes

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Florian L. schrieb:
> So wie ich das lese könnten zwei dieser Bausteine möglich sein.
Es könnten wie bei SPI üblich so viele Bausteine parallel am Bus hängen, 
bis der Fanout oder die verfügbaren CS eine Grenze setzen.

von Volkmar S. (voschi)


Lesenswert?

Danke für Eure Statements, dann muss es wohl Parallelbetrieb werden. Das 
zweite cs erzeugt man sicherlich aus dem ersten mit einer kleinen 
Verzögerung. Schade, das Teil ist wirklich preiswert - AD7686 ist 3-4mal 
so teuer.
Ich habe einen interessanten Artikel von Microchip gefunden. Dort ist 
der daisy chain mode (DSM) auch beschrieben (36.4.5 Daisy-Chain 
Configuration), in zwei Varianten. Meine Bemerkung über die 
Schieberegister (SR) wird dort auch klar gestellt. Die Kette wirkt wie 
ein SR. Auf den Chips sind keine SR implementiert.

https://onlinedocs.microchip.com/oxy/GUID-F2693295-804D-4E36-8BA5-0105C1751EA5-en-US-5/GUID-A303F2B6-8BBA-4702-B548-AFF957E0B12D.html

voschi

von Hannes (taurus16)


Lesenswert?

Volkmar S. schrieb:
> Danke für Eure Statements, dann muss es wohl Parallelbetrieb
> werden. Das zweite cs erzeugt man sicherlich aus dem ersten mit einer
> kleinen Verzögerung. Schade, das Teil ist wirklich preiswert - AD7686
> ist 3-4mal so teuer.

Das zweite CS erzeugst du am besten wenn du die Daten vom ersten 
abgeholt hast…

Was ist eigentlich dein Problem? Ob parallel oder daisy chain soviel 
gewinnst du da nicht.

Einmal für dich den richtigen Ablauf:

Beide CNVST gleichzeitig von 0 auf 1 -> beide ADC samplen gleichzeitig.

CNVST von ADC1 auf 0 und Daten abholen (16 Bit), dann geht SDO auf High 
Z

CNVST von ADC2 auf 0 und Daten abholen

Und dann von vorn, dabei gerne die Zeiten aus dem Datenblatt beachten

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Angehängte Dateien:

Lesenswert?

Müsste man ausprobieren, was der Chip macht, wenn SDI zu verschiedenen 
Zeiten auf Low gesetzt wird oder sich an den Hersteller wenden, wenn es 
aus dem Datenblatt nicht eindeutig hervorgeht, denn für irgendetwas 
wurde SDI ja geplant oder gebaut und die Anordnung der Pins auf dem 
Blockschaltbild zeigt eindeutig, dass es von links nach rechts geht. Es 
kann aber auch sein, dass es die besagte Verkettung an sich im Silizium 
gibt, weil der Hersteller Teile der Entwürfe für viele ADCs modular 
nutzt, diese hier aber lahmgelegt werden muss, weil es in diesem Konzept 
nicht umsetzbar ist.

Außer der üblichen Methode über „CS-Wahl”, die hier schon mehrfach 
erwähnt wurde, könnte man viele Chips auch gleichzeitig auslesen, also 
wirklich parallel – per QUAD-SPI, OCTO-SPI oder sogar noch mehr Kanäle, 
wenn es z.B. rein per Software geht. Ob es Sinn macht, es so zu machen, 
ist eine ganz andere Frage, denn hinterher muss man die so gesammelten 
Daten mit der CPU noch sortieren und aufbereiten. Bei diesem ADC geht 
aber eindeutig auch um Geschwindigkeit auf dem SPI-Bus, denn die 
Clockrate geht bis 100 MHz.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Gregor J. schrieb:

> Es
> kann aber auch sein, dass es die besagte Verkettung an sich im Silizium
> gibt, weil der Hersteller Teile der Entwürfe für viele ADCs modular
> nutzt, diese hier aber lahmgelegt werden muss, weil es in diesem Konzept
> nicht umsetzbar ist.

Es kann nicht nur so sein, sondern es ist so. Und der Grund ist einfach, 
dass beim Konzept irgendein Pfennigfuchser festgestellt hat, dass man 
einen Pin sparen kann, wenn man zwei Steuersignale, die ohnehin schon 
teilweise logisch miteinander verknüpft sind, auf einen gemeinsamen Pin 
legt.

Dass damit aber eben auch die Möglichkeit zum Betrieb in einer Chain 
flöten geht, hat bei der Entscheidung wohl keine Rolle gespielt...

von Volkmar S. (voschi)


Lesenswert?

Die Bemerkung von Gregor werde ich in die Tat umsetzen und versuchen, 
die Mystik des SDI Pins des MCP33131D-10mit dem Hersteller zu klären.

Hier das Datenblatt des AD7686:

https://www.mouser.de/datasheet/2/609/AD7686-1502135.pdf

Die Funktion des SDI-Pins steht auf Seite 7. Das Pin wird im DCM auf Low 
gesetzt!

Die DCM-Beschreibung (Ohne Busy Ind.) steht auf Seite 21.

Hier das Datenblatt des ADC121S051:

https://www.ti.com/lit/ds/symlink/adc121s051.pdf?ts=1735936636270

Dieser ADC z. B. hat kein SDI-Pin. Damit ist ganz klar, dass er nicht 
für DCM geeignet ist.

Nochmals Danke für Eure Statements,
voschi

von Gregor J. (Firma: Jasinski) (gregor_jasinski)



Lesenswert?

Volkmar S. schrieb:
> Die Bemerkung von Gregor werde ich in die Tat umsetzen und versuchen,
> die Mystik des SDI Pins des MCP33131D-10 mit dem Hersteller zu klären.

Es gibt gute Chancen, dass das mit der Verkettung bei dem MCP33131D-10 
genauso funktionieren tut, man sich aber offiziell für deren 
Nicht-Nutzung entschieden hat, weil das richtige Funktionieren dieser 
Verkettung stark von der Clockrate und Spannung anhängt und man hier das 
Produkt mit diesen 100 MHz bewirbt. Im Datenblatt des AD7686 sieht man, 
dass man bei der Verkettung mit dem SCK-Timing runtergehen muss, damit 
das noch garantiert richtig funktioniert – also den Chain-Mode mit einer 
Clockfrequenz bis maximal 50MHz nutzen darf. Es ist aber auch durchaus 
möglich, dass SDI eine ganz andere Funktion besitzt und man mit SDI=Low 
eine Art Service-Mode hervorrufen kann, um irgendwelche interne Daten 
mitauszugeben. Wie auch immer, man muss es einfach mit einem µC und 
mindestens einem 2-Kanal-Oszilloskop testen, um irgendetwas 
auszuschließen oder zu bestätigen. Man kann auch den Hersteller-Support 
anschreiben, aber das wird dauern und es ist durchaus möglich, dass der 
Hersteller ausdrücklich sagt, dass man den Chain-Mode nicht nutzen darf, 
obwohl alles bis z.B. 25-50 MHz bestens durchgeschleift wird und 
funktioniert.

PS: man kann auch überprüfen, welchen Pegel SDI ohne harte 
VCC-Verbindung im Betrieb hat; welchen Wert SDO kurz nach CS=Low hat, 
kann man bei solchen Tests auch sehen

: Bearbeitet durch User
von Volkmar S. (voschi)


Lesenswert?

Hallo Gregor,

für mich sind SPI-Clock_Frequenzen von 50-100MHz utopisch. Ich habe bei 
den 8-Bit-ATMegas immer mit SYSCLK/128 gearbeitet. Das sind bei 20MHz 
156,25 kHz (Z. B. Konfigurieren und auslesen RTD-to-Digital Converter 
MAX31865). Habe auch vermieden, mit SYSCLK/2 zu arbeiten. Was will man 
mit solch hohen Taktfrequenzen - wandeln hochfrequenter Eingangsgrößen? 
Da braucht man sicher µCs mit entsprechend hohem Systemtakt.

voschi

: Bearbeitet durch User
von Gustl B. (gustl_b)


Lesenswert?

Und warum willst du dann diesen AD Wandler? Den muss man mit 60 MHz SPI 
Clock betreiben wenn man die 1 MSample/s bekommen will. 720 ns Ruhezeit 
und dann 280 ns um die 16 Bit auszulesen.

von Rainer W. (rawi)


Lesenswert?

Volkmar S. schrieb:
> Der diesbezügliche host-µC hat nur ein SPI-Interface.

Der Chip-Select ist ein beliebiger GPIO und normalerweise unabhängig vom 
SPI-Interface.

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

Volkmar S. schrieb:
> Ich habe bei den 8-Bit-ATMegas immer mit SYSCLK/128 gearbeitet. Das sind
> bei 20MHz 156,25 kHz (Z. B. Konfigurieren und auslesen RTD-to-Digital
> Converter MAX31865). Habe auch vermieden, mit SYSCLK/2 zu arbeiten.
> Was will man mit solch hohen Taktfrequenzen - wandeln hochfrequenter
> Eingangsgrößen?

Das SPI-Interface ist dafür ausgelegt, schnell zu sein – wo es geht, 
kann man das auch ruhig nutzen, weil es die Performance erhöht, das 
Warten auf die Daten wird z.B. signifikant verkürzt, wenn man es im 
Programm so gestaltet hat – ist leider oft der Fall, weil die ATMEGAs 
keine DMAs haben. Über Interrupts kann man das auch gestalten, das 
Programm wird dadurch aber deutlich komplexer und schwieriger zu 
händeln. Für z.B. den MAX7219 nutze ich bei den ATMEGAs die maximal 
mögliche Clockrate der SPI-Schnittstelle (also Fsys/2, weil mit SPI2X=1) 
– bei 18,432 und 11,0592 MHz kommt man dann auf jeweils ca. 9 und 
5,5MHz. Das Einclocken der Daten in das Display dauert dann 
Mikrosekunden. Bei diesen ADCs kann man dieses Maximum der ATMEGAs 
bestimmt problemlos nutzen – für das Herausfinden, ob das mit der 
Verkettung geht, kann man erstmal einfach 1MHz nehmen und falls ja, dann 
immer höher gehen. Was ich in diesem Kontext noch vergessen habe: falls 
es nicht geht, kann man das noch mit einem Pull-UP und danach mit einem 
Pull-Down zwischen den beiden ADCs probieren, also am Knotenpunkt 
SDO=SDI. 10kΩ sind für einen Testlauf bestimmt ausreichend.

________
> Da braucht man sicher µCs mit entsprechend hohem Systemtakt.

Mit z.B. STM32 kann man deutlich höher mit der Clockrate gehen – spielt 
z.B. eine ganz wichtige Rolle, wenn man SPI-Speicher (25er) auslesen 
muss, wo dann zig Clocks folgen müssen, um überhaupt an das erste 
Datenbit zu kommen. Hier sind sogar 120-133MHz möglich – würde man das 
mit 1MHz tun, würde es auch 120 mal länger dauern. So eine Platine muss 
aber auch entsprechend entworfen werden, weil man es mit immer höherer 
Frequenz auch immer mehr mit parasitären Effekten zu tun bekommt. Auf 
das Maximum aus dem Datenblatt würde ich bei diesen ganz hohen 
Frequenzen aber nie gehen – mit 2/3 ist man in der Regel auf der 
sicheren Seite, wenn das Design stimmt.

: Bearbeitet durch User
von Volkmar S. (voschi)


Lesenswert?

So, die Antwort von Microchip ist eingetroffen:

Hi Volkmar,

Good Day:)

Thankyou for contacting Microchip Technical Support.

MCP33111D does not support daisy chain mode. As you mentioned you want 
to measure Voltage and current. You can consider MCP3911-2 Channel 
simultaneous sampling ADC which will be suited for power measurement 
application.

Please feel free to get back on further queries If any.

Regards,
Soundarya
______________________________________

Damit ist der Fall DCM mit dem  MCP331xxD-10 erledigt, aber es ist immer 
noch unklar, was das SDI Pin soll.

voschi

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

Volkmar S. schrieb:
> Damit ist der Fall DCM mit dem  MCP331xxD-10 erledigt, aber es ist immer
> noch unklar, was das SDI Pin soll.

Das muss man dann schon selbst mit einem µC und Oszilloskop-Aufnahmen 
untersuchen, wie ich bereits schrieb. Man muss dazu nicht zwingend 
notwendig zwei ADCs zusammenschalten, man kann vorab untersuchen, was 
nach den 16 Clocks am SDO ausgegeben wird und ob der Pin überhaupt einen 
festen Pegel in Abhängigkeit von SDI=Low oder SDI=High aufweist oder 
floatet. Wenn SDO in beiden Fällen nach 16 Datenbits immer auf Hi-Z 
geht, hat sich das erledigt; korreliert der Pegel am SDO mit dem am SDI 
mit einer Verzögerung von 16 Bits, dann lohnt es sich, der Sache weiter 
auf den Grund zu gehen, denn dann wäre SDI womöglich doch der Eingang 
des Schieberegisters und man daraus dann ein längeres Schieberegister 
aus mehreren ADCs bauen kann. Chipselect (CNVST) muss während der 
gesamten Zeit des Clockens, die über 16 Bit hinausgeht, natürlich weiter 
low bleiben. Die Zeiten tCNV und tACQ aus dem Datenblatt muss man auch 
einhalten; tCYC ebenfalls, aber das ergibt sich dann quasi automatisch 
als Summe der beiden anderen Zeiten.

Noch so nebenbei: Siliziumfehler gibt man nicht gerne zu – es ist 
durchaus möglich, dass hier so ein Fall vorliegt, also dass während der 
Entwicklung ein Designfehler gemacht wurde und man die Verkettung 
deswegen nicht benutzen darf

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Gregor J. schrieb:
> es ist durchaus möglich, dass hier so ein Fall vorliegt, also dass
> während der Entwicklung ein Designfehler gemacht wurde und man die
> Verkettung deswegen nicht benutzen darf
Und es ist deshlab durchaus möglich, dass bei einem neuen Step dieses 
Chips dann genau diese als "nicht vorhanden" dokumentierte und von 
niemandem benutzte Funktion tatsächlich nicht mehr implementiert ist...

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

„korreliert der Pegel am SDO mit dem am SDI mit einer Verzögerung von 16 
Bits, dann lohnt es sich, der Sache weiter auf den Grund zu gehen”

Ergänzung: sollte das wirklich mit einer Oszilloskop-Aufnahme 
nachweislich zutreffen, kann ich Dir den nächsten möglichen Testschritt, 
der weiter mit nur einem ADC geht, mitteilen.

: Bearbeitet durch User
von Volkmar S. (voschi)


Angehängte Dateien:

Lesenswert?

Also, ich denke, hier sollte man keinen Aufwand mehr betreiben, 
eigentlich schade.
Die Antwort von MC ist doch eindeutig. Es kann sein, dass der Preis der
ADC-Familie MCP331xxD-10 deshalb so niedrig ist, weil 
Hardwarekomponenten, die den DCM ermöglichen, einfach fehlen. Das wären 
zum Beispiel Schieberegister. Der AD 7686 verfügt über diese (siehe 
Anlage).

Vielen Dank für Eure Statements.

Voschi

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

Volkmar S. schrieb:
> Das wären zum Beispiel Schieberegister. Der AD 7686 verfügt über diese
> (siehe Anlage).

Und womit glaubst Du werden die Daten am SDO des MCP33131D 
herausgeclockt, mit einem Multiplexer? Das ist EIN Schieberegister, das 
in der Regel auch einen Eingang hat, um auch Daten zu dem IC 
hineinzuclocken – am Ende der 16 Clocks hat ein Datenaustausch 
stattgefunden. Aber ich glaube, ich habe hier eh zu viel geschrieben.

: Bearbeitet durch User
von Volkmar S. (voschi)


Lesenswert?

Hallo Gregor,
ich weiß schon zu schätzen, was Du geschreiben hast. Nochmals vielen 
Dank.
Ich habe jedoch derzeit keine diesbezüglich passende Hardware und auch 
keinen MCP33131D-10.
Voschi

von Gregor J. (Firma: Jasinski) (gregor_jasinski)


Lesenswert?

Volkmar S. schrieb:
> Ich habe jedoch derzeit keine diesbezüglich passende Hardware und auch
> keinen MCP33131D-10.

Ich habe mir schon gedacht, dass da im Hintergrund quasi nichts gemacht 
wird oder gemacht werden kann und das einzige, was dann übrigbleibt, nur 
die Fragestellung bei Microchip ist – deren mögliche, pauschale und eher 
ausweichende Antwort habe ich Dir aber schon von vornherein prophezeit, 
auch warum die das so sagen könnten. Sollte jemand diesen Chip, die 
Ausrüstung haben und die entsprechenden Fähigkeiten mitbringen, kann er 
mit den Informationen hier im Thread vielleicht etwas anfangen, insofern 
ist das herausgesprudelte Wissen hier nicht umsonst gewesen und wird 
wohl auch nicht so schnell verlorengehen.

: Bearbeitet durch User
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.