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