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.

PCM1865 I2C reading and writing

Other Parts Discussed in Thread: PCM1865

I have read the data sheet for the PCM1865 and can't find anything that explains it in enough detail.

Using the EVM (which we have) we can see the I2S accesses, or at least some of them, but there is no description of what should be done.


For example:

Suppose you wanted to read register 0x12 in page 0, what is the sequence of events in order to do this?

Guessing, which is all I can do at the moment, one would write 0x00, 0x00 (following the device address with the R/W bit low) then send a repeat start message writing 0x12 (again following the device address with the R/W bit low), then send a repeat start message with the device address and R/W high and read the data ( 1 byte).

All help gratefully received!

edit/

I just noticed that I didn't mention that we are trying to do the I2C accesses via our own controller rather than the EVM.  In the EVM you can ask it to read the registers so another way of putting it would be "how do you read / write registers when you don't have an EVM"

  • I have read the PCM1865 data sheet and am trying to control it using our own controller rather than the EVM (which we have).

    In the data sheet there is just one page that describes the I2C (page 45).  There are other places where it is mentioned but no actual substance.

    For example, does anyone know how to read register 0x12 (say) from page 0?  What would the I2C message format be?

    All help gratefully received.

  • Hi Chris,

    The PCM1865 has a page structure that is controlled by register 0x00 on any page. When you write a value to 0x00, it will set the I2C interface to that page. So writing 0x00 to register 0x00 will set the part to page 0. Page 0 is the page with most of the controls on it.

    If you wanted to read from register 0x12 you would do t he following:

    I2C Start
    Send slave address from master with write bit
    slave should ACK
    Send register address to read to slave (0x12)
    Repeated/continued start
    Send slave address with read bit
    Slave should ACK
    Slave will then send back data
    I2C Stop

    Justin
  • Hi Justin,

    Thank you for your reply.

    I looked at (quite a lot) of other TI parts and found that the AIC3111 seems to have, what appears to be, a data sheet that has something to say about the I2C interface on that part which, as coincidence has it, appears to work in a similar way to how the PCM1865 works - but only in an "as luck would have it" sort of way. I tried out the read of a register from that data sheet and it works on our hardware - and is the same method as your description.

    Is there any way you could point me to another TI part, or confirm that the AIC3111 description is correct, that has a description of how the I2C works for all circumstances (so I don't need to keep asking all the technical points on here) on the PCM1865?

    Many thanks in advance.