www.ti.com

Peripheral Architecture

2.12.1Configuring the I2C in Master Receiver Mode and Servicing Receive Data via CPU

The following initialization procedure is for the I2C controller configured in Master Receiver mode. The CPU is used to move data from the I2C receive register to CPU memory (memory accessible by the CPU).

1.Enable I2C clock from the Power and Sleep Controller (see the TMS320C642x DSP Power and Sleep Controller (PSC) User's Guide (SPRUEN8)).

2.Place I2C in reset (clear IRS = 0 in ICMDR).

3.Configure ICMDR:

Configure I2C as Master (MST = 1).

Indicate the I2C configuration to be used; for example, Data Receiver (TRX = 0)

Indicate 7-bit addressing is to be used (XA = 0).

Disable repeat mode (RM = 0).

Disable loopback mode (DLB = 0).

Disable free data format (FDF = 0).

Optional: Disable start byte mode if addressing a fully fledged I2C device (STB = 0).

Set number of bits to transfer to be 8 bits (BC = 0).

4.Configure Slave Address: the I2C device this I2C master would be addressing (ICSAR = 7BIT ADDRESS).

5.Configure the peripheral clock operation frequency (ICPSC). This value should be selected in such a way that the frequency is between 6.7 and 13.3 MHz.

6.Configure I2C master clock frequency:

Configure the low-time divider value (ICCLKL).

Configure the high-time divider value (ICCLKH).

7.Make sure the interrupt status register (ICSTR) is cleared:

Read ICSTR and write it back (write 1 to clear) ICSTR = ICSTR

Read ICIVR until it is 0.

8.Take I2C controller out of reset: enable I2C controller (set IRS bit = 1 in ICMDR).

9.Wait until bus busy bit is cleared (BB = 0 in ICSTR).

10.Generate a START event, followed by Slave Address, etc. (set STT = 1 in ICMDR).

11.Wait until data is received (ICRRDY = 1 in ICSTR).

12.Read data:

If ICRRDY = 1 in ICSTR, then read ICDRR.

Perform the previous two steps until receiving one byte short of the entire byte expecting to receive.

13.Configure the I2C controller not to generate an ACK on the next/final byte reception: set NACKMOD bit for the I2C to generate a NACK on the last byte received (set NACKMOD = 1 in ICMDR).

14.End transfer/release bus when transfer is done. Generate a STOP event (set STP = 1 in ICMDR).

2.12.2Configuring the I2C in Slave Receiver and Transmitter Mode

The following initialization procedure is for the I2C controller configured in Slave Receiver and Transmitter mode.

1.Enable I2C clock from PSC Level. Do this so that you will be able to configure the I2C registers.

2.Place I2C in reset (clear IRS = 0 in ICMDR).

3.Assign the Address (a 7 bit or 10 bit address) that the I2C Controller will be responding to. This is the Address that the Master is going to broadcast when attempting to start communication with this slave device; I2C Controller.

If the I2C is able to respond to 7-bit Addressing: Configure XA = 0

If the I2C is able to respond to 10-bit Addressing: Configure XA = 1

Program ICOAR = Assigned Address (7-bit or 10-bit Address)

SPRUEN0D –March 2011

Inter-Integrated Circuit (I2C) Peripheral

19

Submit Documentation Feedback

 

 

© 2011, Texas Instruments Incorporated

Page 19
Image 19
Texas Instruments TMS320C642X manual Configuring the I2C in Slave Receiver and Transmitter Mode