Datasheet
Bosch Sensortec | BME680 Datasheet
36 | 50
Modifications reserved |Data subject not change without notice | Printed in Germany
Document number: BST-BME680-DS001-00 Revision_1.0_072017
The I²C interface uses the following pins:
SCK: serial clock (SCL)
SDI: data (SDA)
SDO: Slave address LSB (GND = ‘0’, V
DDIO
= ‘1’)
CSB must be connected to V
DDIO
to select I²C interface. SDI is bi-directional with open drain to GND: it must be externally
connected to V
DDIO
via a pull up resistor. Refer to Chapter 7 for connection instructions.
The following abbreviations will be used in the I²C protocol figures:
S Start
P Stop
ACKS Acknowledge by slave
ACKM Acknowledge by master
NACKM Not acknowledge by master
6.2.1 I²C write
Writing is done by sending the slave address in write mode (RW = ‘0’), resulting in slave address 111011X0 (‘X’ is determined
by state of SDO pin. Then the master sends pairs of register addresses and register data. The transaction is ended by a stop
condition. This is depicted in Picture 4.
Start RW ACKS ACKS ACKS
1 1 1 0 1 1 X 0 1 0 1 0 0 0 0 0 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
…
ACKS ACKS Stop
…
1 0 1 0 0 0 0 1 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Register data - address A0h
Register address (A0h)
Register address (A1h)
S
Slave Address
Control byte
Data byte
Control byte
Data byte
P
Register data - address A1h
Picture 4: I²C multiple byte write (not auto-incremented)
6.2.2 I²C read
To be able to read registers, first the register address must be sent in write mode (slave address 111011X0). Then either a
stop or a repeated start condition must be generated. After this the slave is addressed in read mode (RW = ‘1’) at address
111011X1, after which the slave sends out data from auto-incremented register addresses until a NOACKM and stop
condition occurs. This is depicted in Picture 5, where register 0xF6 and 0xF7 are read.
Start RW ACKS ACKS
1 1 1 0 1 1 X 0 1 1 1 1 0 1 1 0
Start RW ACKS ACKM NOACKM Stop
1 1 1 0 1 1 X 1 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Control byte
Data byte
Data byte
Register address (F6h)
S
Slave Address
P
S
Slave Address
Register data - address F7h
Register data - address F6h
Picture 5: I²C multiple byte read