...the world's most energy friendly microcontrollers
2014-07-02 - Gecko Family - d0001_Rev1.30
191
www.silabs.com
See Table 15.10 (p. 191) for more information.
Table 15.10. I
2
C - Slave Receiver
I2Cn_STATE
Description
I2Cn_IF
Required
interaction
Response
-
Repeated START
received
RSTART interrupt flag
(BUSHOLD interrupt
flag)
RXDATA
Receive and compare address
ACK +
RXDATA
ACK will be sent and data will be received
NACK
NACK will be sent, slave goes idle
0x71
ADDR + W received
ADDR interrupt flag
RXDATA interrupt flag
(BUSHOLD interrupt
flag)
NACK +
CONT +
RXDATA
NACK will be sent and DATA will be received.
ACK +
RXDATA
ACK will be sent and data will be received
NACK
NACK will be sent and slave will go idle
0xB1
Data received
RXDATA interrupt flag
(BUSHOLD interrupt
flag)
NACK +
CONT +
RXDATA
NACK will be sent and data will be received
None
The slave goes idle
-
Stop received
SSTOP interrupt flag
START
START will be sent when bus becomes idle
None
The slave goes idle
-
Arbitration lost
ARBLOST interrupt
flag
START
START will be sent when the bus becomes idle
15.3.10 Transfer Automation
The I
2
C can be set up to complete transfers with a minimal amount of interaction.
15.3.10.1 DMA
DMA can be used to automatically load data into the transmit buffer and load data out from the receive
buffer. When using DMA, software is thus relieved of moving data to and from memory after each
transferred byte.
15.3.10.2 Automatic ACK
When AUTOACK in I2Cn_CTRL is set, an ACK is sent automatically whenever an ACK interaction is
possible and no higher priority interactions are pending.
15.3.10.3 Automatic STOP
A STOP can be generated automatically on two conditions. These apply only to the master transmitter.
If AUTOSN in I2Cn_CTRL is set, the I
2
C module ends a transmission by transmitting a STOP condition
when operating as a master transmitter and a NACK is received.
If AUTOSE in I2Cn_CTRL is set, the I
2
C module always ends a transmission when there is no more
data in the transmit buffer. If data has been transmitted on the bus, the transmission is ended after the
(N)ACK has been received by the slave. If a START is sent when no data is available in the transmit
buffer and AUTOSE is set, then the STOP condition is sent immediately following the START. Software
must thus make sure data is available in the transmit buffer before the START condition has been fully
transmitted if data is to be transferred.
Summary of Contents for EFM32G
Page 505: ......