Forum: Mikrocontroller und Digitale Elektronik 1-Wire Frage: DS28e05 mit DS2480 interface chip auslesen


von GS (chromosoma)


Lesenswert?

Moin,

Kann ich den DS28E05 eprom mithilfe von ds2480  interface chip auslesen?

Der EPROM akzeptiert laut Datasheet nur max 3.6 V. Während der 1Wire 
interface chip mit 5V arbeitet.

Wird der EPROm dadurch zerstört, oder vllt ist es egal? Kann man das 
problem mit einem 5V zu 3.3V level shifter lösen?

https://www.analog.com/media/en/technical-documentation/data-sheets/DS2480B.pdf

https://www.analog.com/media/en/technical-documentation/data-sheets/ds28e05.pdf

von Falk B. (falk)


Lesenswert?

GS schrieb:
> Wird der EPROm dadurch zerstört, oder vllt ist es egal?

Naja, das sollte man nicht überstrapazieren.

> Kann man das
> problem mit einem 5V zu 3.3V level shifter lösen?

Ja. Siehe Pegelwandler. Ein MOSFET reicht, BSS138 ist dein Freund.

von Frank K. (fchk)


Lesenswert?

Wenn im Datenblatt "max. 3.6V" steht, dann ist das ernst gemeint.

Du musst das EEPROM mit 3.3V versorgen. Für die Datenleitung könnte ein 
bidirektionaler Levelshifter wie der hier funktionieren:
https://iamkisly.medium.com/simple-i2c-level-converter-916f1e76256a

Die vorgeschlagenen 10k als Pullup-Widerstand sind zu groß. Du musst auf 
1k heruntergehen. Mit dem Levelshifter wirst Du wahrscheinlich keine 
langen Strecken überwinden können, aber für einige wenige 10 cm sollte 
es reichen. Die "Strong Pullup" Funktion des DS2480 wird durch den 
Pegelwandler nicht funktionieren.

fchk

: Bearbeitet durch User
von GS (chromosoma)


Lesenswert?

Ok,danke für die Antworten.  Ich habe trotzdem den Chip angeschlossen. 
Nach reset Befehl gibt mir DS2480 "alarm presence" feedback zuruck.

Ich folge diesen App Note (s.9)
https://techwww.in.tu-clausthal.de/site/Dokumentation/Sensoren/OneWire/app_SIO-OW.pdf


Wo genau ist der Unterschied zwischen presence und alarm presence?

Beim Versuch den Speicher zu lesen bekomme ich noch Probleme.  Dies kann 
aber nocn an der software liegen...

von Frank K. (fchk)


Lesenswert?

Nimm erstmal ein 5V EEPROM wie den DS2431.
https://www.analog.com/en/products/ds2431.html

Damit kannst Du sicher ausschließen, dass Probleme durch den 
Levelshifter auftreten.

Erst wenn Du den zuverlässig enumerieren, lesen und beschreiben kannst, 
macht es Sinn, den Levelshifter und Deinen DS28E05 anzufassen. Vorher 
weißt Du nicht ob es Deine Software oder Dein Aufbau ist, der Probleme 
macht.

Warum hast Du Dir den DS2805 überhaupt ausgesucht? Es gibt den DS28E07, 
der 5V verträgt? Oder ein anderes 1-Wire Host-Interface?

fchk

von GS (chromosoma)


Lesenswert?

Ich habe ds28 nicht ausgesucht, es ist so leider vorgegeben. Und einen 
rs232 to 3.3v 1wire habe ich nicht gefunden.

von Frank K. (fchk)


Lesenswert?

Es geht auch anders. Lies das hier:

https://www.analog.com/en/resources/technical-articles/using-a-uart-to-implement-a-1wire-bus-master.html

Da wird beschrieben, wie man mit einem UART einen 1-Wire Master 
realisiert. Wenn Du RS232 hast, brauchst Du einen RS232-nach-3.3V 
Umsetzer wie den MAX3221.

https://www.ti.com/lit/ds/symlink/max3221.pdf

