/**************************************************************************//** * @brief Initializes the XCOMM board. The Rx and Tx path are disabled. * * @param pDefInit - pointer to initialization structure * * @return If success, return 0 * if error, return -1 ******************************************************************************/ int32_t XCOMM_Init(XCOMM_DefaultInit* pDefInit) { /* Local variables */ uint32_t enableCommMux; uint32_t ps7Interface = 0; /* Reset the XCOMM state variables */ int32_t i = 0; int8_t* pData = (int8_t*)&XCOMM_State; for(i = 0; i < sizeof(XCOMM_State); i++) { pData[i] = 0; } /* Initialize the SPI communication */ switch(pDefInit->carrierBoard) { case XILINX_ZC702: ps7Interface = 1; case XILINX_KC705: case XILINX_VC707: enableCommMux = 1; break; case DIGILENT_ZED: pDefInit->fmcPort = FMC_HPC; case XILINX_ML605: default: enableCommMux = 0; break; } XCOMM_boardFmcPort = enableCommMux ? FMC_HPC : pDefInit->fmcPort; if(SPI_Init(pDefInit->fmcPort, enableCommMux, ps7Interface) < 0) return -1; /* Initialize the AD9548 */ if(ad9548_setup() < 0) return -1; /* Initialize the AD9523 */ if(ad9523_setup() < 0) return -1; /* Initialize the Rx ADF4351 */ if(adf4351_setup(ADF4351_RX_CHANNEL) < 0) return -1; /* Initialize the Tx ADF4351 */ if(adf4351_setup(ADF4351_TX_CHANNEL) < 0) return -1; /* Read the calibration data from the EEPROM */ if(EEPROM_GetCalData((uint8_t*)XCOMM_calData, &XCOMM_calDataSize, XCOMM_boardFmcPort) < 0) return -1; return 0; }
/**************************************************************************//** * @brief Initializes the XCOMM board * * @param pDefInit - pointer to initialization structure * * @return If success, return 0 * if error, return -1 ******************************************************************************/ int32_t XCOMM_Init(XCOMM_DefaultInit* pDefInit) { /* Local variables */ uint32_t enableCommMux; /* Reset the XCOMM state variables */ int32_t i = 0; int8_t* pData = (int8_t*)&XCOMM_State; for(i = 0; i < sizeof(XCOMM_State); i++) { pData[i] = 0; } /* Initialize the SPI communication */ switch(pDefInit->carrierBoard) { case XILINX_KC705: case XILINX_VC707: case XILINX_ZC702: enableCommMux = 1; break; case DIGILENT_ZED: pDefInit->fmcPort = FMC_HPC; case XILINX_ML605: default: enableCommMux = 0; break; } XCOMM_boardFmcPort = enableCommMux ? FMC_HPC : pDefInit->fmcPort; if(SPI_Init(pDefInit->fmcPort, enableCommMux) < 0) return -1; /* Initialize the AD9548 */ if(ad9548_setup() < 0) return -1; /* Initialize the AD9523 */ if(ad9523_setup() < 0) return -1; if(XCOMM_SetAdcSamplingRate(pDefInit->adcSamplingRate) < 0) return -1; if(XCOMM_SetDacSamplingRate(pDefInit->dacSamplingRate) < 0) return -1; /* Initialize the Rx ADF4351 */ if(adf4351_setup(ADF4351_RX_CHANNEL) < 0) return -1; if(XCOMM_SetRxFrequency(pDefInit->rxFrequency) < 0) return -1; /* Initialize the Tx ADF4351 */ if(adf4351_setup(ADF4351_TX_CHANNEL) < 0) return -1; if(XCOMM_SetTxFrequency(pDefInit->txFrequency) < 0) return -1; /* Initialize the AD9122 */ DAC_Core_Init(pDefInit->fmcPort); if(ad9122_setup() < 0) return -1; /* Initialize the AD9643 */ ADC_Core_Init(pDefInit->fmcPort); if(ad9643_setup() < 0) return -1; /* Initialize the AD8366 */ if(ad8366_setup() < 0) return -1; if(XCOMM_SetRxGain(pDefInit->rxGain1000) < 0) return -1; /* Read the calibration data from the EEPROM */ if(EEPROM_GetCalData((uint8_t*)XCOMM_calData, &XCOMM_calDataSize, XCOMM_boardFmcPort) < 0) return -1; return 0; }