STM32F4 I2C Interrupt Eventhandler

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

Reply to
Andreas Weber
Loading thread data ...

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

Reply to
Reinhardt Behm

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

Reply to
Michael Schwingen

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
Reply to
Andreas Weber

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 :-)

Reply to
Andreas Weber

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.