Saltar a contenido

Módulos

SI5351 Clock Generator

Generador de señal de reloj entre 8KHz y 160MHz configurable por I2C. Compatible con 5V y 3.3V. Los niveles de señal se adecúan al de alimentación, por tanto para utilizar la misma tensión de alimentación que luego queremos que se utilice en la comunicación I2C. El reloj de salida es de 3V.

Enlaces

Conexión

Conexión nano

Programación

  1. Bajar librería Adafruit_Si5351_Library.
  2. Volcar todo su contenido a un directorio llamado Adafruit_Si5351.
  3. Copiar el directorio anterior a arduinosketchfolder/libraries/.
  4. Reiniciar el IDE.

Una vez preparado el entorno cargar un programa como el siguiente:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <Adafruit_SI5351.h>
#include <errors.h>
#include <asserts.h>
#include <Wire.h>

Adafruit_SI5351 clockgen = Adafruit_SI5351();

void setup(void) {
  if (clockgen.begin() != ERROR_NONE) {
    // There was a problem detecting the IC ... check your connections
    while(1);
  }

  // INTEGER ONLY MODE --> most accurate output
  // Setup PLLA to integer only mode @ 900MHz (must be 600..900MHz)
  // Set Multisynth 0 to 112.5MHz using integer only mode (div by 4/6/8)
  // 25MHz * 36 = 900 MHz, then 900 MHz / 8 = 112.5 MHz
  clockgen.setupPLLInt(SI5351_PLL_A, 36);
  clockgen.setupMultisynthInt(0, SI5351_PLL_A, SI5351_MULTISYNTH_DIV_8);

  // FRACTIONAL MODE --> More flexible but introduce clock jitter
  // Setup PLLB to fractional mode @616.66667MHz (XTAL * (24+2/3))
  // Setup Multisynth 1 to 13.55311MHz (PLLB/(45+1/2))
  clockgen.setupPLL(SI5351_PLL_B, 24, 2, 3);
  clockgen.setupMultisynth(1, SI5351_PLL_B, 45, 1, 2);

  // Multisynth 2 is not yet used and won't be enabled, but can be
  // Use PLLB @ 616.66667MHz, then divide by (900+0/1) -> 685.185 KHz
  // then divide by 64 for 10.706 KHz
  // configured using either PLL in either integer or fractional mode
  clockgen.setupMultisynth(2, SI5351_PLL_B, 900, 0, 1);
  clockgen.setupRdiv(2, SI5351_R_DIV_64);

  clockgen.enableOutputs(true);
}

void loop(void) {  
}

A continuación vemos algunos ejemplos.

8MHz
1
2
clockgen.setupPLL(SI5351_PLL_A, 24, 0, 1);
clockgen.setupMultisynth(0, SI5351_PLL_A, 75, 0, 1);
1MHz
1
2
3
clockgen.setupPLL(SI5351_PLL_A, 24, 0, 1);
clockgen.setupMultisynth(0, SI5351_PLL_A, 75, 0, 1);
clockgen.setupRdiv(0, SI5351_R_DIV_8);

ATtiny high voltage programmer

Enlaces

Montaje

Esquemático y montaje sobre stripboad hecho con Fritzing.

Conexión

La conexión del módulo a un Arduino UNO es como sigue:

conexión a Arduino

Programación

El programa a cargar en el Arduino UNO es éste.

Abrir el puerto serie de Arduino a 19200 baudios y seguir las indicaciones que aparecen en consola.

Digispark

Enlaces