AnsweredAssumed Answered

HMC833 no RF output

Question asked by Benjamin.Brammer on Jun 17, 2017
Latest reply on Jun 26, 2017 by Benjamin.Brammer

Hi guys,

I am using the HMC833 as a LO for modulation/demodulation with a desired frequency of 48,5MHz . As an Input I use a 20MHz Quarz-oscillator buffered via a CDCLVC1102 clock buffer from TI . I thought I implemented everything right but obviously there is something wrong since I don't get any output waveform from the HMC833.

The 20MHz is functioning an delivering the input. Here is my enable procedure and register programming:

 

The supply voltages are already applied and I start with the following code:

/**
* @brief          HMC833 power up function
* @author          Benjamin Brammer
* @date          12.05.2017
*
* This function activates the HMC SPI mode for the HMC833 after power up.
*
*/

void HMC833_powerUp(void)
{
     CS_HMC833_HIGH;          // going into HMC SPI mode
     ENABLE_HMC833;          // enabling the chip
     CS_HMC833_LOW;          // clearing CS
}


/**
* @brief          HMC833 startup function
* @author          Benjamin Brammer
* @date          10.05.2017
*
* This function configures the HMC833 PLL to run at 48,5MHz after power up.
*
*/

void HMC833_48_5MHz_config_startup(void)
{
     /* configuring the PLL */
     /* configure delta-sigma modulator (Reg 06h) */
     hmc833_data[0] = 0b00001100;
     hmc833_data[1] = 0b00001100;
     hmc833_data[2] = 0b00111101;
     hmc833_data[3] = 0b00101000;

     CS_HMC833_HIGH;
     HAL_SPI_Transmit_DMA(&hspi1, &hmc833_data, 4); //transfer
     while(HAL_SPI_GetState(&hspi1) == HAL_SPI_STATE_BUSY_TX);
     CS_HMC833_LOW;

     /* configure charge pump current and offset current (Reg 09h) */
     hmc833_data[0] = 0b00010010;
     hmc833_data[1] = 0b10000000;
     hmc833_data[2] = 0b00110010;          //ToDo: is this correct? check manual! ask E2E!
     hmc833_data[3] = 0b01100100;

     CS_HMC833_HIGH;
     HAL_SPI_Transmit_DMA(&hspi1, &hmc833_data, 4); //transfer
     while(HAL_SPI_GetState(&hspi1) == HAL_SPI_STATE_BUSY_TX);
     CS_HMC833_LOW;

     /* configure vco subsystem */          //ToDo: is this correct? check manual! ask E2E!
     /* VCO_Reg 02h Biases / VCO Divider: 60 */
     hmc833_data[0] = 0b00001010;
     hmc833_data[1] = 0b00001001;
     hmc833_data[2] = 0b11111000;
     hmc833_data[3] = 0b00000000;

     CS_HMC833_HIGH;
     HAL_SPI_Transmit_DMA(&hspi1, &hmc833_data, 4); //transfer
     while(HAL_SPI_GetState(&hspi1) == HAL_SPI_STATE_BUSY_TX);
     CS_HMC833_LOW;

     /* VCO_Reg 04h Cal/Bias */
     hmc833_data[0] = 0b00001010;
     hmc833_data[1] = 0b00010001;
     hmc833_data[2] = 0b10000010;
     hmc833_data[3] = 0b00000000;

     CS_HMC833_HIGH;
     HAL_SPI_Transmit_DMA(&hspi1, &hmc833_data, 4); //transfer
     while(HAL_SPI_GetState(&hspi1) == HAL_SPI_STATE_BUSY_TX);
     CS_HMC833_LOW;

     /* VCO_Reg 05h CF_Cal */
     hmc833_data[0] = 0b00001010;
     hmc833_data[1] = 0b00010100;
     hmc833_data[2] = 0b01011000;
     hmc833_data[3] = 0b00000000;

     CS_HMC833_HIGH;
     HAL_SPI_Transmit_DMA(&hspi1, &hmc833_data, 4); //transfer
     while(HAL_SPI_GetState(&hspi1) == HAL_SPI_STATE_BUSY_TX);
     CS_HMC833_LOW;

     /* frequency programming */
     /* configure integer part (Reg 03h) --> value: 145d*/
     hmc833_data[0] = 0b00000110;
     hmc833_data[1] = 0b00000000;
     hmc833_data[2] = 0b00100100;
     hmc833_data[3] = 0b01000000;

     CS_HMC833_HIGH;
     HAL_SPI_Transmit_DMA(&hspi1, &hmc833_data, 4); //transfer
     while(HAL_SPI_GetState(&hspi1) == HAL_SPI_STATE_BUSY_TX);
     CS_HMC833_LOW;

     /* configure fractional part (Reg 04h) --> value: 8388608d */
     hmc833_data[0] = 0b00001001;
     hmc833_data[1] = 0b00000000;
     hmc833_data[2] = 0b00000000;
     hmc833_data[3] = 0b00000000;

     CS_HMC833_HIGH;
     HAL_SPI_Transmit_DMA(&hspi1, &hmc833_data, 4); //transfer
     while(HAL_SPI_GetState(&hspi1) == HAL_SPI_STATE_BUSY_TX);
     CS_HMC833_LOW;
}

I checked the SPI protocoll and it looks ok. I think my next step would be reading if my written register values have been aknowledged.

Anyone perhaps knows of a possible error I don't see?

 

best regards

Benjamin

Outcomes