Rev. 1.00
84
March 24, 2020
Rev. 1.00
85
March 24, 2020
BS83A04C
4-Key Enhanced Touch I/O Flash MCU
BS83A04C
4-Key Enhanced Touch I/O Flash MCU
Bit 0
RXAK
: I
2
C Bus Receive acknowledge flag
0: Slave receive acknowledge flag
1: Slave does not receive acknowledge flag
The RXAK flag is the receiver acknowledge flag. When the RXAK flag is “0”, it
means that a acknowledge signal has been received at the 9th clock, after 8 bits of data
have been transmitted. When the slave device in the transmit mode, the slave device
checks the RXAK flag to determine if the master receiver wishes to receive the next
byte. The slave transmitter will therefore continue sending out data until the RXAK
flag is “1”. When this occurs, the slave transmitter will release the SDA line to allow
the master to send a STOP signal to release the I
2
C Bus.
I
2
C Bus Communication
Communication on the I
2
C bus requires four separate steps, a START signal, a slave device address
transmission, a data transmission and finally a STOP signal. When a START signal is placed on
the I
2
C bus, all devices on the bus will receive this signal and be notified of the imminent arrival of
data on the bus. The first seven bits of the data will be the slave address with the first bit being the
MSB. If the address of the slave device matches that of the transmitted address, the HAAS bit in the
IICC1 register will be set and an I
2
C interrupt will be generated. After entering the interrupt service
routine, the slave device must first check the condition of the HAAS and IICTOF bits to determine
whether the interrupt source originates from an address match or from the completion of an 8-bit
data transfer completion or from the I
2
C bus time-out occurrence. During a data transfer, note that
after the 7-bit slave address has been transmitted, the following bit, which is the 8th bit, is the read/
write bit whose value will be placed in the SRW bit. This bit will be checked by the slave device to
determine whether to go into transmit or receive mode. Before any transfer of data to or from the I
2
C
bus, the microcontroller must initialise the bus, the following are steps to achieve this:
• Step 1
Configure the corresponding pin-shared function as the I
2
C functional pins and set the IICEN bit
in the IICC0 register to “1” to enable the I
2
C bus.
• Step 2
Write the slave address of the device to the I
2
C bus address register IICA.
• Step 3
Set the I2CE interrupt enable bit of the interrupt control register to enable the I
2
C interrupt.
Start
Configure the pin-shard
I/O ports to I
2
C function
SET IICEN
Write Slave
Address to IICA
I
2
C Bus
Interrupt=?
CLR I2CE
Poll I2CF to decide
when to go to I
2
C Bus ISR
SET I2CE
Wait for Interrupt
Go to Main Program
Go to Main Program
Yes
No
I
2
C Bus Initialisation Flowchart