Raspberry Pi Pico + CircuitPython + MuIDE環境で、3チャンネル・クロックジェネレーターSi5351Aのテストをします。
CircuitPythonには、Si5351用のライブラリがありますので、CircuitPythonのLibrariesダウンロードページからmpyライブラリをダウンロードします。
ダウンロードし、解凍したファイルのlibフォルダ内のadafrit_si5351.mpyをPicoのlibフォルダ内のコピーします。
今回テストするのは、examplesフォルダ内のsi5351_simpletest.pyです。
Raspberry Pi PicoとSi5351Aモジュール(秋月電子で販売しているもの)の接続回路図です。 I2C接続で、Pico側は、SCL=GP17,SDA=GP16とします。
このモジュールにはプルアップ抵抗がついていませんので、外付けで10KΩの抵抗でプルアップしました。
スクリプトです。
ファイル名は、code.pyとして、Picoのルートの保存し、実行します。
実際のsi5351_simpletest.pyには、英文の説明が長々としてありますが、割愛して、簡単な説明を加えました。また、そのままでは動きませんでしたので、最初の部分を若干書き換えてあります。
--------------------------------------------------------------------------------
"""
si5351_simpletest.py
"""
from board import *
import busio
import adafruit_si5351
SCL = GP17
SDA = GP16
# Initialize I2C bus.
i2c = busio.I2C(SCL, SDA)
# Initialize SI5351.
si5351 = adafruit_si5351.SI5351(i2c)
#PLLA周波数設定 25MHz×36=900MHz
si5351.pll_a.configure_integer(36) # Multiply 25mhz by 36
print("PLL A frequency: {0}mhz".format(si5351.pll_a.frequency / 1000000))
#PLLB周波数設定 25MHz×24 2/3=616.66667MHz
si5351.pll_b.configure_fractional(24, 2, 3) # Multiply 25mhz by 24.667 (24 2/3)
print("PLL B frequency: {0}mhz".format(si5351.pll_b.frequency / 1000000))
#CLOCK0出力周波数 900MHz/8=112.5MHz
si5351.clock_0.configure_integer(si5351.pll_a, 8)
print("Clock 0: {0}mhz".format(si5351.clock_0.frequency / 1000000))
#CLOCK1出力周波数 616.66667MHz/(45 1/2)=13.55311MHz
si5351.clock_1.configure_fractional(si5351.pll_b, 45, 1, 2) # Divide by 45.5 (45 1/2)
print("Clock 1: {0}mhz".format(si5351.clock_1.frequency / 1000000))
#CLOCK2出力周波数 616.66667MHz/900=0.68518519MHz
si5351.clock_2.configure_integer(si5351.pll_b, 900)
#CLOCK2ポストデバイダ設定 1/64 CLOCK2出力=685.18519KHz/64=10.706KHz
si5351.clock_2.r_divider = adafruit_si5351.R_DIV_64
print("Clock 2: {0}khz".format(si5351.clock_2.frequency / 1000))
# After configuring PLLs and clocks, enable the outputs.
si5351.outputs_enabled = True
# You can disable them by setting false.
--------------------------------------------------------------------------------
SI5351Aのブロック図です。
このスクリプトでは、CLOCK0は、PLLA(900MHz)をMS0で1/8して、112.5MHzにしています。
CLOCK1は、PLLB(616.66667MHz)をMS1で45 1/2分周して、13.553115MHzにしています。
CLOCK2は、PLLBをMS2で1/900して、685.18519KHzにして、更にポスト分周期R2で1/64にして、10.706KHzにしています。
ブレッドボードです。
Si5351Aの出力周波数を測定してみました。
CLOCK0の出力です。理論値は112.5MHzです。
CLOCK1の出力です。理論値は、13.553115MHzです。
CLOCK2の出力です。理論値は、10.706KHzです。
ほぼ、理論値通りの出力が得られました。
今後、もう少し勉強して、OLED表示とロータリーエンコーダと組み合わせて、VFOを作ってみようと思っています。
※コメント投稿者のブログIDはブログ作成者のみに通知されます