Wenn der Ausgangsstrom vom MAX3221 nicht reicht, kannst Du noch einen 
Treiber wie den 74LVC1G07 dahinter schalten:

https://www.ti.com/lit/ds/symlink/sn74lvc1g07.pdf

Beispielsoftware findet sich als Link am Ende der AppNote.

Damit umgehst Du den Levelshifter und den relativ speziellen 
Bridge-Baustein.

fchk

von GS (chromosoma)


Lesenswert?

Das ist alles sehr interessant,  und ich werde die info auch lesen...

Aber wo ist denn bitte  der Unterschied zwishxen alarm presence  und 
presence? :)

Wenn ich den Speicherchip trenne, gibt  die Abfrage "no presence" 
zurück, was auch gut ist.

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

GS schrieb:
> Das ist alles sehr interessant,  und ich werde die info auch lesen...
>
> Aber wo ist denn bitte  der Unterschied zwishxen alarm presence  und
> presence? :)

Bei Alarm Presence stimmt was nicht.

Siehe Datenblatt DS2480B Seite 16. Nach der Timing-Tabelle wird der 
Presence Detect Mechanismus erklärt. Da steht auch das mit dem Alarm 
Presence.

Ich wiederhole mich: Probiere erstmal einen 5V-Chip aus, bevor Du Dich 
an Deinen 3.3V Chip machst.

fchk

von Frank K. (fchk)


Lesenswert?

So, nochmal: "Alarm Presence" ist ein Bit im DS2480, der eine 
Fehlfunktion auf dem Bus anzeigt. Der DS28E05 kennt diese Funktion 
nicht. Heißt: Da ist bei Dir elektrisch was faul.

Deswegen zuerstmal ohne Pegelwandler mit einem 5V 1-Wire Chip testen. 
Dabei ist es fast egal, welchen Du nimmst.

fchk

von Peter D. (peda)


Lesenswert?

GS schrieb:
> Ich habe ds28 nicht ausgesucht, es ist so leider vorgegeben.

Ja dann mußt Du eben das 1-wire Protokoll mit einem beliebigen 3,3V µC 
in Software nachbilden. Ist nicht weiter schlimm, da es ja im Datenblatt 
ausführlich beschrieben ist. Kostet also nur etwas Fleiß.

Die beiden genannten ICs können jedenfalls nicht zusammen, der eine will 
min 4,5V, der andere max 3,6V.

von Bauform B. (bauformb)


Lesenswert?

Peter D. schrieb:
> Ja dann mußt Du eben das 1-wire Protokoll mit einem beliebigen 3,3V µC
> in Software nachbilden.

Allerdings muss das etwas schneller gehen als normal:
1
The DS28E05 supports overdrive speed of 76.9kbps (max) only and
2
cannot be used together with standard speed or dual-speed 1-Wire
3
slaves on the bus.

Der braucht zwar nur 400uA zum programmieren, aber wegen overdrive 
sollte man einen "strong pullup" in Erwägung ziehen.
1
The value of the pullup resistor primarily depends on the 1-Wire
2
pullup voltage, network size and load conditions.

Schlimm genug, dass der DS28E05 vorgegeben ist, aber wie sieht es auf 
der anderen Seite aus? Geht da evt. I2C? Der DS2484R funktioniert 
ähnlich wie der DS2480, aber auch als Pegelwandler, 3.3V zu 5V und 
umgekehrt.

von Bauform B. (bauformb)


Lesenswert?

Frank K. schrieb:
> "Alarm Presence" ist ein Bit im DS2480, der eine
> Fehlfunktion auf dem Bus anzeigt. Der DS28E05 kennt diese Funktion
> nicht. Heißt: Da ist bei Dir elektrisch was faul.

Ja, ein 3.3V-Chip bekommt mit 5V leicht mal faulige Stellen ;) Wenn er 
noch funktioniert, kommt der alarm evt. daher:
1
Presence Detect Sample Time tMSP (Notes 2, 15) 8 ... 10 µs
2
3
Note 15: Interval after tRSTL during which a bus master can read a
4
logic 0 on IO if there is a DS28E05 present. The power-up presence
5
detect pulse could be outside this interval but will be complete
6
within 2ms for a 3.3V VPUP or 20ms for a 1.8V VPUP after power-up.

