I2C Registers
21.4.1.17 I2C_CNT Register (offset = 98h) [reset = 0h]
I2C_CNT is shown in
and described in
CAUTION: During an active transfer phase (between STT having been set to 1 and reception of ARDY),
no modification must be done in this register. Changing it may result in an unpredictable behavior. This
read/write register is used to control the numbers of bytes in the I2C data payload.
Figure 21-32. I2C_CNT Register
31
30
29
28
27
26
25
24
Reserved
R-0h
23
22
21
20
19
18
17
16
Reserved
R-0h
15
14
13
12
11
10
9
8
DCOUNT
R/W-0h
7
6
5
4
3
2
1
0
DCOUNT
R/W-0h
LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset
Table 21-25. I2C_CNT Register Field Descriptions
Bit
Field
Type
Reset
Description
31-16
Reserved
R
0h
15-0
DCOUNT
R/W
0h
Data count.
I2C Master Mode only (receive or transmit
F/S).
This
16-bit countdown counter decrements by 1 for every byte received or
sent through the I2C interface.
A write initializes DCOUNT to a saved initial value.
A read returns the number of bytes that are yet to be received or
sent.
A read into DCOUNT returns the initial value only before a start
condition and after a stop condition.
When DCOUNT reaches 0, the core generates a stop condition if a
stop condition was specified (I2C_CON.STP = 1) and the ARDY
status flag is set to 1 in the I2C_IRQSTATUS_RAW register.
Note that DCOUNT must not be reconfigured after I2C_CON.STT
was enabled and before ARDY is received.
Note
1: In case of I2C mode of operation, if I2C_CON.STP = 0, then the
I2C asserts SCL = 0 when DCOUNT reaches 0.
The CPU can then reprogram DCOUNT to a new value and resume
sending or receiving data with a new start condition (restart).
This process repeats until the CPU sets to 1 the I2C_CON.STP bit.
The ARDY flag is set each time DCOUNT reaches 0 and DCOUNT
is reloaded to its initial value.
Values after reset are low (all 16 bits).
Note
2: Since for DCOUNT = 0, the transfer length is 65536, the module
does not allow the possibility to initiate zero data bytes transfers.
0x0 = Data counter = 65536 bytes (216)
0x1 = Data counter = 1 bytes
0xFFFF = Data counter = 65535 bytes (216 - 1)
3747
SPRUH73H – October 2011 – Revised April 2013
I2C
Copyright © 2011–2013, Texas Instruments Incorporated