Servus Leute, Ich habe zwar theoretisches Wissen durch Lesen erlangt, doch die praktische Umsetzung fehlt mir. Ich möchte nacheinander mehrere DAC(AD5062) über ein uC steuern. Also prinzipiel ein DAC auswählen, wert einstellen und dann weiter zum anderen. Als uC habe ich STM32 nucleo. SPI1-MOSI wird an den Datenleitungen von allen DAC angelegt. DAC hat ein SYNC(laut datenblatt seriell) Eingang, womit man Datenübertragung durch das logische 0 aktivieren kann. Der uC hat eine I2C Datenleitung. Theoretisch wird gesagt, dass man viele Geräte an einem I2C anschließen kann, weil man den Slave mit einer Adresse ansprechen kann. Kann ich überhaupt mehr als 2 AD5062 über ein I2C auswählen bzw. zum Datenübertragung aktivieren? Aus dem Datenblatt konnte ich nicht viel herauslesen. Liegt an mangelnde Erfahrung. Ich hoffe ich konnte meine Frage gut rüberbringen. Schöne Grüße afgh
:
Bearbeitet durch User
Joey T. schrieb: > Ich möchte nacheinander mehrere DAC(AD5062) über ein uC steuern. Also > prinzipiel ein DAC auswählen, wert einstellen und dann weiter zum > anderen. Als uC habe ich STM32 nucleo. Wie PeDa schon sagte, hat dieser DAC ein SPI Interface. Das ist etwas fundamental anderes als I²C. Die Ansteuerung von N solcher DAC braucht N+2 Pins an deinem µC. Und zwar brauchst du N Pins, um die SYNC Anschlüsse der DAC zu bedienen (in SPI Terminologie heißt das Signal üblicherweise SS="slave select" und nicht SYNC). Die zwei weiteren Pins sind SCLK und MOSI von einem SPI Interface deines µC. Die gehen an SCLK und DIN deiner DAC (alle parallel). Hier das Bild dazu: https://en.wikipedia.org/wiki/Serial_Peripheral_Interface#Independent_slave_configuration (dein DAC hat kein MISO, diese Leitung entfällt also) Zur Datenausgabe setzt du SYNC von genau einem DAC auf L, sendest deine 3 Bytes über das SPI Interface und setzt SYNC anschließend wieder auf H. Und das Reihe nach für alle DAC.
Es sei erwähnt das es natürlich auch DACs mit mehren Ausgängen gibt... Olaf
Axel S. schrieb: > Die Ansteuerung von N solcher DAC braucht N+2 Pins an deinem µC. 2 Pins takten CLK und DATA raus ja aber statt N Pins für N DAC geht auch I2C Port PCF8574, https://www.nxp.com/docs/en/data-sheet/PCF8574_PCF8574A.pdf da reicht ein PCF für 7 DAC 3 Bit 000 kein DAC gewählt 001 erster DAC gewählt ... 111 siebenter DAC gewählt mit ebenfalls 3 Adressmöglichkeiten sind 8 PCF möglich.
Joachim B. schrieb: > ja aber statt N Pins für N DAC geht auch I2C Port PCF8574, > https://www.nxp.com/docs/en/data-sheet/PCF8574_PCF8574A.pdf > > da reicht ein PCF für 7 DAC 3 Bit > > 000 kein DAC gewählt > 001 erster DAC gewählt > ... > 111 siebenter DAC gewählt Sooooo ein Käse. Der PCF8574 ist ein 8-Bit Port, kein 1-aus-8-Decoder.
Dann nimm eben ein normales Schieberegister mit Latch für das Chipselect. Das benötigt 3 IOs, dazu noch SCLK und Daten. ALso 5 IOs für 8 DACs ... und da man die Schieberegister kaskadieren kann gehen mit 5 IOs auch deutlich mehr DACs. Nur das Timing wird etwas fies, kann man aber alles schön machen.
Axel S. schrieb: > Joey T. schrieb: > Wie PeDa schon sagte, hat dieser DAC ein SPI Interface. Das ist etwas > fundamental anderes als I²C. Ja ich wollte nur den SYNC(ich nenne es weiterhin SYNC, da im Datenblatt so bezeichent wird), auf logisch 1 und 0 reagiert, über I2C steuern. Kann sein das ich hier etwas nicht verstanden habe und das gar nicht möglich ist. Jedoch habe ich einige beispiele gesehen, wo bei 2 DACs SCL an dem einen SYNC und SDA an dem anderen SYNC angelegt war. > Zur Datenausgabe setzt du SYNC von genau einem DAC auf L, sendest deine > 3 Bytes über das SPI Interface und setzt SYNC anschließend wieder auf H. > Und das Reihe nach für alle DAC. Ja genau das wäre auch meine vorgehensweise gewesen, meine Frage war nicht der Ablauf, denn das habe ich nachvollziehen können, sondern wie ich das umzusetzen habe(der kompakteste Weg). > ja aber statt N Pins für N DAC geht auch I2C Port PCF8574, > https://www.nxp.com/docs/en/data-sheet/PCF8574_PCF8574A.pdf Das scheint mir das zu sein wonach ich gesucht habe, jedoch habe ich wieder das Problem mit dem steuern von PCF-Eingängen. Wie ich es gesehen habe, hat stm32 F103(glaub ich) 4 Leitungen dafür...2 davon benutze ich um ein mux zu steuern, bleiben also nur 2 übrig :/
Joey T. schrieb: > Ja ich wollte nur den SYNC(ich nenne es weiterhin SYNC, da im Datenblatt > so bezeichent wird), auf logisch 1 und 0 reagiert, über I2C steuern. > Kann sein das ich hier etwas nicht verstanden habe und das gar nicht > möglich ist. Jedoch habe ich einige beispiele gesehen, wo bei 2 DACs SCL > an dem einen SYNC und SDA an dem anderen SYNC angelegt war. Was genau meinst du damit? - Willst du eine I2C GPIO-Expander verwenden? Das wäre ein eigener IC, den du vom STM32 per I2C ansprichst und der dann wieder eigene "dumme" Ein- und Ausgänge bereitstellt - Willst du einen Pin vom STM32 verwenden, der theoretisch auch I2C ausgeben könnte? In dem Fall konfigurierst du den Pin einfach als GPIO um, mehr brauchst und willst du ja gar nicht. Du brauchst aber natürlich noch mehr Pins am STM32 als normale Ausgänge. Im einfachsten Fall pro SPI "Teilnehmer" einen Pin als Slave/Chip Select
Au weia schrieb: > Sooooo ein Käse. > > Der PCF8574 ist ein 8-Bit Port, kein 1-aus-8-Decoder. nur halber Käse man kann ihn trotzdem nutzen sogar mit 1-aus-8-Decoder oder 1-aus-16 Decoder. OK du hast einen Fehler gefunden gratuliere, sonst noch Tips für den TO?
Christian W. schrieb: > Joey T. schrieb: >> Ja ich wollte nur den SYNC(ich nenne es weiterhin SYNC, da im Datenblatt >> so bezeichent wird), auf logisch 1 und 0 reagiert, über I2C steuern. >> Kann sein das ich hier etwas nicht verstanden habe und das gar nicht >> möglich ist. Jedoch habe ich einige beispiele gesehen, wo bei 2 DACs SCL >> an dem einen SYNC und SDA an dem anderen SYNC angelegt war. > > Was genau meinst du damit? > - Willst du eine I2C GPIO-Expander verwenden? Das wäre ein eigener IC, > den du vom STM32 per I2C ansprichst und der dann wieder eigene "dumme" > Ein- und Ausgänge bereitstellt > - Willst du einen Pin vom STM32 verwenden, der theoretisch auch I2C > ausgeben könnte? In dem Fall konfigurierst du den Pin einfach als GPIO > um, mehr brauchst und willst du ja gar nicht. Du brauchst aber natürlich > noch mehr Pins am STM32 als normale Ausgänge. Im einfachsten Fall pro > SPI "Teilnehmer" einen Pin als Slave/Chip Select Ich glaube mein Problem ist mein Halbwissen in diesem Gebiet. Ich weiß zwar, dass der SYNC Input von ADG5062 mit logische 1 und 0 ein und ausgeschaltet werden kann. Ich habe ein STM32 mit dem ich jetzt mehrere von den DACs ansteuern will...Ich kann eine MOSI-Leitung an allen DACs anlegen, aber die Auswahl des DACs könnte ich über SYNC machen. Um darauf zurückzukommen was ich will, ist dass ich nicht genau weiß welche Output von dem STM32 als Input für die SYNCs benutzen kann -> kam auf die Idee mit I²C. Ja klar, einige würden sagen, lies dir Datenblatt durch aber wenn man wenig Ahnung von der digitalen Kommunikation hat, dann wird einem auch so ein 100seitiges Datenblatt nicht weiterhelfen. Ich hoffe ihr versteht mein Problem.
Im einfachsten Fall je ein I/O als Synch/CS. Wenn man genug frei hat sollte man es so machen. Alternativ kann man auch Wandler mit MISO nehmen, dann werden alle sozusagen in Reihe geschaltet. Je nach geforderter Analogbandbreite sind dem aber Grenzen gesetzt.
Joey T. schrieb: > Um darauf zurückzukommen was ich will, ist dass ich nicht genau > weiß welche Output von dem STM32 als Input für die SYNCs benutzen kann > -> kam auf die Idee mit I²C. Ja klar, einige würden sagen, lies dir > Datenblatt durch aber wenn man wenig Ahnung von der digitalen > Kommunikation hat, dann wird einem auch so ein 100seitiges Datenblatt > nicht weiterhelfen. Ich glaub du hast einfach ein Verständnissproblem, da hilft Datenblatt lesen auch nicht konkret weiter. So ziemlich jeden Pin des STM32 kannst du als "dummen" In- oder Output und damit zur Ansteuerung vom SS/CS/SYNC verwenden. Dumm heißt in dem Fall, dass du den in Software im richtigen Moment händisch mit einem Befehl auf 0 (GND, 0 V) oder 1 (üblich VCC, 3.3 V) schalten kannst, nicht mehr, nicht weniger. So ziemlich alle Pins vom STM32 können aber auch andere Funktionen bedienen, z.B. I2C, SPI, PWM etc. Diese Funktionalität an dem Pin musst du aber nicht verwenden, wenn die der Pin als GPIO reicht. Wenn du also einen Pin, der I2C (Clock oder Daten ist egal) ausgeben könnte, am SYNC von deinem DAC anschließt, wird das funktionieren, wenn du den Pin als Output konfigurierst. Wenn du alternativ den gleichen Pin als I2C konfigurierst wird es nicht gehen, da der DAC dann Pulse an seinem SYNC-Anschluss bekommt mit dennen er nichts anfangen kann.
Christian W. schrieb: > Ich glaub du hast einfach ein Verständnissproblem, da hilft Datenblatt > lesen auch nicht konkret weiter. > > So ziemlich jeden Pin des STM32 kannst du als "dummen" In- oder Output > und damit zur Ansteuerung vom SS/CS/SYNC verwenden. Dumm heißt in dem > Fall, dass du den in Software im richtigen Moment händisch mit einem > Befehl auf 0 (GND, 0 V) oder 1 (üblich VCC, 3.3 V) schalten kannst, > nicht mehr, nicht weniger. > > So ziemlich alle Pins vom STM32 können aber auch andere Funktionen > bedienen, z.B. I2C, SPI, PWM etc. Diese Funktionalität an dem Pin musst > du aber nicht verwenden, wenn die der Pin als GPIO reicht. > > Wenn du also einen Pin, der I2C (Clock oder Daten ist egal) ausgeben > könnte, am SYNC von deinem DAC anschließt, wird das funktionieren, wenn > du den Pin als Output konfigurierst. Wenn du alternativ den gleichen Pin > als I2C konfigurierst wird es nicht gehen, da der DAC dann Pulse an > seinem SYNC-Anschluss bekommt mit dennen er nichts anfangen kann. Ich glaube dein Beitrag hat mein Verständnisproblem gelöst. Ich danke dir. Ich werde es wohl so "dumm" programmieren, damit habe ich kein Problem, denn ich fühle mich in dem Gebiet auch dumm haha, denn meine mama sagt "dumm ist der der dummes tut" :D Meine Befürchtung war nur, dass ich nicht genug Outputs zur Verfügung hätte. Und das wollte ihc mit I2C lösen. Nun gut, Ich danke fürs erste euch allen für eure Beiträge.
:
Bearbeitet durch User
Joey T. schrieb: > Ich möchte nacheinander mehrere DAC Können wir bitte langsam mal ein paar Fakten bekommen, ja? *Wie viele?!?* 2, 5, 10, 20, 50, 100?
Michael Gugelhupf schrieb: > Joey T. schrieb: >> Ich möchte nacheinander mehrere DAC > > Können wir bitte langsam mal ein paar Fakten bekommen, ja? > > *Wie viele?!?* 2, 5, 10, 20, 50, 100? nicht mehr als 10...ist wohl abhängig davon wieviele ich alleine mit dem uC steuern kann, ohne weitere bauteile wie schalter oder ähnliches zu realisieren.
Was wollt ihr mit I2C? Oder gar mit I2C Multiplexern? Der DAC kann das nicht. Der I2C Weg ist also ein Irrweg.
Jo, daher hatte ich das Schieberegister für die ChipSelects eingeworfen. Das sind dann 5 IOs für SPI ohne MISO. 3 für Schieberegister mit Latch und dazu noch SCLK und MOSI.
Arduino Fanboy D. schrieb: > Was wollt ihr mit I2C? > Oder gar mit I2C Multiplexern? > Der DAC kann das nicht. > > Der I2C Weg ist also ein Irrweg. Das hat sich erledigt, da die Verwirrung meinerseits zustande kam.
Arduino Fanboy D. schrieb: > Was wollt ihr mit I2C? > Der I2C Weg ist also ein Irrweg. I2C kann die benötigten 10 DAC CS oder Sync Signale erzeugen ohne 10 Ports dafür zu brauchen! 2 Pins für CLK und Data 2 Pins für fast beliebig viele Sync / CS statt 10 Sync Pins für 10 DACs Joey T. schrieb: > Das hat sich erledigt, da die Verwirrung meinerseits zustande kam. nein nicht nur, denn du schriebst ja auch Joey T. schrieb: > nicht mehr als 10...ist wohl abhängig davon wieviele ich alleine mit dem > uC steuern kann, ohne weitere bauteile wie schalter oder ähnliches zu > realisieren. jeder µC braucht ja auch noch Pins für Anderes: Taster, LED, Encoder, Display?
:
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.