Post Go back to editing

Programming of HMC1034 via SPI interface problem

Category: Software
Product Number: HMC1034

Hello all,

To programming HMC1034 I first used Hittite USB interface and Hittite siftware.
For Fout=160 MHz and Fref=10MHz the program shows the sequence given in Note 1 below this text.
Synthezator worked properly and gave Fout=160 MHz.

Document
pll_operating_guide_rf_vcos.pdf
in section
4.18 Configuration at Start-Up
suggested writing sequense for only 6 registers.

At the end of this section document suggested the folliwing:
For detailed and most up-to-date start-up configuration of an individual part please refer to the appropriate
Register Setting Files found in the HIttite PLL Evaluation Software received with a product evaluation kit
or downloaded from www.hittite.com.

But I can not find this document or sourse code.

So, to programming HMC1034 via own SPI interface
I used the sequence compiled from the recommendations of the Data Sheet (for 6 registers)
and the sequence that the Hittite program shows (for the remaining registers).
The resulting sequence is shown in Note 2 below this text.

But the chip did not output any signal.
Output signal LD_SDO always = 0.
For WRITE operation I used timing diagramm according to Figure 24
of HMC1034 Data Sheet section
4.17.3.1 HMC Mode - Serial Port WRITE Operation.

Then I tried to read registers according to Figure 25
of HMC1034 Data Sheet section
4.17.3.2 HMC Mode - Serial Port READ Operation.
But output signal LD_SDO always = 0.

Please help me to find complete example of sequence for configuration of all HMC1034 registers.

Thank you.

Sincerely,
Viktor,
Ukraine.

Note 1
-------
// 160 MHz
REG 0 A7975
REG 1 2
REG 2 1
REG 3 120
REG 5 6910
REG 6 2003CA
REG 7 14D
REG 8 C1BEFF
REG 9 153FFF
REG A 2046
REG B 7C061
REG C 0
REG D 0
REG E 0
REG F 1
REG 10 2B
REG 11 5E
REG 12 3
REG 13 1259
REG 14 0
REG 15 0
REG 16 0
REG 17 0
REG 18 0
REG 19 0
REG 1A 0
REG 1B 0
REG 1C 0
REG 1D 0
REG 1E 0
REG 1F 0
REG 4 0
XTAL 10
DIVIDER_MANUAL_MODE 0
VCO_TO_SYNTH_DIV 1
VCO_TO_OUT_DIV 18


Note 2
-------
// Fout = 160 MHz; Fin = 10 MHz (External)
Send_code_to_Synthezator_3(0x2, 0x1); // REG2
Send_code_to_Synthezator_3(0x6, 0x2003CA); // REG6
Send_code_to_Synthezator_3(0x9, 0x153FFF); // REG9

Send_code_to_Synthezator_3(0x5, 0x60A0); // REG5
Send_code_to_Synthezator_3(0x5, 0x1628); // REG5
Send_code_to_Synthezator_3(0x5, 0x7FB0); // REG5
Send_code_to_Synthezator_3(0x5, 0x0); // REG5

Send_code_to_Synthezator_3(0x3, 0x120); // REG3
Send_code_to_Synthezator_3(0x4, 0x0); // REG4
Send_code_to_Synthezator_3(0x0, 0xA7975); // REG0
Send_code_to_Synthezator_3(0x1, 0x2); // REG1
Send_code_to_Synthezator_3(0x7, 0x14D); // REG7
Send_code_to_Synthezator_3(0x8, 0xC1BEFF); // REG8
Send_code_to_Synthezator_3(0xA, 0x2046); // REG10
Send_code_to_Synthezator_3(0xB, 0x7C061); // REG11
Send_code_to_Synthezator_3(0xC, 0x0); // REG12
Send_code_to_Synthezator_3(0xD, 0x0); // REG13
Send_code_to_Synthezator_3(0xE, 0x0); // REG14
Send_code_to_Synthezator_3(0xF, 0x1); // REG15
Send_code_to_Synthezator_3(0x10, 0x2B); // REG16
Send_code_to_Synthezator_3(0x11, 0x5E); // REG17
Send_code_to_Synthezator_3(0x12, 0x3); // REG18
Send_code_to_Synthezator_3(0x13, 0x1259); // REG19
Send_code_to_Synthezator_3(0x14, 0x0); // REG20
Send_code_to_Synthezator_3(0x15, 0x0); // REG21
Send_code_to_Synthezator_3(0x16, 0x0); // REG22
Send_code_to_Synthezator_3(0x17, 0x0); // REG23
Send_code_to_Synthezator_3(0x18, 0x0); // REG24
Send_code_to_Synthezator_3(0x19, 0x0); // REG25
Send_code_to_Synthezator_3(0x1A, 0x0); // REG26
Send_code_to_Synthezator_3(0x1B, 0x0); // REG27
Send_code_to_Synthezator_3(0x1C, 0x0); // REG27
Send_code_to_Synthezator_3(0x1D, 0x0); // REG29
Send_code_to_Synthezator_3(0x1E, 0x0); // REG30
Send_code_to_Synthezator_3(0x1F, 0x0); // REG31



