STM32F4 I2C Interrupt Eventhandler

Jul 15, 2021 4 Replies

Hallo NG,



kann mir einer sagen, wann der der I2C Eventhandler aufgerufen wird, wenn CR2_ITEVTEN und CR2_ITBUFEN gesetzt sind.



Das RM0386 Rev 5, Seite 1020 sagt mit CR2_ITBUFEN bei TxE (Transmit buffer empty) und RxNE (Receive buffer not empty):


1: TxE = 1 or RxNE = 1 generates Event Interrupt (whatever the state of DMAEN)


sinnvoll halten) oder auch dauerhaft (so sieht es bei mir aus) anspricht.



Hintergrund: Ich versuche mich gerade an Master transmit und der event handler wird



der Eventhandler mit identischem I2C_SR1/I2C_SR2 aufgerufen wurde:



1 evnt = 0x00030001 = | SB | BUSY | MSL | 1 evnt = 0x00030000 = | BUSY | MSL | 1 evnt = 0x00070082 = | TxE | ADDR | TRA | BUSY | MSL |
388 evnt = 0x00070080 = | TxE | TRA | BUSY | MSL | 1 evnt = 0x00070084 = | TxE | BTF | TRA | BUSY | MSL | 26 evnt = 0x00070084 = | TxE | BTF | TRA | BUSY | MSL | 1 evnt = 0x00030001 = | SB | BUSY | MSL | 1 evnt = 0x00030000 = | BUSY | MSL | 1 evnt = 0x00030002 = | ADDR | BUSY | MSL | 2 evnt = 0x00030040 = | RxNE | BUSY | MSL |

Die 388 und 26 sind mir oben unklar: Warum wird der Eventhandler


Ich hab keine Ahnung von dem Chip, aber kann es sein, dass du in der ISR

race-conditions vermeidet).

Sprich: Du musst im Interrupthandler entweder die Ursache beheben (also bei TXE neue Daten nachschieben), oder, wenn Du nichts mehr hast, den Interrupt disablen.

Falls Du dann noch was brauchst, um Fehlerbedingungen teilweise triggern zu

formatting link

cu Michael

Hi Michael,

Am 15.07.21 um 15:44 schrieb Michael Schw>> sinnvoll halten) oder auch dauerhaft (so sieht es bei mir aus) anspricht.

Danke, so sieht es aus. Habe mal bei anderen in den Code geschaut und Paparazzi [1] macht es genau so: CR2_ITBUFEN nur bis 1 byte vor

Oh cool, danke.

[1]
formatting link

Hi Reinhard,

Am 15.07.21 um 15:13 schrieb Re>> kann mir einer sagen, wann der der I2C Eventhandler aufgerufen wird,

ISR neu aufgerufen wird. Ist aber wohl doch nicht so :-)

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required