I want to use it in I2C hardware slave mode
Is it possible to detect I2C Stop sequence in software ?
The problem is when the master abort the communication sequence before the
normal end The slave couldn't detect de stop sequence in software point of view
There is no register or indicator on the ADUC847 that you can read to tell that
the I2C interface has received a valid stop condition
Note that the ADuc841/2 has a Stop detection(see p48 of datasheet, BIT7),
although the ADC is much different to the ADuc845.
Here are some notes that may help;
The I2CI interrupt bit (Bit 0) is set by the user every time the byte is
transmitted or received.
Bits I2CTX2 (Bit 2) will indicate whether the Micro-controller is transmitting
or receiving. I2CTX=0, means that the micro-controller is receiving.
From these 2 bits, we have the following: once the I2CTX = 0 ( receiving ) and
once the I2CI =1, then the byte has been received, the user can read the data
and the interrupt is cleared.
The interrupts will continue to occur while the data is being received. And
will continue to be cleared while the user reads the data. Once the user reads
the data and no interrupt occurs, then a STOP Condition has occurred. ( Timeout
will be required here, I’m not too sure how long ).
The only issue is that there is no guarantee that the last data byte is valid.
You will have to make that verification with software also. So care will be
From this also, the interface return to an IDLE state. So you are now sure what
state the controller is in.