GD32VF103 User Manual
364
2.
Software set START bit requesting I2C to generate a START condition to I2C bus.
3.
After sending a START condition, the I2C hardware sets the SBSEND bit in I2C status
register and enters master mode. Now software should clear the SBSEND bit by reading
I2C_STAT0 and then writing a 7-bit address or header of a 10-bit address to I2C_DATA.
I2C begins to send address or header to I2C bus as soon as SBSEND bit is cleared. If
the address sent is a header of 10-bit address, the hardware sets ADD10SEND bit after
sending header and software should clear the ADD10SEND bit by reading I2C_STAT0
and writing 10-bit lower address to I2C_DATA.
4.
After the 7-bit or 10-bit address is sent, the I2C hardware sets the ADDSEND bit and
software should clear the ADDSEND bit by reading I2C_STAT0 and then I2C_STAT1. If
the address is in 10-bit format, software should then set START bit again to generate a
repeated START condition on I2C bus and SBSEND is set after the repeated START is
sent out. Software should clear the SBSEND bit by reading I2C_STAT0 and writing
header to I2C_DATA. Then the header is sent out to I2C bus, and ADDSEND is set again.
Software should again clear ADDSEND by reading I2C_STAT0 and then I2C_STAT1.
5.
As soon as the first byte is received, RBNE is set by hardware. Software now can read
the first byte from I2C_DATA and RBNE is cleared as well.
6.
Any time RBNE is set, software can read a byte from I2C_DATA.
7.
After the second last byte is received, the software should clear ACKEN bit and set STOP
bit. These actions should complete before the end of the last byte
’
s receiving to ensure
that NACK is sent for the last byte.
8.
After last byte is received, RBNE is set. Software reads the last byte. I2C doesn
’
t send
ACK to the last byte and generate a STOP condition after the transmission of the last
byte.
Above steps require byte number N>1. If N=1, Step 7 should be performed after Step 4 and
completed before the end of the single byte
’
s receiving.