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: MISO configuration malfunction

Part Number: PCM1865

Hello,

I am trying to use this device with SPI control, and I cannot set the MISO pin correctly. The SPI bus is shared with other ICs (except for the CS, obviously). As soon as I write 0x02 to Page.0-Register.0x10 The MISO line goes down "actively", making that nobody in the SPI bus can control the line. I have seen this as, communicating with other ICs, the line goes up to ~0.4V. I kindly ask for help in configuring this part so I can perform readings through the SPI bus.

This also happens with the sequence:

- Reset the IC registers (0xFE to register 0x00)

- Set the GPIO0 to MISO (0x02 to Page.0-Register.0x10)

I have tried at several speeds, with the same results. My write/read sequence is: always write the page (2 bytes, 0x00 and the page number), and then write/read the register and the value (1st byte: shift the register address 1 bit to the left, and make a bitwise OR with 0x01 in case of a read operation; 2nd byte: write the data in case of the write, write 0x00 (dummy) in order to generate clock pulses and receive the data in case of a read). As seen from the oscilloscope screen, the signals look nice and well-timed. I have been trying to solve this problem for a couple of days now.

Many thanks in advance. BR,

Manuel

  • I have just achieved to communicate, but you should revise the datasheet as the MISO is the default value with 010 in the GPIO0 configuration bits. Please, have someone to check this and confirm this.

  • Hi Manuel,

    Glad to hear you got your problem fixed. I personally had never heard of this occurring. Can you tell me what you did to fix it for my own understanding?

    Also thank you for pointing out the discrepancy. We'll look into that and double check.

    Best regards,

    Jeff 

  • Hi Jeff,

    The thing I was setting up was the register "as it should be", i.e. I first reseted the registers (0xFE into register 0x00) and then I wrote the PCM186X_GPIO1_0_CTRL register to 0x02 in order to get GPIO1 to be GPIO (default) and GPIO0 to be MISO. This forced the MISO line to 0V and it was causing the malfunction. Commenting this configuration line resolved the problem. The value I can read when this happens is a 0x01, so the default value is correct, but the description of the 001 value of GPIO0 is wrong, as it should be MISO.

    Also, I see that in the revision history there is a change saying:

    I am now wondering if I do not have an older part installed in my PCB... The marking on the chips is this (two different PCBs):

    In the case I have old chips, please provide a list of changed characteristics and registers so I can accomodate my code to these parts. Also, is there any way, by code, of knowing if I have an old or a new version? In order to my microprocessor to check it and perform some code or not.

    Thanks for your answers. BR,

    Manuel

  • Hi Manuel,

    If this is somehow an old part, all changes should be listed in the revision history like you found.

    I'll check with our product managers to see if this is what's going on.

    Best regards,

    Jeff

  • As I found and answered in this topic, the issue was the SPI configuration. Now the chip works properly