stm32 i2c Frage

Gast #4444505
Lesenswert?

Hallo,

ich versuche gerade die I2C-Schnittstelle bei meinem STM32F4 zum laufen 
zu bringen. Es funktioniert schon ganz gut nur wenn ich einen 
Stop-Befehl sende läuft er in den Timeout. Es stimmt also irgendwas bei 
der while-Schleife nicht.
Habe es wie folgt gemacht:

void I2C_send_Stop()
{

  uint32_t timeout=0;

  I2C_GenerateSTOP(I2C1, ENABLE);

    timeout=0x3000;
    while ((!I2C_GetFlagStatus(I2C1, I2C_FLAG_TXE)) || 
(!I2C_GetFlagStatus(I2C1, I2C_FLAG_BTF) || (!I2C_GetFlagStatus(I2C1, 
I2C_FLAG_RXNE)) ))
    {
      if (timeout!=0)
      {
        timeout--;
      }
      else
      {
        return (I2C1_timeout(4));
      }
    }

}

Kann mir da jemand weiterhelfen?
Achja und weiß vielleicht jemand wie man ein ACK abfragt? Habe es mit 
Abfrage des AF-Flags versucht, hat aber nicht geklappt.

Danke schonmal

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