/**************************************************************************//** * @brief Initializes the Tx path * * @param pDefInit - pointer to initialization structure * * @return If success, return 0 * if error, return -1 ******************************************************************************/ int32_t XCOMM_InitTx(XCOMM_DefaultInit* pDefInit) { /* Power up all the Tx clocks */ if(ad9523_out_altvoltage_DAC_CLK_raw(1) < 0) return -1; if(ad9523_out_altvoltage_DAC_DCO_CLK_raw(1) < 0) return -1; if(ad9523_out_altvoltage_DAC_REF_CLK_raw(1) < 0) return -1; if(ad9523_out_altvoltage_TX_LO_REF_CLK_raw(1) < 0) return -1; /* Power Up the Tx ADF4351 */ if(adf4351_out_altvoltage0_powerdown(0, ADF4351_TX_CHANNEL) < 0) return -1; /* Set the default Tx frequency */ if(XCOMM_SetTxFrequency(pDefInit->txFrequency) < 0) return -1; /* Initialize the AD9122 */ DAC_Core_Init(pDefInit->fmcPort); if(ad9122_setup(ad9523_out_altvoltage_DAC_DCO_CLK_frequency, ad9523_out_altvoltage_DAC_CLK_frequency, ad9523_clk_round_rate_DAC_DCO_CLK, ad9523_clk_round_rate_DAC_CLK) < 0) return -1; /* Set the AD9122 sampling rate */ if(XCOMM_SetDacSamplingRate(pDefInit->dacSamplingRate) < 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; }