Forum: Mikrocontroller und Digitale Elektronik Pullups auf MSP430 Launchpad - verwirrt


von ToMa (Gast)


Lesenswert?

Ich bin etwas verwirrt, was die Pull-UP Widerstände beim Lauchpad 
(MSP430G2553)betrifft.
Beispiele für I2C machen die Initialisierung auf verschiedene Weisen:
z.B.
1
PSEL &= ~( SCL | SDA );
2
PDIR &= ~SCL;
3
PDIR &= ~SDA;
oder
1
PDIR  &= ~SDA; 
2
PREN |= SDA;  
3
POUT |=  SDA;
oder
1
P1DIR |= SDA; 
2
P1DIR |= SCL; 
3
POUT |=  SDA;
4
POUT |=  SCL;
Bei manchen also nur über POUT (dann aber doch nicht open-drain?), bei 
anderen mit PDIR, aber mal ohne PREN, mal mit. Und dann ist auch noch 
High und Low teilweise unterschiedlich angegeben? Wie ist es in welchem 
Fall richtig? Woher kommt diese Varianz?

Zu Variante 1 sagt TI
1
/* Using the direction pin to control the output. When set as an input, the
2
hardware pull-ups will take over and cause the pin to go high. When
3
set as an output, the MSP430 will drive the lines low */
Geht das also nur, wenn am Slave keine Pull-ups sind? Ich habe 
allerdings gelesen, dass man die Pullups vom Launchpad nicht für I2C 
nutzen soll, habe ich da was missverstanden?

Ich will eigentlich die internen Pull-Ups nicht verwenden, auf dem 
Breakout Board vom Slave sind ja welche drauf - oder geht das so nicht?

Könntet ihr mir bitte erklären, was nun genau wie festgelegt werden 
muss, damit die Signale korrekt definiert sind?

von ToMa (Gast)


Lesenswert?

Nachtrag: Alles SW-i2c.

von Klaus R. (klara)


Lesenswert?

Hallo,
die internen Pull-Ups ist relativ hochohmig. Deshalb sind auch nur 
kürzere Strecken möglich. Ob Du die internen Pull-Ups verwendest ist 
ziemlich egal wenn Du externe Pull-Ups einsetzt. Ein passabler Wert ist 
4,7 K. Es können auch ruhig 30% weniger sein oder etwas mehr.

Die Länge der Leitung ist aber nicht alles. Es kommt auch auf die I2C - 
Taktfrequenz an. Je höher der Takt, desto kürzer wird der maximal 
mögliche Weg sein. Der kleinst zulässige Pull-Up-Widerstand liegt bei 5 
V I2C-Spannung etwas unter 2 K. Bei 3,3 V liegt der Wert darunter. Wenn 
Du diese Grenzen ausloten willst, dann mußt Du Dir die Spezifikationen 
des I2C-Buses hineinziehen.
mfg Klaus

von ToMa (Gast)


Lesenswert?

Ok, und wie müsste ich dann die Ports setzen? Wie gesagt, die Beispiele 
oben widersprechen sich ja (und keins läuft durch).

von Klaus R. (klara)


Lesenswert?

Hallo,
ich kann Dir nur raten die Code-Beispiele von TI zum Launchpad 
durchzuarbeiten, die funktionieren. Hier ein Link zu den Samples.

http://www.ti.com/lit/zip/slac485

msp430g2xx3_uscib0_i2c_01.c
...
msp430g2xx3_uscib0_i2c_13.c

msp430g2xx3_usci_i2c_standard_master.c
msp430g2xx3_usci_i2c_standard_slave.c

mfg klaus

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.