Saturday, 26 January 2019

Si5351 Quadrature Clock Output down to 3MHz

Credit to Brian Harper M1CEM and Miguel BartiĆ© PY2OHH


Step 1. Edit si5351.h file. Change the SI5351_PLL_VCO_MIN to 380000000, i.e.,

#define SI5351_PLL_VCO_MIN              380000000


Step 2. Example code snippet:



volatile long freq = 3500000;
volatile int Even_Divisor = 0;
volatile int oldEven_Divisor = 0;




void EvenDivisor()
{
  if (freq < 6850000)
  {
    Even_Divisor = 126;
  }
  if ((freq >= 6850000) && (freq < 9500000))
  {
    Even_Divisor = 88;
  }
  if ((freq >= 9500000) && (freq < 13600000))
  {
    Even_Divisor = 64;
  }
  if ((freq >= 13600000) && (freq < 17500000))
  {
    Even_Divisor = 44;
  }
  if ((freq >= 17500000) && (freq < 25000000))
  {
    Even_Divisor = 34;
  }
  if ((freq >= 25000000) && (freq < 36000000))
  {
    Even_Divisor = 24;
  }
  if ((freq >= 36000000) && (freq < 45000000)) {
    Even_Divisor = 18;
  }
  if ((freq >= 45000000) && (freq < 60000000)) {
    Even_Divisor = 14;
  }
  if ((freq >= 60000000) && (freq < 80000000)) {
    Even_Divisor = 10;
  }
  if ((freq >= 80000000) && (freq < 100000000)) {
    Even_Divisor = 8;
  }
  if ((freq >= 100000000) && (freq < 146600000)) {
    Even_Divisor = 6;
  }
  if ((freq >= 150000000) && (freq < 220000000)) {
    Even_Divisor = 4;
  }
}


void SendFrequency()
{
  EvenDivisor();
  si5351.set_freq_manual(freq * SI5351_FREQ_MULT, Even_Divisor * freq * SI5351_FREQ_MULT, SI5351_CLK0);
  si5351.set_freq_manual(freq * SI5351_FREQ_MULT, Even_Divisor * freq * SI5351_FREQ_MULT, SI5351_CLK2);
  si5351.set_phase(SI5351_CLK0, 0);
  si5351.set_phase(SI5351_CLK2, Even_Divisor);
 
if(Even_Divisor != oldEven_Divisor)
  {
    si5351.pll_reset(SI5351_PLLA);
    oldEven_Divisor = Even_Divisor;
  }
}




3 comments:

  1. You should only do a pll_reset when the even_divisor is changed. A pll_reset will make clicks. Hans Summers wrote a little about it here: https://groups.io/g/BITX20/topic/si5351_quadrature_vfo/22076271?20,0,0,0::recentpostdate%2Fsticky,,,20,2,0,22076271

    ReplyDelete
  2. Thanks Niel. That's exactly I found too. I've changed my code to only do the reset on Even_Divisor change. I'll update the code above IDC.

    Thanks again.

    Charlie

    ReplyDelete
  3. Good day !!
    We are Christian Organization formed to help people in need of help,such as
    financial assistance, Do you need a loan to pay your bills? Do you need
    Personal Business Car or Student loans? Need a loan for various other
    purposes? If yes contact us today.
    Please these is for serious minded and God fearing People.

    Email: jacksonwaltonloancompany@gmail.com

    Text or call: +1-205-5882-592.

    Address is 68 Fremont Ave Penrose CO, 81240.

    Website: jacksonwaltonloancompany.blogspot.com

    ReplyDelete

Note: only a member of this blog may post a comment.