Hi
We have the design of Intel Arria 10 GX development kit using AD9371.
(https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/an792.pdf)
I would like to connect to ADRV9375-W / PCBZ using this design and try out the function of DPD.
I changed the source code with reference to the AD9371 Linux Driver and so on.
However, MYKONOS_waitInitCals () caused an error.
(If I do not add "DPD_INIT | CLGC_INIT | VSWR_INIT" to initCalMask, no error will occur.)
Specifically, it is CMB_SPIReadByte (device-> spiSettings, MYKONOS_ADDR_ARM_CMD_STATUS_ 0 + cmdByteIndex, & cmdByte); which is called in MYKONOS_readArmCmdStatusByte(),
This is because 224 is stored in cmdByte.
(It is 0 when it operates normally)
What does this mean?
[ Major Changed Code ]
< config_AD9371.c >
uint32_t initCalMask = TX_BB_FILTER | ADC_TUNER | TIA_3DB_CORNER | DC_OFFSET |
TX_ATTENUATION_DELAY | RX_GAIN_DELAY | FLASH_CAL |
PATH_DELAY | TX_LO_LEAKAGE_INTERNAL | TX_QEC_INIT |
LOOPBACK_RX_LO_DELAY | LOOPBACK_RX_RX_QEC_INIT |
RX_LO_DELAY | RX_QEC_INIT
#ifdef AD9351
| DPD_INIT | CLGC_INIT | VSWR_INIT ;
#else
;
#endif
printf("Mykonos RF Frequency setting Completed\n");
/*************************************************************************/
/***** Mykonos DPD Initialization *****/
/*************************************************************************/
#ifdef AD9351
if ((mykError = MYKONOS_configDpd(&mykDevice)) != MYKONOS_ERR_OK)
{
/*** < Info: errorString will contain log error string in order to debug failure > ***/
errorString = getMykonosErrorMessage(mykError);
}
if ((mykError = MYKONOS_configClgc(&mykDevice)) != MYKONOS_ERR_OK)
{
/*** < Info: errorString will contain log error string in order to debug failure > ***/
errorString = getMykonosErrorMessage(mykError);
}
if ((mykError = MYKONOS_configVswr(&mykDevice)) != MYKONOS_ERR_OK)
{
/*** < Info: errorString will contain log error string in order to debug failure > ***/
errorString = getMykonosErrorMessage(mykError);
}
printf("Mykonos DPD Config Completed\n");
#endif
/*************************************************************************/
/***** Mykonos Set GPIOs *****/
/*************************************************************************/
< myk_config.c >
static mykonosTxSettings_t txSettings =
{
&txProfile, /* Tx datapath profile, 3dB corner frequencies, and digital filter enables*/
&deframer, /* Mykonos JESD204b deframer config for the Tx data path*/
TX1, /* The desired Tx channels to enable during initialization*/
0, /* Internal LO=0, external LO*2 if =1*/
1000000000U, /* Tx PLL LO frequency (internal or external LO)*/
TXATTEN_0P05_DB,/* Initial and current Tx1 Attenuation*/
10000, /* Initial and current Tx1 Attenuation mdB*/
10000, /* Initial and current Tx2 Attenuation mdB*/
&dpdConfig, /* <NULL>DPD,CLGC,VSWR settings. Only valid for AD9373 device, set pointer to NULL otherwise*/
&clgcConfig, /* <NULL>CLGC Config Structure. Only valid for AD9373 device, set pointer to NULL otherwise*/
&vswrConfig /* <NULL>VSWR Config Structure. Only valid for AD9373 device, set pointer to NULL otherwise*/
};
Thanks and Regards,