Example #1
0
/***************************************************************************//**
 * @brief Initializes the ADF4351.
 *
 * @param channel - 0 = RX channel, 1 = TX channel 
 *
 * @return Returns 0 in case of success or negative error code.
*******************************************************************************/
int32_t adf4351_setup(int8_t channel)
{
	struct adf4351_state *st = &adf4351_st[(int32_t)channel];
	st->pdata = &adf4351_pdata_lpc;

	adf4351_out_altvoltage0_refin_frequency(st->pdata->clkin, channel);
	adf4351_out_altvoltage0_frequency_resolution(st->pdata->channel_spacing, channel);

	st->regs[ADF4351_REG5] = ADF4351_REG5_LD_PIN_MODE_DIGITAL + 0x00180000;
	st->regs[ADF4351_REG4] = ADF4351_REG4_FEEDBACK_FUND +
							 ADF4351_REG4_8BIT_BAND_SEL_CLKDIV(246) +
							 ADF4351_REG4_RF_OUT_EN +
							 ADF4351_REG4_OUTPUT_PWR(3);
	st->regs[ADF4351_REG3] = ADF4351_REG3_12BIT_CLKDIV(150);
	st->regs[ADF4351_REG2] = ADF4351_REG2_10BIT_R_CNT(4) +
                             ADF4351_REG2_CHARGE_PUMP_CURR_uA(2496) +
                             ADF4351_REG2_PD_POLARITY_POS +
                             ADF4351_REG2_POWER_DOWN_EN;
	st->regs[ADF4351_REG1] = ADF4351_REG1_PRESCALER +
                             ADF4351_REG1_MOD(307);
	st->regs[ADF4351_REG0] = ADF4351_REG0_FRACT(39) +
                             ADF4351_REG0_INT(78);

    return adf4351_sync_config(st, channel);
}
Example #2
0
/**************************************************************************//**
* @brief Sets the Tx center frequency resolution
*
* @param resolution: desired frequency resolution in Hz
*  
* @return If success, return exact calculated resolution in Hz,
*         if error, return -1
******************************************************************************/
int32_t XCOMM_SetTxResolution(uint32_t resolution)
{
    int32_t res = adf4351_out_altvoltage0_frequency_resolution(resolution, 
                                                               ADF4351_TX_CHANNEL);
    if(res < 0)
        return -1;

    XCOMM_State.txResolution = res;
    XCOMM_State.txResolutionValid = 1;

    return XCOMM_State.txResolution;
}
Example #3
0
/**************************************************************************//**
* @brief Gets the Tx center frequency resolution
*
* @param readMode: read frequency resolution from driver or HW
*
* @return If success, return frequency resolution in Hz,
*         if error, return -1
******************************************************************************/
int32_t XCOMM_GetTxResolution(XCOMM_ReadMode readMode)
{
    int32_t res;

    if(readMode == XCOMM_ReadMode_FromHW)
    {
        res = adf4351_out_altvoltage0_frequency_resolution(INT32_MAX, 
                                                           ADF4351_TX_CHANNEL);
        if(res < 0)
            return -1;
        
        XCOMM_State.txResolution = res;
        XCOMM_State.txResolutionValid = 1;
    }

    return XCOMM_State.txResolutionValid ? XCOMM_State.txResolution : -1;
}