Texas Instruments TMS320C642X Stereo System User Manual


 
www.ti.com
Peripheral Architecture
2.12.1 Configuring 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.2 Configuring 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)
19
SPRUEN0D–March 2011 Inter-Integrated Circuit (I2C) Peripheral
Submit Documentation Feedback
© 2011, Texas Instruments Incorporated