[LPC11Cxx] Chip_I2C_MasterRead(.) keine MultipleByteRead-Funktion?

Gast #5154062
Lesenswert?

Hallo Leute,

kurze Frage an die Runde, da ich hier bei der i2c_11xx-Bibliothek nicht 
weiterkomme. Und zwar geht es um die i2c-Auslesefunktion.
Das Problem ist: Trotz dem korrekt angegebenen xfer.rxSz (größer 1) wird 
nur ein Byte ausgelesen und anschließend die Verbindung per NACK 
beendet. Der StateHandler scheint eigentlich i.O. zu sein.

Hat jemand ein ähnliches Problem?

Danke im Voraus
Gast #5154090
Lesenswert?

Naja, es ist eben die Standard-Bibliothek, ich verwende ja nur die 
Befehle daraus.
Das ist der Codeausschnitt. Trotz allem wird immer nur ein Byte 
empfangen.



// 7-Bit-Sensoradresse zuweisen
xfer.slaveAddr = I2C_ADDR_SENSOR;
// Anzahl der zu empfangenen Bytes
xfer.rxSz = 2;
// Auf das Empfangs-Array verweisen
xfer.rxBuff = &rxBuffer[0];

Chip_I2C_MasterRead(i2cDev, xfer.slaveAddr, xfer.rxBuff, xfer.rxSz);
Gast #5154124
Lesenswert?

Ja genau, den Thread habe ich ebenfalls gefunden gehabt - leider ist es 
so, dass bei mir der stateHandler-0x58 abgearbeitet wird:

/* Rx handling */
case 0x58:  /* Data Received and NACK sent */
cclr &= ~I2C_CON_STO;


Dieser sendet eben direkt ohne die Überprüfung der Byteanzahl ein NACK. 
Für die Abarbeitung der Byteanzahl ist eher der case 0x50 zuständig mit:

case 0x50:  /* Data Received and ACK sent */
*xfer->rxBuff++ = pI2C->DAT;
xfer->rxSz--;

Allem Anschein nach wird dieser aber nicht abgearbeitet, da ich 
unabhängig vom I²C-Device und CommandByte nie mehr als ein Byte aus dem 
Bus herausbekomme (wohlgemerkt, nur beim Lesen, das Schreiben klappt 
hervorragend).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren