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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.