Forum: Mikrocontroller und Digitale Elektronik Sensor mit 2.8V und 1.8V


von Bert S. (kautschuck)


Angehängte Dateien:

Lesenswert?

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

von minifloat (Gast)


Lesenswert?

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

von Harald A. (embedded)


Lesenswert?

Genau den von minifloat beschriebenen Compilerswitch musst Du setzen. Du 
hast aber noch nicht geschrieben, ob Du überhaupt den Originaltreiber 
verwendest.

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


Lesenswert?

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
von Harald A. (embedded)


Lesenswert?

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
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von China promoter (Gast)


Lesenswert?

Gibt ldo die zwei spannungen bereitstellen. Bei Interesse kann ich die 
Teilenummer nachschauen.

von Harald A. (embedded)


Lesenswert?

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.

von Flachtroll (Gast)


Lesenswert?

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

von Harald A. (embedded)


Lesenswert?

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.

von Euro (Gast)


Lesenswert?

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?

von Harald A. (embedded)


Lesenswert?

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
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Harald A. (embedded)


Lesenswert?

Ja, Du hast in ALLEN Punkten Recht.

von Achim M. (minifloat)


Lesenswert?

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
Noch kein Account? Hier anmelden.