Renesas H8S/2111B 用户手册

下载
页码 582
Rev. 1.00, 05/04, page 282 of 544 
 
13.3.1 I
2
C Bus Data Register (ICDR) 
ICDR is an 8-bit readable/writable register that is used as a transmit data register when 
transmitting and a receive data register when receiving. ICDR is internally divided into a shift 
register (ICDRS), receive buffer (ICDRR), and transmit buffer (ICDRT). Data transfers among 
these three registers are performed automatically in accordance with changes in the bus state, and 
they affect the status of internal flags such as ICDRE and ICDRF. 
In master transmit mode with the I
2
C bus format, writing transmit data to ICDR should be 
performed after start condition detection. When the start condition is detected, previous write data 
is ignored. In slave transmit mode, writing should be performed after the slave addresses match 
and the TRS bit is automatically changed to 1. 
If the IIC is in transmit mode (TRS = 1) and ICDRT has the next transmit data (the ICDRE flag  
is 0) after successful transmission/reception of one frame of data using ICDRS, data is transferred 
automatically from ICDRT to ICDRS. 
If the IIC is in transmit mode (TRS = 1) and ICDRT has the next data (the ICDRE flag is 0), data 
is transferred automatically from ICDRT to ICDRS, following transmission of one frame of data 
using ICDRS. When the ICDRE flag is 1 and the next transmit data writing is waited, data is 
transferred automatically from ICDRT to ICDRS by writing to ICDR. If I
2
C is in receive mode 
(TRS = 0), no data is transferred from ICDRT to ICDRS. Note that data should not be written to 
ICDR in receive mode. 
Reading receive data from ICDR is performed after data is transferred from ICDRS to ICDRR. 
If I
2
C is in receive mode and no previous data remains in ICDRR (the ICDRF flag is 0), data is 
transferred automatically from ICDRS to ICDRR, following reception of one frame of data using 
ICDRS. If additional data is received while the ICDRF flag is 1, data is transferred automatically 
from ICDRS to ICDRR by reading from ICDR. In transmit mode, no data is transferred from 
ICDRS to ICDRR. Always set I
2
C to receive mode before reading from ICDR. 
If the number of bits in a frame, excluding the acknowledge bit, is less than eight, transmit data 
and receive data are stored differently. Transmit data should be written justified toward the MSB 
side when MLS = 0 in ICMR, and toward the LSB side when MLS = 1. Receive data bits should 
be read from the LSB side when MLS = 0, and from the MSB side when MLS = 1. 
ICDR can be written to and read from only when the ICE bit is set to 1 in ICCR. The initial value 
of ICDR is undefined.