I2C maximale performance

OP #4782757
Lesenswert?
• ▲
▼
Hi,

Ich versuche möglichst wenig overhead bei der Verwendung eines I2C Bus 
Systems auf einem STM32F4 zu erzeugen, doch ich bin mir da nicht sicher, 
was am sinnvollsten ist.
Bei der Verwendung des DMA muss ich trotzdem ziemlich lange warten bei 
Dingen wie
1
while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) {
2
      if (--timeout == 0) {
3
        return 1;
4
      }
5
    }

etc., was mir das ganze ziemlich nutzlos erscheinen lässt. Bei SPI kann 
ich ja einfach den DMA aufsetzen und ich erhalte alle Daten mit einem 
Interrupt. Gibt es keine Möglichkeit das ganze Handshaking mit dem DMA 
zu lösen? Sollte ich auf den DMA verzichten und die I2C Datenaquirierung 
in die main loop nehmen, wärhend alles andere wichtige mit Interrupts 
und hoher priorität gelöst wird?

Grüsse Sebastian
#4782894
Lesenswert?
• ▲
▼
Für die I2C Events gibts doch auch Interrupts.

Du kannst zum Beginn den Interrupt aktivieren anstatt in der Schleife 
auf das Event zu warten.
Dann im Interrupt den DMA starten und gleichzeitig den Interrupt 
deaktivieren (braucht man dann ja bis zum nächsten Start nicht mehr).

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.