Forum: Mikrocontroller und Digitale Elektronik MSP430 I2C R/W-Bit manuell steuern?


von MSPler (Gast)


Lesenswert?

Hallo zusammen,

ich habe das USCI-Modul des MSP430G2553 konfiguriert. Die Slave Adresse 
etc. wird sauber übetragen, alles funktioniert soweit.

ABER:
Ich möchte den TMP275 Temperatursensor von Burr-Brown auslesen. Dieser 
erwartet im Slave-Receiver Modus R/W = LOW. Der MSP430 sendet aber als 
Master-Transmitter R/W = HIGH.

Gibt es eine Möglichkeit dieses Bit Manuell zu steuern? Im Prinzip setze 
ich R/W ja über das UCTR-Bit. Allerdings versetze ich den MSP430 darüber 
auch in den Transmitter/Receiver-Modus.

Jemand eine Idee?

Beste Grüße,
MSPler

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

MSPler schrieb:
> Ich möchte den TMP275 Temperatursensor von Burr-Brown auslesen. Dieser
> erwartet im Slave-Receiver Modus R/W = LOW. Der MSP430 sendet aber als
> Master-Transmitter R/W = HIGH.

Ohne mir den Temperatursensor näher angesehen zu haben, klingt mir das 
sehr nach einem Missverständnis.

Der Zustand des R/W-Bits hängt davon ab, ob ein Schreib- oder 
Lesezugriff durchgeführt wird, und insofern verhält sich die USCI des 
'G2553 konform zur I2C-Spezifikation.

Was bringt Dich darauf, daß das anders sein sollte, und woher hast Du 
Deinen "Master-Transmitter-Modus"?

Etwa aus dem hier kürzlich verlinkten Dokument slaa382.pdf? Die darin 
abgedruckten "Timingdiagramme" Figure 1 und Figure 2 auf Seite 2 sind 
eindeutig falsch.

(was auch daran zu erkennen sind, daß sie absolut identisch sind)

von MSPler (Gast)


Lesenswert?

Hier mal ein kleiner Auszug aus dem Datenblatt des TMP275 ...

"Slave Receiver Mode:
The first byte transmitted by the master is the slave address, with de 
R/W bit LOW."

Wenn ich vom Master aus auf die Register des TMP270 schreibe (Master 
Transmitter-Mode), setzt der MSP430 das R/W bit. Laut Datenblatt soll 
das aber angeblich anders sein.

Was verstehe ich hier falsch?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das R/W-Bit wird vom MSP430 unterschiedlich gesetzt, je nachdem ob das 
nach dem Adressbyte folgende Byte vom MSP430 gesendet wird oder ob es 
von ihm empfangen (und also vom I2C-Slave gesendet) wird.

Wenn das R/W-Bit low ist, handelt es sich um einen Schreibzugriff des 
I2C-Masters, das folgende Byte wird also vom Master an das I2C-Device 
übertragen.

Sieh Dir den "MSP430x2xx Family User's Guide" (slau144j.pdf) an, hier 
den Abschnitt ab Seite 450. Insbesondere 17.3.2 beginnend auf Seite 452.

Im Datenblatt des TMP275 steht das auch nicht anders:

> To communicate with the TMP275, the master must first address
> slave devices via a slave address byte. The slave address byte
> consists of seven address bits, and a direction bit indicating
> the intent of executing a read or write operation.

(Seite 7)

Und die beiden auf S. 8 beschriebenen Betriebsarten "Slave Receiver" und 
"Slave Transmitter" sind genau das: Ein Schreibzugriff des Masters und 
ein Lesezugriff des Masters. Im ersten Fall ist R/W low, in letzterem 
high.

von MSPler (Gast)


Lesenswert?

Hallo Rufus,

du hast Recht, im UserGuide steht das auch nicht anders als im 
Datenblatt des TMP275. Manchmal steht man einfach auf dem Schlauch.

Vielen Dank!

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.