Der Si7021 funktioniert am MSP430, läuft hier. Bist du sicher, nicht SDA
und SCL vertauscht zu haben?
Mein Init-Code sieht aus wie deiner, da scheinen wir beide bei TI
abgeschrieben zu haben :)
Senden mache ich wie folgt (UC_xxx ist bei mir per Makro auf UCB0xxx
gemappt):
1 | UC_CTL1 |= UCTR;
|
2 | UC_IE = UCTXIE | UCRXIE | UCALIE | UCNACKIE;
|
3 | UC_CTL1 |= UCTXSTT;
|
In der ISR wird dann jeweils das nächste Byte geschrieben:
1 | UC_TXBUF = *(i2c_tx_bfr++);
|
bzw. wenn kein Byte mehr da ist, auf Empfangen umgeschaltet:
1 | UC_CTL1 &= ~UCTR;
|
2 | UC_CTL1 |= UCTXSTT;
|
und am Schluss ein Stop gesendet:
WIMRE darf der Stopp erst gesendet werden, nachdem das letzte Byte
tatsächlich empfangen wurde, das war am Anfang etwas verwirrend.
Max