-
-
Notifications
You must be signed in to change notification settings - Fork 94
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
1,607 additions
and
583 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
/* | ||
* si5351_clk67_example.ino - Simple example of setting CLK6 and CLK7 | ||
* outputs using Si5351Arduino library | ||
* | ||
* Copyright (C) 2016 Jason Milldrum <milldrum@gmail.com> | ||
* | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
#include "si5351.h" | ||
#include "Wire.h" | ||
|
||
Si5351 si5351; | ||
|
||
void setup() | ||
{ | ||
// Start serial and initialize the Si5351 | ||
Serial.begin(57600); | ||
si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0, 0); | ||
|
||
// Set CLK0 to output 14 MHz | ||
si5351.set_freq(1400000000ULL, SI5351_CLK0); | ||
|
||
// Set CLK6 to 23 MHz, library sets PLL to 874 MHz | ||
si5351.set_freq(2300000000ULL, SI5351_CLK6); | ||
|
||
// This won't work since it is not an even multiple of the PLL (874 MHz) | ||
si5351.set_freq(1234567800ULL, SI5351_CLK7); | ||
|
||
// Setting CLK7 to 87.4 MHz will work | ||
si5351.set_freq(8740000000ULL, SI5351_CLK7); | ||
|
||
si5351.update_status(); | ||
delay(500); | ||
} | ||
|
||
void loop() | ||
{ | ||
// Read the Status Register and print it every 10 seconds | ||
si5351.update_status(); | ||
Serial.print("PLLA: "); | ||
Serial.print((uint32_t)(si5351.plla_freq/100)); | ||
Serial.print(" PLLB: "); | ||
Serial.print((uint32_t)(si5351.pllb_freq/100)); | ||
Serial.print(" SYS_INIT: "); | ||
Serial.print(si5351.dev_status.SYS_INIT); | ||
Serial.print(" LOL_A: "); | ||
Serial.print(si5351.dev_status.LOL_A); | ||
Serial.print(" LOL_B: "); | ||
Serial.print(si5351.dev_status.LOL_B); | ||
Serial.print(" LOS: "); | ||
Serial.print(si5351.dev_status.LOS); | ||
Serial.print(" REVID: "); | ||
Serial.println(si5351.dev_status.REVID); | ||
|
||
delay(10000); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
/* | ||
* si5351_ext_ref.ino - Simple example of using an external reference | ||
* clock with the Si5351Arduino library | ||
* | ||
* Copyright (C) 2016 Jason Milldrum <milldrum@gmail.com> | ||
* | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
#include "si5351.h" | ||
#include "Wire.h" | ||
|
||
Si5351 si5351; | ||
|
||
void setup() | ||
{ | ||
// Start serial | ||
Serial.begin(57600); | ||
|
||
// Initialize the Si5351 to use a 10 MHz clock input on CLKIN | ||
si5351.init(SI5351_CRYSTAL_LOAD_0PF, 10000000UL, 0); | ||
|
||
// Set PLLA and PLLB to use the signal on CLKIN instead of the XTAL | ||
si5351.set_pll_input(SI5351_PLLA, SI5351_PLL_INPUT_CLKIN); | ||
si5351.set_pll_input(SI5351_PLLB, SI5351_PLL_INPUT_CLKIN); | ||
|
||
// Set CLK0 to output 14 MHz | ||
si5351.set_freq(1400000000ULL, SI5351_CLK0); | ||
|
||
si5351.update_status(); | ||
delay(500); | ||
} | ||
|
||
void loop() | ||
{ | ||
// Read the Status Register and print it every 10 seconds | ||
si5351.update_status(); | ||
Serial.print(" SYS_INIT: "); | ||
Serial.print(si5351.dev_status.SYS_INIT); | ||
Serial.print(" LOL_A: "); | ||
Serial.print(si5351.dev_status.LOL_A); | ||
Serial.print(" LOL_B: "); | ||
Serial.print(si5351.dev_status.LOL_B); | ||
Serial.print(" LOS: "); | ||
Serial.print(si5351.dev_status.LOS); | ||
Serial.print(" REVID: "); | ||
Serial.println(si5351.dev_status.REVID); | ||
|
||
delay(10000); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
/* | ||
* si5351_outputs.ino - How to set different output sources | ||
* with the Si5351Arduino library | ||
* | ||
* Copyright (C) 2016 Jason Milldrum <milldrum@gmail.com> | ||
* | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
#include "si5351.h" | ||
#include "Wire.h" | ||
|
||
Si5351 si5351; | ||
|
||
void setup() | ||
{ | ||
// Start serial and initialize the Si5351 | ||
Serial.begin(57600); | ||
si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0, 0); | ||
|
||
// Set CLK0 to output 14 MHz | ||
si5351.set_freq(1400000000ULL, SI5351_CLK0); | ||
|
||
// Enable clock fanout for the XO | ||
si5351.set_clock_fanout(SI5351_FANOUT_XO, 1); | ||
|
||
// Enable clock fanout for MS | ||
si5351.set_clock_fanout(SI5351_FANOUT_MS, 1); | ||
|
||
// Set CLK1 to output the XO signal | ||
si5351.set_clock_source(SI5351_CLK1, SI5351_CLK_SRC_XTAL); | ||
si5351.output_enable(SI5351_CLK1, 1); | ||
|
||
// Set CLK2 to mirror the MS0 (CLK0) output | ||
si5351.set_clock_source(SI5351_CLK2, SI5351_CLK_SRC_MS0); | ||
si5351.output_enable(SI5351_CLK2, 1); | ||
|
||
// Change CLK0 output to 10 MHz, observe how CLK2 also changes | ||
si5351.set_freq(1000000000ULL, SI5351_CLK0); | ||
|
||
si5351.update_status(); | ||
delay(500); | ||
} | ||
|
||
void loop() | ||
{ | ||
// Read the Status Register and print it every 10 seconds | ||
si5351.update_status(); | ||
Serial.print(" SYS_INIT: "); | ||
Serial.print(si5351.dev_status.SYS_INIT); | ||
Serial.print(" LOL_A: "); | ||
Serial.print(si5351.dev_status.LOL_A); | ||
Serial.print(" LOL_B: "); | ||
Serial.print(si5351.dev_status.LOL_B); | ||
Serial.print(" LOS: "); | ||
Serial.print(si5351.dev_status.LOS); | ||
Serial.print(" REVID: "); | ||
Serial.println(si5351.dev_status.REVID); | ||
|
||
delay(10000); | ||
} |
Oops, something went wrong.