moved and updated form
[edited by: GenevaCooper at 6:25 PM (GMT -4) on 17 Aug 2023]
Parents
  • Hi Viktor,

    A few things to check:

    1. Please ensure that the correct SPI protocol has been selected: Section 4.17.2. SEN and SCLK should be clean and stable at start-up. Any glitch on these lines may cause selecting wrong protocol.

    2. Confirm that you are able to write and read from PLL registers. You may use GPO_SPI register (0x0F) to set GPO to high/low and observe the GPO pin. Alternatively you can try enabling/disabling part from Reg 0x01.

    3. Confirm you are able to write VCO registers correctly. The VSPI clock should be faster or equal to SPI clock: see FSM/VSPI Clock Select in Reg 0x0A[14:13]]

    4. I do not think this is the problem on your setup but let me note this as a general recommendation. Reg 0x04 for fractional mode and reg 0x03 for integer mode should be written as the final step to initiate autocalibration after all registers have been written. Note the "Reg 4" at the end in the Hittite software log. 

    Regards, Kazim 

  • Hi Kazim

    1)
    Oscilloscope shows clear signals SDI, SCK, CEN.
    Timing diagram is generated by software on the Raspberry platform according to Figure 24.
    All delays are met with a reserve. Transmitted bits are checked.
    Register set for Fout=160MHz was taken for Hittite software.
    (Program show "Register_File_Display" as in the Note 1).
    Input voltage CEN = 3.4V (i.e. logical High)

    2)
    I can't read the registers because of LD_SDO is always = 0 even though all the necessary bits have been set, as I think.
    In addition, I have also tried setting bits like this:
    REG15[4:0] = 00001
    REG15[7] = 1
    REG1[7] = 1
    REG1[7] = 1
    At the same time, there is still no output signal when reading the registers.
    LD_SDO is always = 0.

    3)
    I used register set for Fout=160MHz was taken for Hittite software.
    "Register_File_Display" from Hittite program gives 0x0A[14:13] = 01h
    Fin = 10 MHz (from external TXCO oscillator).
    SPI timing diagram is generated by software, so SPI clock is much slower, than VSPI clock.

    4)
    This is contrary to the sequence recommended by the section
    4.18 Configuration at Start-Up
    According to these recommendations, register entry
    Reg 03h and Reg 04h
    produced after 4 entries into register Reg 05h
    as described in section 4.19 VCO Serial Port Interface (SPI)

    But I tried to write such a sequence as shown by the Hittite program in "Register_File_Display" too.
    This sequence is shown in Note 1 and indeed Reg 04h is written last.
    When writing such a sequence, the output signal is still absent.
    When I tried to read the registers, LD_SDO is always = 0.

    But when I use Hittite USB interface and Hittite siftware, HMC1034 still works excelent.

    Can you suggest, where do find complete example of sequence for configuration of all HMC1034 registers.

    Regards,
    Viktor.

  • Hi Viktor,

    I do not think that the problem is related with sequence or register content. At least, there is no evidence that shows you are able to set the registers correctly as the first step. Do you see any decrease/increase in current consumption when changing registers i.e., enabling/disabling the part completely or partially. 

    An additional test is the SPO output: Set Reg 0x0F[4:0]= b'00000 and observe the GPO level while changing GPO Test Data (0x0F[5]) value. You may prefer setting 0x0F[6]=1 and 0x0F[7]=1. 

    Regards,

    Kazim 

Reply Children
No Data