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