Está en la página 1de 26

Machine Translated by Google

Desglose del generador de reloj Adafruit Si5351


Creado por señora ada

https://learn.adafruit.com/adafruit-si5351-clock-generator-breakout

Última actualización el 2021-11-15 06:16:36 PM EST

© Industrias Adafruit Página 1 de 26


Machine Translated by Google

Tabla de contenido

Visión general 3

distribución de pines 5
• Pines de alimentación 5
• Pines I2C 5

Asamblea 7

• Preparar la tira de cabecera: 7


• Agregue la placa de ruptura: 7
• ¡Y soldadura! 8

código arduino 9

• Cableado para Arduino • 9


Descarga Adafruit_Si5351 9
• Cargar boceto de demostración 10

• Referencia de la 12

biblioteca • ¡Comienza! • 12

Configurar el PLL • 12

Configurar el PLL con 'modo entero' • Configurar 13

el PLL con 'modo fraccionario' • Configurar el 13

divisor de reloj 13
• Divisor R adicional 14
• Software 14

Código de circuito de Python 17

• Cableado del microcontrolador CircuitPython • 18

Cableado de la computadora Python • Instalación 18

de la biblioteca SI5351 de CircuitPython • Instalación de la 19

biblioteca SI5351 de Python • Uso de CircuitPython y 19

Python • Configuración de bucles de bloqueo de fase • 20

Configuración de salidas de reloj • Habilitación de salidas • 20

Código de ejemplo completo 21


23
23

Documentos de Python 24

Descargas 25
• Software 25
• Hoja de datos 25
• Impresión esquemática y PCB 25

© Industrias Adafruit Página 2 de 26


Machine Translated by Google

Visión general

¡Nunca vuelvas a buscar otro cristal con el generador de reloj Si5351 de Adafruit! Este chip
tiene una referencia de cristal de precisión de 25 MHz y PLL y divisores internos para que
pueda generar prácticamente cualquier frecuencia, desde <8 KHz hasta más de 150 MHz.

El generador de reloj Si5351 es un generador de reloj de controlador I2C. Utiliza el reloj de


precisión integrado para controlar múltiples PLL y divisores de reloj mediante instrucciones
I2C. Al configurar el PLL y los divisores, puede crear frecuencias precisas y arbitrarias.
Hay tres salidas independientes, y cada una puede tener una frecuencia diferente.

© Industrias Adafruit Página 3 de 26


Machine Translated by Google

Las salidas son de 3 Vpp, ya sea a través de un encabezado apto para placa de pruebas o, para trabajo
de RF, un conector SMA opcional.

Colocamos este pequeño y práctico chip en su propia placa de circuito impreso, con un regulador LDO
de 3,3 V para que pueda alimentarse con 3-5 VCC. También colocamos circuitos de cambio de nivel en las
líneas I2C para que pueda usar este chip de manera segura con lógica de 3V o 5V.

¡Lo mejor de todo es que incluso tenemos un excelente tutorial y una biblioteca para que comiences! Nuestro
código está diseñado para usarse con el microcontrolador Arduino y el IDE, pero se transfiere fácilmente a su
plataforma favorita con soporte I2C

© Industrias Adafruit Página 4 de 26


Machine Translated by Google

distribución de pines

Pines de alimentación

El generador de reloj en el desglose requiere una potencia de 3V. Dado que muchos clientes tienen

Microcontroladores de 5V como Arduino, lanzamos un regulador de 3.3V en el tablero. Su caída ultra baja para que pueda

alimentarlo de 3.3V-5V muy bien.

• Vin: este es el conector de alimentación. Dado que el chip usa 3 VDC, hemos incluido un

regulador de voltaje a bordo que tomará 3-5 V CC y lo convertirá de manera segura. A

alimenta la placa, dale la misma potencia que el nivel lógico de tu

microcontrolador: por ejemplo, para un micro de 5V como Arduino, use 5V


• GND - tierra común para potencia y lógica

Pines I2C
• SCL - Pin de reloj I2C, conéctese a la línea de reloj I2C de sus microcontroladores. este pin es

el nivel cambió para que pueda usar una lógica de 3-5V, y hay un pullup de 10K en este pin.
• SDA - Pin de datos I2C, conéctese a la línea de datos I2C de sus microcontroladores. este pin es

