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
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.
Volkmar S. schrieb: > Tie to DVIO for normal > operation. Da muss noch davor etwas stehen, dass du mit diesem Pin verbinden sollst.
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
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.
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.
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
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.
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
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
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.
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...
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
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
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
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.
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.
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
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
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
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...
„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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.