Contents RM0402
20/1163 RM0402 Rev 6
23 Fast-mode Plus Inter-integrated circuit (FMPI2C) interface . . . . . . . 656
23.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
23.2 FMPI2C main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
23.3 FMPI2C implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
23.4 FMPI2C functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
23.4.1 FMPI2C block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
23.4.2 FMPI2C pins and internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
23.4.3 FMPI2C clock requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
23.4.4 Mode selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
23.4.5 FMPI2C initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
23.4.6 Software reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
23.4.7 Data transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
23.4.8 FMPI2C slave mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
23.4.9 FMPI2C master mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
23.4.10 FMPI2C_TIMINGR register configuration examples . . . . . . . . . . . . . . 689
23.4.11 SMBus specific features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
23.4.12 SMBus initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
23.4.13 SMBus: FMPI2C_TIMEOUTR register configuration examples . . . . . 695
23.4.14 SMBus slave mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
23.4.15 Error conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
23.4.16 DMA requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704
23.4.17 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705
23.5 FMPI2C low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705
23.6 FMPI2C interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
23.7 FMPI2C registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707
23.7.1 FMPI2C control register 1 (FMPI2C_CR1) . . . . . . . . . . . . . . . . . . . . . 707
23.7.2 FMPI2C control register 2 (FMPI2C_CR2) . . . . . . . . . . . . . . . . . . . . . 709
23.7.3 FMPI2C own address 1 register (FMPI2C_OAR1) . . . . . . . . . . . . . . . 712
23.7.4 FMPI2C own address 2 register (FMPI2C_OAR2) . . . . . . . . . . . . . . . 713
23.7.5 FMPI2C timing register (FMPI2C_TIMINGR) . . . . . . . . . . . . . . . . . . . 714
23.7.6 FMPI2C timeout register (FMPI2C_TIMEOUTR) . . . . . . . . . . . . . . . . 715
23.7.7 FMPI2C interrupt and status register (FMPI2C_ISR) . . . . . . . . . . . . . 716
23.7.8 FMPI2C interrupt clear register (FMPI2C_ICR) . . . . . . . . . . . . . . . . . . 718
23.7.9 FMPI2C PEC register (FMPI2C_PECR) . . . . . . . . . . . . . . . . . . . . . . . 719
23.7.10 FMPI2C receive data register (FMPI2C_RXDR) . . . . . . . . . . . . . . . . . 720
23.7.11 FMPI2C transmit data register (FMPI2C_TXDR) . . . . . . . . . . . . . . . . 720