el nivel cambió para que pueda usar una lógica de 3-5V, y hay un pullup de 10K en este pin.

Pasadores de reloj

• 0, 1 y 2: estas son las 3 salidas independientes generadas por reloj. Están

ondas cuadradas, de 0-3V.

© Industrias Adafruit Página 5 de 26


Machine Translated by Google

Los pines de reloj también se llevan a los conectores de lanzamiento de borde SMA en el
otro lado de la PCB. Puede comprar y soldar en algunos conectores SMA de lanzamiento de
borde (https://adafru.it/dPr) si desea canalizar la señal a un cable RF.

© Industrias Adafruit Página 6 de 26


Machine Translated by Google

Asamblea

Si tiene la versión de placa de prueba de este sensor, querrá soldar algunos encabezados
en el sensor para que pueda ser utilizado en una placa de prueba.

Prepare la tira de cabecera: corte la tira a la


longitud si es necesario. Será más fácil de soldar si lo
inserta en una placa de prueba: pines largos hacia
abajo

Agregue el tablero de ruptura:


Coloque la placa de conexión sobre las clavijas de
manera que las clavijas cortas atraviesen las
almohadillas de conexión.

© Industrias Adafruit Página 7 de 26


Machine Translated by Google

¡Y soldadura!
Asegúrese de soldar todos los pines para una conexión confiable.

contacto eléctrico.

Suelde primero la tira de alimentación/datos más larga

(Para obtener consejos sobre soldadura, asegúrese de


consultar nuestra Guía de excelente

Soldadura (https://adafru.it/aTk)).

¡Ya terminaste! Verifique sus uniones de soldadura


visualmente y continúe con los siguientes pasos

© Industrias Adafruit Página 8 de 26


Machine Translated by Google

código arduino

Cableado para Arduino


Puede conectar fácilmente esta ruptura a cualquier microcontrolador, usaremos un Arduino. Para otro tipo de microcontrolador,

solo asegúrese de que tenga capacidad I2C, luego transfiera el código: ¡es algo bastante simple!

(https://adafru.it/dPs)

adafruit_products_wiring.jpg (https://adafru.it/pBC)

• Conecte Vin a la fuente de alimentación, 3-5V está bien. Use el mismo voltaje en el que se basa la lógica del

microcontrolador. Para la mayoría de los Arduinos, eso es 5V Conecte GND a tierra común de alimentación/datos
• Conecte el pin SCL al pin SCL del reloj I2C en su Arduino. En un Arduino basado en UNO y '328, esto también se

• conoce como A5, en un Mega también se conoce como digital 21 y en un Leonardo/Micro, digital 3 Conecte el pin

SDA al pin SDA de datos I2C en su Arduino. En un Arduino basado en UNO y '328, esto también se conoce como A4,

en un Mega también se conoce como digital 20 y en un Leonardo/Micro, digital 2


Descargar Adafruit_Si5351

Para comenzar a leer los datos del sensor, deberá descargar la biblioteca Adafruit Si5351 del administrador de la biblioteca

Arduino.

Abra el administrador de la biblioteca Arduino:

© Industrias Adafruit Página 9 de 26


Machine Translated by Google

Busque la biblioteca Adafruit Si5351 e instálela

También tenemos un excelente tutorial sobre la instalación de la


biblioteca Arduino en: http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use
(https:// adafru.it/aYM)

Cargar boceto de demostración


Ahora puede abrir Archivo->Ejemplos->Adafruit_Si5351->Si5351 y subirlo a su
Arduino conectado al sensor

Luego abra la consola Serial a 9600 baudios para verificar la salida. Deberías ver lo siguiente:

© Industrias Adafruit Página 10 de 26


Machine Translated by Google

Ahora puede usar su osciloscopio para sondear las salidas #0, #1 y #2

Según la marca y el modelo de su osciloscopio, es posible que no pueda verificar la


frecuencia de salida de 112,5 MHz.

© Industrias Adafruit Página 11 de 26


Machine Translated by Google

¡Eso es todo! Si desea cambiar las frecuencias, ajuste el boceto de ejemplo y vuelva a cargar.

Referencia de biblioteca
La biblioteca que tenemos es simple y fácil de usar.

Puede crear el objeto Adafruit_Si5351 con:

Adafruit_SI5351 clockgen = Adafruit_SI5351();

I2C no tiene pines, ya que están fijos en el hardware.

¡Empezar!
Para inicializar el chip, llame a clockgen.begin() que comprobará que se puede encontrar.
Begin() devuelve verdadero/falso dependiendo de estas comprobaciones. Le sugerimos que envuelva
begin() en una declaración que verificará si se localizó el chip:

if (relojgen.begin() != ERROR_NONE) {

/* Hubo un problema al detectar el IC... revise sus conexiones */ Serial.print("Vaya, no se


detectó ningún Si5351... ¡Revise su cableado o I2C ADDR!"); mientras(1);

Configurar el PLL
El chip usa dos subsecciones para generar salidas de reloj. Primero multiplica el reloj de
referencia de 25 MHz por una cierta cantidad (configurando el PLL), luego divide ese nuevo reloj por
otra cantidad (configurando el divisor de reloj)

© Industrias Adafruit Página 12 de 26


Machine Translated by Google

Al jugar con el multiplicador y el divisor, puede generar casi cualquier reloj


¡frecuencia!

Hay dos multiplicadores PLL (A y B), por lo que si desea tener tres salidas, dos
las salidas tendrán que compartir un PLL.

Configure el PLL con 'modo entero'


La forma más limpia de ejecutar el PLL es hacer una multiplicación de enteros hacia arriba:

clockgen.setupPLLInt(SI5351_PLL_A o SI5351_PLL_B, m);

Esto establece que PLL_A o PLL_B sean 25 MHz * m y m (el multiplicador de enteros) puede variar
de 15 a 90!

Configure el PLL con 'modo fraccional'


Este modo permite una configuración de PLL mucho más flexible mediante el uso de multiplicadores fraccionarios para
la configuración de PLL, sin embargo, la salida puede tener una pequeña cantidad de fluctuación, por lo que, si es posible, intente

para usar el modo entero!

clockgen.setupPLLInt(SI5351_PLL_A o SI5351_PLL_B, m, n, d);

Esto establece que PLL_A o PLL_B sean 25 MHz * (m + n/d)

• m (el multiplicador de enteros) puede variar de 15 a 90

• n (el numerador) puede variar de 0 a 1,048,575

• d (el denominador) puede variar de 1 a 1,048,575

Configurar el reloj divisor


Una vez que haya configurado los PLL, ahora puede dividir esa frecuencia alta para obtener
el número que desea para la salida

Cada salida tiene su propio divisor. Puede usar el divisor de solo entero más limpio:

clockgen.setupMultisynthInt(salida, SI5351_PLL_x, SI5351_MULTISYNTH_DIV_x);

• Para la salida use 0, 1 o 2

• Para la entrada PLL, use SI5351_PLL_A o SI5351_PLL_B

© Industrias Adafruit Página 13 de 26


Machine Translated by Google

• Para el divisor, puede dividir por SI5351_MULTISYNTH_DIV_4, SI5351_MULTIS


YNTH_DIV_6 o SI5351_MULTISYNTH_DIV_8

Nuevamente, la salida entera le dará el reloj más limpio. Si necesita más flexibilidad, utilice
el generador/divisor fraccionario:

clockgen.setupMultisynth(salida, SI5351_PLL_x, div, n, d);

• Para la salida use 0, 1 o 2


• Para la entrada PLL, use SI5351_PLL_A o SI5351_PLL_B
• La frecuencia final es igual al PLL / (div + n/d)
• div puede variar de 4 a 900
• n puede variar de 0 a 1,048,575
• d puede variar de 1 a 1,048,575

Divisor R adicional
Si necesita dividir aún más, para llegar a las frecuencias de < 100 KHz, hay una
divisor R adicional, que divide la salida una vez más por un número fijo:

clockgen.setupRdiv(salida, SI5351_R_DIV_x);

la salida es la salida del reloj #


El divisor R puede ser cualquiera de los siguientes:

• SI5351_R_DIV_1
• SI5351_R_DIV_2
• SI5351_R_DIV_4
• SI5351_R_DIV_8
• SI5351_R_DIV_16
• SI5351_R_DIV_32
• SI5351_R_DIV_64
• SI5351_R_DIV_128

Software
Como puede ver, la parte molesta aquí es descubrir la mejor opción para PLL
multiplicador y divisor! SiLabs tiene una aplicación de escritorio llamada ClockBuilder (https://

adafru.it/dPj) que puede hacer algunos cálculos del divisor/multiplicador PLL por usted. Es
solo Windows, pero solo necesita usarlo una vez para el cálculo.

© Industrias Adafruit Página 14 de 26


Machine Translated by Google

Instale y ejecute, seleccione el Si5351A con 3 salidas y no lo conecte al EVB

Habilite la salida que desee y establezca la frecuencia como coma flotante o fracción

Configure el cristal para que sea de 25 MHz (el valor predeterminado es 27 MHz)

© Industrias Adafruit Página 15 de 26


Machine Translated by Google

¡Haga clic en Crear plan de frecuencia para ver las configuraciones de PLL y divisor!

© Industrias Adafruit Página 16 de 26


Machine Translated by Google

Las versiones anteriores de este chip solo aceptan un divisor de 900 o menos, y nuestra biblioteca no
le permite seleccionar > 900 para el div entero. Entonces, si obtiene un valor más alto de la
calculadora, ¡es posible que deba ajustarlo!

Código de circuito de Python

Es fácil usar el generador de reloj Si5351 con Python o CircuitPython, y Adaf ruit CircuitPython Módulo
SI5351 (https://adafru.it/C5C). Este módulo le permite escribir fácilmente código Python que controla la
salida del reloj de la placa.

Puede usar este sensor con cualquier placa de microcontrolador CircuitPython o con una
computadora que tenga GPIO y Python gracias a Adafruit_Blinka, nuestra compatibilidad CircuitPython-
for Python biblioteca (https://adafru.it/BSN).

© Industrias Adafruit Página 17 de 26


Machine Translated by Google

Cableado del microcontrolador CircuitPython

Primero conecte un Si5351 a su tablero exactamente como se muestra en las páginas anteriores para
Arduino usando una conexión I2C. Aquí hay un ejemplo de cableado de un Feather M0 al
sensor con I2C:

• Tablero 3V al sensor VIN

• Placa GND a sensor GND

• Placa SCL a sensor SCL

• Placa SDA a sensor SDA

Cableado de computadora Python

Dado que hay docenas de computadoras/placas Linux que puede usar, le mostraremos el cableado para
Frambuesa Pi. Para otras plataformas, visite la guía de CircuitPython en Linux para
ver si su plataforma es compatible (https://adafru.it/BSN).

Aquí está la Raspberry Pi cableada con I2C:

• Pi 3V3 al sensor VIN

• Pi GND a sensor GND

• Pi SCL a sensor SCL

• Pi SDA a sensor SDA

© Industrias Adafruit Página 18 de 26


Machine Translated by Google

Instalación de CircuitPython de la biblioteca SI5351

A continuación, deberá instalar Adafruit CircuitPython Biblioteca SI5351 (https://adafru.it/C5C) en su placa


CircuitPython.

Primero, asegúrese de estar ejecutando la última versión de Adafruit CircuitPython ( https://adafru.it/Amd)


para su placa.

A continuación, deberá instalar las bibliotecas necesarias para usar el hardware; siga cuidadosamente los
pasos para encontrar e instalar estas bibliotecas desde el paquete de bibliotecas CircuitPython de Adafruit.
(https://adafru.it/zdx). Nuestra guía de introducción tiene una excelente página sobre cómo instalar el paquete
de la biblioteca (https://adafru.it/ABU) para tableros rápidos y no rápidos.

Recuerde que para tableros no express como el, deberá instalar manualmente las bibliotecas
necesarias del paquete:

• adafruit_si5351.mpy

• adafruit_bus_device

Antes de continuar, asegúrese de que la carpeta lib o el sistema de archivos raíz de su placa tengan copiados
los archivos y carpetas adafrui t_si5351.mpy y adafruit_bus_device.

A continuación, conéctese al REPL serie de la placa (https://adafru.it/Awz) para que se encuentre en


el indicador >>> de CircuitPython.

Instalación de Python de la biblioteca SI5351

Deberá instalar la biblioteca Adafruit_Blinka que proporciona compatibilidad con CircuitPython en


Python. Esto también puede requerir habilitar I2C en su plataforma y verificar que está ejecutando Python 3.
Dado que cada plataforma es un poco diferente y Linux cambia con frecuencia, visite la guía CircuitPython
en Linux para obtener su computadora. listo (https://adafru.it/BSN)!

Una vez hecho esto, desde su línea de comando ejecute el siguiente comando:


sudo pip3 instalar adafruit-circuitpython-si5351

© Industrias Adafruit Página 19 de 26


Machine Translated by Google

Si su Python predeterminado es la versión 3, es posible que deba ejecutar 'pip' en su lugar. Solo
asegúrese de no estar tratando de usar CircuitPython en Python 2.x, ¡no es compatible!

Uso de CircuitPython y Python

Para demostrar el uso del sensor, lo inicializaremos y controlaremos los relojes desde Python REPL
de la placa. Ejecute el siguiente código para importar los módulos necesarios e inicializar la conexión
I2C con el sensor:

importar tablero
importar busio
importar adafruit_si5351 i2c =
busio.I2C(tablero.SCL, tablero.SDA) si5351 =
adafruit_si5351.SI5351(i2c)

Ahora está listo para configurar los PLL y las salidas de reloj en el chip. El SI5351 es algo complejo y
permite muchas configuraciones para equilibrar la precisión y el rango de los valores de salida del reloj.
Querrás revisar el hoja de datos (https://adafru.it/ C5E) para comprender las capacidades y
características del chip.

Configurar bucles de bloqueo de fase

Primero deberá configurar uno de los dos PLL (bucles de bloqueo de fase, hardware especial
que puede 'multiplicar' el cristal de 25 MHz a velocidades mucho más rápidas) que se utilizará como
fuente de cualquiera de las salidas de reloj. El objeto Si5351 tiene dos objetos PLL que puede
manipular:


pll_a Este es el hardware PLL A en el chip. pll_b Este

es el hardware PLL B en el chip.

Puede configurar el multiplicador de cada PLL llamando a la función configure_integer o confi


gura_fractional . La configuración de enteros le permite establecer un multiplicador de enteros para la
frecuencia de cristal base de 25 MHz. Esta es la forma más precisa de controlar la frecuencia, pero
solo puede establecer múltiplos enteros. Por ejemplo, para establecer PLL A en 500 MHz, establecería
un multiplicador entero de 20 (25 MHz * 20 = 500 MHz):

si5351.pll_a.configure_integer(20)

¡No lo olvide, si lee la hoja de datos, verá que el Si5351 solo admite un PLL múltiplo de 15-90!

© Industrias Adafruit Página 20 de 26


Machine Translated by Google

Si tiene curiosidad, puede leer la propiedad de frecuencia del PLL para leer qué frecuencia está
configurada para usar:

imprimir('PLL A: {0} MHz'.formato(si5351.pll_a.frecuencia/1000000))

La otra forma de configurar un PLL es con un multiplicador fraccionario. Esto le permite establecer
tanto el múltiplo entero como un múltiplo fraccionario (especificado por un numerador y un
denominador). Los multiplicadores fraccionarios pueden permitirle especificar un rango de frecuencias
aún mayor, pero pueden no ser precisos y pueden ser susceptibles a fluctuaciones con el tiempo.

Por ejemplo, para configurar PLL B a 512,5 MHz, puede especificar un multiplicador de 20,5
llamando:

si5351.pll_b.configure_fractional(20, 1, 2)

Observe que la función configure_fractional toma nuevamente el múltiplo entero (20) pero también
agrega un valor de numerador (1) y denominador (2). El multiplicador real será la combinación del
multiplicador entero más el numerador/denominador. En este caso 20,5 o 20 1/2 es el multiplicador.

Nuevamente, puede leer la propiedad de frecuencia para confirmar el valor que se estableció.

imprimir('PLL B: {0} MHz'.formato(si5351.pll_b.frecuencia/1000000))

Configurar salidas de reloj


Una vez que se configura un PLL, puede configurar cualquiera de las tres salidas de reloj del Si5351.
Cada salida de reloj se alimenta en un PLL como entrada y lo dividirá en un valor de frecuencia final.
Cualquier PLL se puede conectar a cualquier salida de reloj, pero recuerde que solo tiene dos PLL
para configurar y usar.

© Industrias Adafruit Página 21 de 26


Machine Translated by Google

Cada uno de los relojes está expuesto en el objeto SI5351:


clock_0 La salida del reloj 0.

clock_1 La salida del reloj 1.

clock_2 La salida del reloj 2.

Al igual que configurar los PLL, puede configurar el divisor de reloj con una función configure_integer
y configure_fractional . Nuevamente, se aplica la misma compensación de precisión frente a rango
para divisores de enteros frente a fraccionarios. Por ejemplo, para configurar el reloj 0 para usar
PLL A como fuente (funcionando a 500 MHz como se configuró anteriormente) y un divisor de 4,
podría llamar:

si5351.clock_0.configure_integer(si5351.pll_a, 4)

Observe que le dice a la función configure_integer tanto el PLL a usar como el valor del divisor de
enteros. Puede apuntar a cualquiera de los objetos pll_a o pll_b en el Si5351 para usar un PLL
específico como fuente.

La frecuencia final establecida por el reloj se configurará como la frecuencia de la fuente


PLL (aquí 500 MHz) dividida por el valor divisor (4), o 125 MHz. Puede verificar leyendo la
propiedad de frecuencia del reloj:

print('Reloj 0: {0:0.3f} MHz'.format(si5351.clock_0.frequency/1000000))

Al igual que la configuración de PLL, también puede establecer un divisor fraccionario con la función
configure_fractional en el reloj. Configuremos el reloj 1 para que tenga PLL B como fuente y un
divisor de 4.5:

si5351.clock_1.configure_fractional(si5351.pll_b, 4, 1, 2)

Si hace los cálculos, debe esperar que un PLL fuente de 512,5 MHz dividido por 4,5 produzca una
salida de reloj de 113,8889 MHz. Compruebe la propiedad de frecuencia para estar seguro:

imprimir('Reloj 1: {0:0.3f} MHz'.formato(si5351.reloj_1.frecuencia/1000000))

© Industrias Adafruit Página 22 de 26


Machine Translated by Google

Habilitación de salidas

Hay una última cosa que hacer antes de que las salidas de reloj realmente funcionen, debe
habilitarlas. Puede habilitar todas las salidas de reloj configurando la propiedad outputs_enabled en
True :

si5351.outputs_enabled = Verdadero

Ahora, las salidas del reloj 0, 1, 2 deberían emitir una onda cuadrada a la frecuencia
configurada en función de su PLL y multiplicadores y divisores. ¡Es posible que necesite usar un
osciloscopio que sea muy rápido para medir algunas de estas salidas, ya que el Si5351 puede
generar velocidades de reloj bastante altas, muy por encima de los 100 MHz!

Si desea deshabilitar las salidas, establezca outputs_enabled en False .

¡Eso es todo lo que hay que hacer para usar el generador de reloj Si5351 con CircuitPython! Aquí
hay un ejemplo completo que configurará los 3 relojes de varias maneras. Guarda esto como código.
py en su tablero y lea los comentarios para ver cómo configura cada reloj.

Código de ejemplo completo

# SPDX-FileCopyrightText: 2021 ladyada para Adafruit Industries


# SPDX-License-Identifier: MIT

# Demostración simple del generador de reloj SI5351.


# Esto es como el ejemplo de la biblioteca Arduino: # https://
github.com/adafruit/Adafruit_Si5351_Library/blob/master/examples/si5351/ si5351.ino # Que configurará el chip con: # -
PLL A a 900 mhz # - PLL B a 616.66667mhz # - Reloj 0 a 112.5mhz, usando PLL A como fuente dividida por 8 # - Reloj 1
a 13.553115mhz, usando PLL B como fuente dividida por 45.5 # - Reloj 2 a 10.76khz, usando PLL B como una fuente
dividida por 900 y más # dividida con un divisor R de 64. import board import busio

importar adafruit_si5351

# Inicializa el bus I2C. i2c =


busio.I2C(placa.SCL, placa.SDA)

# Inicializar SI5351. si5351


= adafruta_si5351.SI5351(i2c)
# Alternativamente, puede especificar la dirección I2C si se ha cambiado: # si5351 =
adafruit_si5351.SI5351(i2c, dirección=0x61)

# Ahora configure los PLL y las salidas de reloj.


# Los PLL se pueden configurar con un multiplicador y una división de la placa

© Industrias Adafruit Página 23 de 26


Machine Translated by Google

# Cristal de referencia de 25mhz. Por ejemplo, configure PLL A a 900 MHz multiplicando # por 36. Esto
utiliza un multiplicador de números enteros que es más preciso con el tiempo # pero permite un rango de
frecuencias menor en comparación con un multiplicador fraccionario # que se muestra a continuación.
si5351.pll_a.configure_integer(36) # Multiplica 25mhz por 36 print("PLL A frecuencia: {0}
mhz".format(si5351.pll_a.frequency / 1000000))

# Y luego configure PLL B a 616.6667mhz multiplicando 25mhz por 24.667 usando # la configuración del
multiplicador fraccional. Tenga en cuenta que especifica el multiplicador de número entero y luego un
numerador y un denominador como valores separados, es decir, el numerador 2 y el denominador 3
significan 2/3 o 0,667. Esta configuración fraccional # es susceptible a cierta fluctuación con el tiempo,
pero puede establecer un rango de # frecuencias más grande. si5351.pll_b.configure_fractional(24, 2, 3)
# Multiplica 25mhz por 24.667 (24 2/3) print("PLL B frecuencia: {0}mhz".formato(si5351.pll_b.frecuencia /
1000000))

# Ahora configure las salidas del reloj. Cada uno es impulsado por una frecuencia PLL como entrada # y
luego lo divide aún más en una frecuencia específica.
# Configure la salida del reloj 0 para que sea impulsada por PLL A dividido por 8, por lo que una
salida # de 112,5 mhz (900 mhz / 8). Nuevamente, esto usa la división de enteros más precisa # pero no
puede establecer un rango de valores tan amplio. si5351.clock_0.configure_integer(si5351.pll_a, 8)
print("Reloj 0: {0}mhz".format(si5351.clock_0.frecuencia / 1000000))

# Luego configure el reloj 1 para que sea controlado por PLL B dividido por 45.5 para obtener
# 13.5531mhz (616.6667mhz / 45.5). Esto usa la división fraccionaria y nuevamente # observe que
el numerador y el denominador se especifican explícitamente. Esto es menos # preciso pero permite una
amplia gama de frecuencias. si5351.clock_1.configure_fractional(si5351.pll_b, 45, 1, 2) # Dividir por 45,5
(45 1/2) print("Reloj 1: {0}mhz".format(si5351.clock_1.frecuencia / 1000000))

# Finalmente configure el reloj 2 para que sea manejado por PLL B dividido una vez por 900 para bajar
# a 685.15 khz y luego dividido por un divisor R especial que # divide 685.15 khz por 64 para obtener
una salida final de 10.706 khz. si5351.clock_2.configure_integer(si5351.pll_b, 900)

# Establecer el divisor R, este puede ser un valor de: # -


R_DIV_1: divisor de 1 # - R_DIV_2: divisor de 2 # -
R_DIV_4: divisor de 4 # - R_DIV_8: divisor de 8 # -
R_DIV_16: divisor de 16 # - R_DIV_32: divisor de 32 # -
R_DIV_64: divisor de 64 # - R_DIV_128: divisor de 128
si5351.clock_2.r_divider = adafruit_si5351.R_DIV_64
print("Reloj 2: {0}khz".format(si5351.clock_2.frecuencia /
1000) )

# Después de configurar los PLL y los relojes, habilite las salidas.


si5351.outputs_enabled = True # Puede deshabilitarlos configurando false.

Documentos de Python

Pitón Documentos (https://adafru.it/C5F)

© Industrias Adafruit Página 24 de 26


Machine Translated by Google

Descargas

Software
SiLabs tiene una aplicación de escritorio llamada ClockBuilder (https://adafru.it/dPj) que puede hacer

algún cálculo del divisor/multiplicador PLL para usted.

Ficha de datos
• si5351 Hoja de datos (https://adafru.it/dPk)

• Objeto Fritzing en Adafruit Fritzing biblioteca (https://adafru.it/aP3)

• Archivos PCB de EagleCAD en GitHub (https://adafru.it/pBD)

Impresión esquemática y PCB

© Industrias Adafruit Página 25 de 26


Machine Translated by Google

© Industrias Adafruit Página 26 de 26

También podría gustarte