Hi, Ich versuche eine Elektronik mit folgendem Time of Flight Sensor zu designen: https://eu.mouser.com/datasheet/2/389/dm00452094-1799360.pdf Die Spannungsversorgung macht mir im Moment noch ein wenig Kopfzerbrechen, da ich nicht ganz sehe, welche Spannungslevel ich verwenden sollte. Gemäss Datenblatt auf Seite 23 sind die Spannungslevel wie im Anhang vorgesehen. Die Versorgung sollte also 2.8V sein und die Pull-Up Spannung bei 1.8V liegen. Nun habe ich 3.3V zur Verfügung und ich möchte eigentlich nicht 2 LDOs verwenden, um zusätzlich die beiden Spannungen zu erzeugen. Gemäss dem X-NUCLEO-53L1A1 Evaluationsboard von ST kann man die Pull-Up Spannung gleich der AVDD Spannung setzen, also 2.8V, aber im Datenblatt steht, dass man dafür den Baustein programmieren muss, sprich ich muss den zuerst einmal mit 1.8VDC versorgen oder sehe ich das falsch? Weiter sind ja alle Pins bis 3.5VDC kompatibel, ich sehe also nicht, wieso man überhaupt 2.8VDC verwenden sollte. Evaluationsboard: https://eu.mouser.com/datasheet/2/389/x-nucleo-53l1a1-1848808.pdf Grüsse Bert
Bert S. schrieb: > aber im Datenblatt steht, > dass man dafür den Baustein programmieren muss, sprich ich muss den > zuerst einmal mit 1.8VDC versorgen oder sehe ich das falsch? Ich würde den glatt direkt mit 2.8V ... 3.3V versorgen. Die 2.8V Empfehlung rührt wahrscheinlich daher, dass der VCSEL (der Laser da drin) gepulst betrieben wird. Schwinger in dr Regelung können bei 3.3V dann gefährlich nah an den 3.5V maximum sein. Im UM2356 a.k.a. VL53L1X API user manual, ... https://www.st.com/resource/en/user_manual/um2356-vl53l1x-api-user-manual-stmicroelectronics.pdf ... das wohl eine Anleitung zu einer Software-Library ist, lese ich folgendes: > 2.5.9 VDDIO configuration > As described in the datasheet, the user can select > two modes for a VDDIO value of 1V8 or 2V8 modes. > The selection of the mode is made directly in the code > though a compilation key called USE_I2C_2V8k. > If this compilation key is defined, the system will go > into 2V8 mode, otherwise, it will be kept in the > default 1V8 mode. Da wird wohl irgendwas in einer Initsequenz langsam an das Ding geschickt, was ein paar Bits setzt, die dann die Kompatibilität mit 2.8V-Pegeln statt 1.8V-Pegeln beeinflussen. Das ist natürlich streng geheim, wenn man den Quellcode nicht kennt. mfg mf
Genau den von minifloat beschriebenen Compilerswitch musst Du setzen. Du hast aber noch nicht geschrieben, ob Du überhaupt den Originaltreiber verwendest.
Harald A. schrieb: > Genau den von minifloat beschriebenen Compilerswitch musst Du setzen. Lustigerweise ist aber nirgends dokumentiert, was der Compilerswitch macht. Im dort referenzierten UM2356 steht auch nur drin, dass man dieses define aktivieren müsse. Über https://community.st.com/s/question/0D50X00009XkdrISAR/vl53l0x-2v8-mode und ein paar Umwege findet man dann ein #define PAD_I2C_HV__EXTSUP_CONFIG, das eine Registeradresse x2E definiert. Letztlich werden da irgendwelche Bits gesetzt, aber ich habe bis jetzt noch keine Registerbeschreibung gefunden, damit man sieht, was da passieren sollte. Die Antwort von ST auf die Frage nach dieser Registerbeschreibung ist ziemlich flapsig: "Ihr seid sowieso nicht in der Lage, zu kapieren, was da mit was zusammenhängt, deshalb verwendet ihr einfach den fertigen Treiber und gut ists!" Siehe https://community.st.com/s/question/0D50X00009XkeHcSAJ/vl53l0x-register-map Das ist natürlich lächerlich, denn Es gibt auch für wesentlich komplexere Bausteine entsprechende Registerbeschreibungen... Harald A. schrieb: > Du hast aber noch nicht geschrieben, ob Du überhaupt den Originaltreiber > verwendest. Es gibt sowieso mindestens 3 "Originaltreiber": https://www.st.com/content/st_com/en/products/embedded-software/imaging-software/stsw-img009.html https://www.st.com/content/st_com/en/products/embedded-software/imaging-software/stsw-img007.html https://www.st.com/content/st_com/en/products/embedded-software/imaging-software/stsw-img032.html Und laut dem obigen Thread im ST-Forum könnte es ja auch "the one from Pololu. Or from Sparkfun" sein. Und eigentlich sollte es der Hardware egal sein, welche Software sie ansteuert, solange diese Software das Nötige tut. Bert S. schrieb: > sprich ich muss den zuerst einmal mit 1.8VDC versorgen oder sehe ich > das falsch? Nein, du setzt einfach das ominöse Bit (oder auch nicht) und das Ding läuft. Denn wenn da im Datenblatt "– Single power supply (2v8)" steht, dann kämen da sicher Reklamationen. Und wenn man mal recherchiert, dann sieht es so aus, als ob es bei den Anderen auch ohne dieses define mit 2,8V geht.
:
Bearbeitet durch Moderator
Ich würde es nicht ganz so krass sehen, dass ST alle Entwickler für zu blöd hält. Ich hatte es mal so verstanden, dass da viele Parameter drin sind, die auch aus Gründen des Wettbewerbes nicht alle haarklein erläutert werden möchten. Für die allermeisten Anwendungen dürfte der Ultra Lite Driver reichen, damit kann man eigentlich alles machen, inkl. dem Crosstalk-Abgleich. Im Übrigen kann ich die Crosstalk-Compensation nur wärmstens empfehlen, insbesondere dann, wenn der Sensor hinter einer Scheibe sitzt. Die Daten werden im Sensor gehalten, da braucht man sich auch keinen Mechanismus zum Speichern der ermittelten Daten ausdenken.
:
Bearbeitet durch User
Harald A. schrieb: > dass da viele Parameter drin sind, die auch aus Gründen des Wettbewerbes > nicht alle haarklein erläutert werden möchten. So lange die Register das HW-Design nicht betreffen, dann mag das noch angehen. Aber wenn da ein Unterschied zwischen 1V8 und 2V8 gemacht wird, dann möchte ich schon wissen, was da passiert. Denn immerhin kann ich als HW-Designer mit einer zu hohen Spannung so ein Bauteil ja möglicherweise kaputt machen. Und dann hilft mir eine undurchsichtige Dokumentation der paar wenigen IO-Pins nicht weiter.
Gibt ldo die zwei spannungen bereitstellen. Bei Interesse kann ich die Teilenummer nachschauen.
Lothar M. schrieb: > Und dann hilft mir eine undurchsichtige > Dokumentation der paar wenigen IO-Pins nicht weiter. Ich denke Du und ich haben schon viele Bauteile angeschlossen, von denen man nicht weiß, was intern GENAU passiert. Vieles lebt vom Reference Design. An deiner Stelle würde ich einfach einen Bogen um diesen Baustein machen, wenn Du in dieser Beziehung kein Vertrauen hast.
> Nun habe ich 3.3V zur Verfügung und ich möchte eigentlich nicht 2 LDOs
verwenden, um zusätzlich die beiden Spannungen zu erzeugen.
Immer diese Fürze. Allenfalls laeuft der andere Teil auch mit 2.8V.
Flachtroll schrieb: >> Nun habe ich 3.3V zur Verfügung und ich möchte eigentlich nicht > 2 LDOs > verwenden, um zusätzlich die beiden Spannungen zu erzeugen. > > Immer diese Fürze. Allenfalls laeuft der andere Teil auch mit 2.8V. Bei einem Prozessor mit „echten“ I2C Eingängen (also beide Open Collector) ist das sowieso kein Problem, sofern die Schaltschwellen passen.
Für den VL53L1X gibt's doch Breakout-Boards mit nicht viel mehr als dem 2,8V-LDO und der I2C Pegelwandlung. Schematic: https://www.pololu.com/file/0J1188/vl53l0x-and-vl53l1x-time-of-flight-sensor-schematic.pdf Reicht das nicht als Referenzdesign?
Euro schrieb: > Reicht das nicht als Referenzdesign? Das funktioniert so, allerdings würde ich den Begriff „Referenzdesign“ mit einer Vorgabe vom Hersteller des Sensors verbinden. Wenn man echte Open-Collector I2C Ports am Controller hat, wie z.B. bei den LPCs von NXP, dann braucht man überhaupt keine Pegelwandler. Die externen Pull-ups setzt man gegen 2.8V, die Schaltschwelle für High liegt bei 2.0V. Passt alles, man kann den Controller ganz normal mit 3.3V weiter betreiben. Oder auch mit einer anderen Spannung, solange die Schaltschwellen passen.
:
Bearbeitet durch User
Harald A. schrieb: > An deiner Stelle würde ich einfach einen Bogen um diesen Baustein > machen, wenn Du in dieser Beziehung kein Vertrauen hast. Halb so schlimm, es ist halt einfach nur sehr eigenartig, dass zwischen 1V8 und 2V8 IO-Spannung so ein explizites Brimborium gemacht wird und nirgends steht, warum. Und dann steht da, dass man kein Powersequencing braucht, aber über einen Compilerschalter doch dieses Bit im Register x2E setzen muss. Das ist Kindergarten. Und komm mir keiner damit, dass man die Doku so knapp hält, weil sie kompliziert sein könnte. Ich lese auch Datenblätter von Prozessoren mit locker hundert mal mehr Registern, wo ich dann aber jeden Pin haarklein auf die nötige Spannung konfigurieren kann und es auch muss. Und dokumentiert muss das Ding ja sowieso sein, oder saugen sich die ST Softies ihre Firmware aus den Fingern? Harald A. schrieb: > Wenn man echte Open-Collector I2C Ports am Controller hat Sicher nicht, bestenfalls Open-Drain. Und an denen würde ich auch die üblichen ESD Schutzmechanismen vermuten. Das Datenblatt legt das nahe.
Harald A. schrieb: > die Schaltschwelle für High liegt bei 2.0V. Passt alles, man kann den > Controller ganz normal mit 3.3V weiter betreiben. Danke Harald, das ist das fehlende Puzzleteil. Für mich sieht das wie folgt aus: * Der Sensor legt erstmal mit "1.8V-Einstellung" für die High-Schwelle los. * Für bessere Störfestigkeit (SCK-zu-SDA-Timing) kann man dem Sensor die High-Schwelle auf "2.8V-Pegel" programmieren. Unterm Strich versucht ST hier IP durch Obskurität schützen. Vielleicht hilft es, mit professionell aussehender Mail-Adresse freundlich nach einer I2C-Register- und Funktionsbeschreibung zu fragen. mfg mf
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.