This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6748 I2C0 issues

Hello,

I am having some issues getting I2C0 to work on the 6748. I am working on a custom board and i am trying to get my 6748 to talk to a TI codec, AIC34.

I have I2C1 working just fine.

My problem is partially that the board was laid out incorrectly.  there aren't any test points on the I2C lines from the DSP to the codec and it is BGA to BGA so i can't really see the I2C signals. also there were no pull up resistors on the I2C0 lines, although we think we might have fixed that by attaching to traces (which i am thinking of pressing my luck and connecting wires to the traces but that will likely screw up the resistors that are soldered on to those).  my problem is that

A) I don't even know if the I2C0 is active.  I cannot find anywhere in the PSC that lists a spot for I2C0 so I have no idea if it is powered up or not.

B) since i don't have any test points (even on the codec) i can't tell if the codec is just in reset or something.

I guess my question right now is: How can I tell if the I2C0 is powered up?

  • A) The easiest way would be to try and read the I2C0 registers (0x01C2 2000). If the peripheral is not powered, then it will read back as all 0. If you see the correct bits in the configuration registers then the PSC is enabled. Also double check the pin multiplexing registers to make sure I2C0 is selected for those pins. B) Obviously pullups are required for open-drain buses, so you need to make sure that the mod you did is working. I think you will have to solder wires to the resistors you added to verify that the lines are pulled up all the way before the transaction starts. Jeff
  • Per the System Reference Guide, section 8.2: "There are a few modules/peripherals on the device that do not have a LPSC assigned to them. These modules do not have their module reset/clocks controlled by the PSC module. The decision to assign an LPSC to a module on a device is primarily based on whether or not disabling the clocks to a module will result in significant power savings. This typically depends on the size and the frequency of operation of the module."

    As I understand it, the I2C0 is one of these modules.  As Jeff stated, you can try reading the registers to verify if they are accessible and thus indicate that the module is powered up.