15. I2C - Inter-Integrated Circuit Interface. . . . . . . . . . . . . . . . . . . . . 395
15.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
15.2 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
. . . . . . . . . . . . . . . . . . . . . . . . . 396
15.3.1 I2C-Bus Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 397
15.3.1.1 START and STOP Conditions . . . . . . . . . . . . . . . . . . . . . . 398
15.3.1.2 Bus Transfer
. . . . . . . . . . . . . . . . . . . . . . . . . . . 399
15.3.1.3 Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
15.3.1.4 10-bit Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . 400
15.3.1.5 Arbitration, Clock Synchronization, Clock Stretching . . . . . . . . . . . . . . 401
15.3.2 Enable and Reset . . . . . . . . . . . . . . . . . . . . . . . . . . 401
15.3.3 Safely Disabling and Changing Slave Configuration . . . . . . . . . . . . . . . 401
15.3.4 Clock Generation. . . . . . . . . . . . . . . . . . . . . . . . . . . 401
15.3.5 Arbitration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
15.3.6 Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
15.3.6.1 Transmit Buffer and Shift Register . . . . . . . . . . . . . . . . . . . . 402
15.3.6.2 Receive Buffer and Shift Register
. . . . . . . . . . . . . . . . . . . . 403
15.3.7 Master Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . 404
15.3.7.1 Master State Machine . . . . . . . . . . . . . . . . . . . . . . . . 405
15.3.7.2 Interactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
15.3.7.3 Automatic ACK Interaction . . . . . . . . . . . . . . . . . . . . . . . 407
15.3.7.4 Reset State . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
15.3.7.5 Master Transmitter
. . . . . . . . . . . . . . . . . . . . . . . . . 408
15.3.7.6 Master Receiver . . . . . . . . . . . . . . . . . . . . . . . . . . 410
15.3.8 Bus States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
15.3.9 Slave Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
15.3.9.1 Slave State Machine . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3.9.2 Address Recognition . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3.9.3 Slave Transmitter . . . . . . . . . . . . . . . . . . . . . . . . . . 414
15.3.9.4 Slave Receiver . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
15.3.10 Transfer Automation . . . . . . . . . . . . . . . . . . . . . . . . . 416
15.3.10.1 DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
15.3.10.2 Automatic ACK . . . . . . . . . . . . . . . . . . . . . . . . . . 417
15.3.10.3 Automatic STOP . . . . . . . . . . . . . . . . . . . . . . . . . . 417
15.3.11 Using 10-bit Addresses . . . . . . . . . . . . . . . . . . . . . . . . 417
15.3.12 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
15.3.12.1 ABORT Command . . . . . . . . . . . . . . . . . . . . . . . . . 417
15.3.12.2 Bus Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
15.3.12.3 I2C-Bus Errors . . . . . . . . . . . . . . . . . . . . . . . . . . 418
15.3.12.4 Bus Lockup
. . . . . . . . . . . . . . . . . . . . . . . . . . . 418
15.3.12.5 Bus Idle Timeout . . . . . . . . . . . . . . . . . . . . . . . . . . 418
15.3.12.6 Clock Low Timeout . . . . . . . . . . . . . . . . . . . . . . . . . 418
15.3.12.7 Clock Low Error . . . . . . . . . . . . . . . . . . . . . . . . . . 419
15.3.13 DMA Support
. . . . . . . . . . . . . . . . . . . . . . . . . . . 419
15.3.14 Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
15.3.15 Wake-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
15.4 Register Map. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
15.5 Register Description . . . . . . . . . . . . . . . . . . . . . . . . . . 421
15.5.1 I2Cn_CTRL - Control Register . . . . . . . . . . . . . . . . . . . . . . 421
15.5.2 I2Cn_CMD - Command Register . . . . . . . . . . . . . . . . . . . . . 425
Table of Contents
939