AD1939 Failing to Verify PLL Lock ADSP-21489 Ez-Kit Based Design

Hi, I am working on an audio design using the AD1939 codec alongside Sharc ADSP-21489. The design is largely based on the audio features present in the ADSP-21489 ez-kit, as are the schematic and layout.

I am running a test program based on the code from the ADSP-21489 ez-kit (having previously verified that it works with the ez-kit). ADSP-21489 is responding to code (using ICE-1000 debugger), io pins are working with SRU, SPI is working to read control values from an MCP3208 12-bit DAC chip. However, I am running into some issues with the AD1939 codec setup.

The program freezes in the ez-kit function: init1939viaSPI(). See the full function below:

void init1939viaSPI(void)
{
    int configSize = sizeof(ConfigParam1939);
    int i,j=0 ;
    unsigned char tmpA[sizeof(ConfigParam1939) / 3];


/* Set up AD1939 */
    SetupSPI1939(AD1939_CS);

/* Write register settings*/
    for(i = 0; i < configSize-6; i+=3)
    {
        Configure1939Register(ConfigParam1939[i], ConfigParam1939[i+1], ConfigParam1939[i+2], AD1939_CS);
        Delay(272);

        AD1939_Config_Test[j] = ConfigParam1939[i+2];
/* Read back register settings for debugging */
        AD1938_Regs_Read[j++] = Get1939Register(ConfigParam1939[i+1], AD1939_CS);
        Delay(272);
    }

/*  Make sure the PLL is locked before enabling the CODEC.*/

    LockTest = Get1939Register(0x1, AD1939_CS);
    while (!(LockTest & AD1938_PLL_LOCK))
    {
    LockTest = Get1939Register(CLKCTRL1, AD1939_CS);
    LockCount++;
    }

    for(i = configSize-6; i < configSize; i+=3)
    {
        Configure1939Register(ConfigParam1939[i], ConfigParam1939[i+1], ConfigParam1939[i+2], AD1939_CS);
        Delay(272);

/* Read back register settings for debugging */
        AD1938_Regs_Read[j++] = Get1939Register(ConfigParam1939[i+1], AD1939_CS);
        Delay(272);
    }


    DisableSPI1939();
}

The particular section that it freezes on is the following:

/*  Make sure the PLL is locked before enabling the CODEC.*/

    LockTest = Get1939Register(0x1, AD1939_CS);
    while (!(LockTest & AD1938_PLL_LOCK))
    {
        LockTest = Get1939Register(CLKCTRL1, AD1939_CS);
        LockCount++;
    }

Whenever I pause the debugger, the breakpoint goes back to the same section in this function and LockCount has incremented higher. This tells me the Codec is failing to enter PLL lock. I have checked the debug variable AD1939_Regs_Read and verified that all AD1939 registers were written correctly via SPI. That would seem to suggest this is a hardware issue. I have tested that the clock input is showing on the appropriate pin and that the chip is receiving power. 

Are there any particular things I should check for that might be causing the PLL lock failure? 

Parents Reply Children
No Data