von GS (chromosoma)


Lesenswert?

Alles klar,

Vielen Dank für die Antworten.

Bevor ich einen uC nehme, Versuche ich die einfache Lösung mit N-MOSFET 
und zwei Widerständen.

Sogar Analog Devices empfiehlt das:

https://www.analog.com/en/resources/design-notes/how-to-level-shift-1wire-systems.html

von Falk B. (falk)


Lesenswert?

Peter D. schrieb:
> Die beiden genannten ICs können jedenfalls nicht zusammen, der eine will
> min 4,5V, der andere max 3,6V.

Das stimmt so allgemein (mal wieder) nicht. Frank hat es klar gesagt. 
Mit einem Pegelwandler kann man den EEPROM ansprechen und lesen. 
Allerdings kann man dann nicht schreiben, denn der braucht einen Strong 
Pull Up. Das geht mit dem IC und dem externen Pegelwandler nicht.

von Falk B. (falk)


Lesenswert?

GS schrieb:
> Vielen Dank für die Antworten.
>
> Bevor ich einen uC nehme, Versuche ich die einfache Lösung mit N-MOSFET
> und zwei Widerständen.
>
> Sogar Analog Devices empfiehlt das:
>
> 
https://www.analog.com/en/resources/design-notes/how-to-level-shift-1wire-systems.html

Damit kann man den EEPROM lesen aber nicht schreiben. Nun zum 3. Mal . . 
.

von Frank K. (fchk)


Lesenswert?

Falk B. schrieb:
> GS schrieb:
>> Vielen Dank für die Antworten.
>>
>> Bevor ich einen uC nehme, Versuche ich die einfache Lösung mit N-MOSFET
>> und zwei Widerständen.

Die von mir vorgeschlagene UART-Lösung ist einfacher. Da brauchst Du 
keine uC-Firmware zu schreiben.

> 
https://www.analog.com/en/resources/design-notes/how-to-level-shift-1wire-systems.html
>
> Damit kann man den EEPROM lesen aber nicht schreiben. Nun zum 3. Mal . .

Na ja, mit der Lösung aus Figure 2 würde auch das gehen. Aber der 
DS2480B hat keinen Ausgangspin, mit dem er den externen Strong Pullup 
aktivieren könnte. Schade auch. Bei der UART-Lösung könnte man dafür 
eine Handshake-Leitung (z.B. DTR) nehmen.

fchk

von Falk B. (falk)


Lesenswert?

Wenn man das Datenblatt des DS28E05 genau liest, läuft der mit 1,7-3,6V 
IO/VCC Spannung. Beim Schreiben des EEPROM darf diese nicht unter 1,69V 
sinken, dabei zieht der IC max. 400uA.

"Note 18:  Current drawn from IO during the EEPROM programming interval, 
during which the voltage at IO must not drop below 1.69V."

D.h. mit einem 1K Pull Up an 3,3V kann man den EEPROM ohne zusätzlichen 
Strong Pull Up schreiben (400uA durch 1k = 0,4V Spannungsabfall = 2,9V 
VCC). D. h. der mehrfach zitierte Pegelwandler mit 1k auf der 3,3V Seite 
und vielleicht 3,3k auf der 5V Seite reichen aus, um beide ICs 
vollständig zu verbinden!

von Falk B. (falk)


Lesenswert?

Für die Test des Aufbaus sollte man erstmal den direkten Lesezugriff auf 
den EEPROM machen.  Kommando READ_ROM, das geht, weil nur ein IC am Bus 
hängt. Dann muss man die 8 Bytes lesen und die CRC prüfen. Wenn das 
klappt, geht es weiter.

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Siehe Anhang

von GS (chromosoma)


Lesenswert?

Ja, so werde ich auch machen, mit einem 2n7000.

Die Teile sind schon bestellt

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