SI5351B PLL Module

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: SI5351B PLL Module

SI5351B PLL Module

by M0XXQ » Sun Jan 05, 2020 6:59 pm

Having played around with the SI5351/A variant in the past, the most common of these devices, I decided to take a punt on the Aliexpress SI5351/B variant, around $15 dollars posted however it comes with no documentation and there is no information currently available on the internet (not that I can find anyway).
I was struggling to get any output from the device using the Jason Mildrum NT7S Etherkit library for the Arduino development environment, I know this code library works well as I have used it in the past, however the SI5351/B did not want to play.
After a full day of experimenting I managed to get the device to work, the good thing about the /B variant is that it not only has a total of 8 independent output channels it also supports an external clock/reference input, I have attached a sketch of the SI5351/B board pin-out and what you need to connect to get it up and running.

According to the Silicon Labs documentation, the /B variant of the SI5351 must have the following pins configured for successful operation:

VDD and 3.3V must be connected to a +3.3V regulated supply e.g. the 3V3 output pin on the micro-controller.
GND on the micro-controller.
SCL and SDA I2C pins to the micro-controller.
-------------------------------------------------------------
OEB - This is the output enable pin and must be held a logic low for the device to output a signal.
3.3V - N/C
OD, OB, OC and OA must be tied to logic high e.g the 3V3 rail.

*****DO NOT POWER THIS BOARD OR DRIVE THIS BOARD FROM A 5V MICRO-CONTROLLER, IT IS A 3V TOLERANT DEVICE *****
I have successfully tested this module with the following 3V3 micro-controllers:
  • STM32F01 Bluepill
  • Pro-Micro
  • Arduino M0
  • Arduino Due
The standard code libraries from Jason Mildrum NT7S (link below) work fine, the only thing you need to change in your code is when you instantiate the SI5351 class you must pass the correct crystal frequency in the class parameter list, the NT7S library assumes a 25MHz reference clock crystal however the Aliexpress SI5351/B variant uses a 27MHz crystal so you need to instantiate the class in the following manor:

Code: Select all

void setup()
{

  // Start serial and initialize the Si5351
  Serial.begin(57600);
  
  //The constructor expects the crystal load capacitance, crystal frequency and any calibration "fudge factor"
  //If you leave the crystal frequency at 0 the SI5351 class will assume a 25MHz crystal is being used.
  _found = si5351.init(SI5351_CRYSTAL_LOAD_8PF, 27000000UL, 19800);
  
  while(!_found )
  {
    Serial.println("Device not found, check connections...");
    delay(1000);
  }

  // Set CLK0 to output 10.7 MHz
  si5351.set_freq(1070000000ULL, SI5351_CLK0);
  //Set the output power of Clock 0 to 8ma, into a 50R load this will give around +10dBM or around 2.1V PP
  si5351.drive_strength(SI5351_CLK0,SI5351_DRIVE_8MA);
}
Link to Jason Mildrum NT7S SI5351 C++ library: SI5351 Arduino Library
Pinout visual sketch:
Attachments
SI5351B Pinout.png

Top