JH7UBCサイト[3CHクロックジェネレータSi5351Aの実験]を使い秋月電子Si5351A取扱説明書の例をテストを行いました。【http://jh7ubc.web.fc2.com/arduino/Si5351A.html】
●取扱説明書PDF
秋月電子通商 Si5351A取扱説明書PDF:【chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://akizukidenshi.com/goodsaffix/AE-Si5351A.PDF】
■概要
・Silicon Laboratories社製Si5351Aを使用したクロックジェネレータモジュールです.
・2.5kHz~200MHzの周波数を出力することができます.
・3チャネル出力があり,それぞれ異なる周波数を出力することができます.
(PLL回路が2回路なので,完全に独立ではありません.)
・出力周波数はI2Cで設定します.
・出力波形は矩形波(方形波)です.
●PLL周波数の計算PLL周波数は
fvco = fxtal × ( a + ( b / c ) ) (aは15~90,bは0~1048575,cは1~1048575)
(いずれも整数)これらを設定用パラメータP1,P2,P3,に変換します(x=Aor B)
MSNxP1[17:0] = 128 * a + Floor( 128 * ( b / c ) ) - 512
MSNxP2[19:0] = 128 * b – c * Floor( 128 * ( b / c ) )
MSNxP3[19:0] = c
以上のレジスタMSNA_P1~MSNB_P3をI2Cで転送します.
●出力分周器の設定レジスタMSx_SRCでPLLAもしくはPLLBのどちらを使用するか決めるこ とができます.デフォルトでPLLAを使用するようになっています.
出力周波数はfout = fvco / ( a + ( b / c ) )
(ただし( a + ( b / c ) )の結果は6~1800の間であること)
これらを設定用パラメータP1,P2,P3,に変換します(x=0~2)
MSxP1[17:0] = 128 * a + Floor( 128 * ( b / c ) ) - 512
MSxP2[19:0] = 128 * b – c * Floor( 128 * ( b / c ) )
MSxP3[19:0] = c
以上のレジスタMS0_P1~MS2_P3をI2Cで転送します.
●例PLL400MHz,出力20MHz PLL周波数の計算
fvco=25*(15+(1/1)) =400
MSNAP1=128*15+(128*(1/1))-512 = 1,536
MSNAP2=128*1-1*(128*(1/1)) = 0
MSNAP3=1
[P1=600,P2=0,P3=1(HEX)]
●出力分周器の設定
fout=400/(15+(5/1)) = 20
MS0P1=128*15+(128*(5/1))-512 = 2,048
MS0P2=128*5-1*(128*(5/1) = 0
MS0P3=1
[P1=800,P2=0,P3=1(HEX)]
EXcel |
回路図
【CLK0】20MHzの発信確認できました。
CLK0 20MHz |
プログラム Arduino IDE【ボード:Raspberry Pi Pico】
#include <Wire.h>
const byte Si5351_ADDR = 0x60;
void setup()
{
Wire.setSDA(12); //SDA
Wire.setSCL(13); //SCL
Wire.begin(); // Arduino is Master.
Si5351_write(3,0xFF); //Disable Output
Si5351_write(16,0x80); //CLOCK0 Power down
PLLA_set();
MS0_set();
Si5351_write(177,0xA0);//Reset PLLA and PLLB
Si5351_write(16,0x4F); //CLOCK0 Power up 8mA
Si5351_write(3,0xFE); //Enable CLOCK0
}
void loop()
{
}
void Si5351_write(byte Reg , byte Data)
{
Wire.beginTransmission(Si5351_ADDR);
Wire.write(Reg);
Wire.write(Data);
Wire.endTransmission();
}
void PLLA_set()
{
Si5351_write(26,0); //MSNA_P3[15:8]
Si5351_write(27,1); //MSNA_P3[7:0]
Si5351_write(28,0); //MSNA_P1[17:16]
Si5351_write(29,0b00000110); //MSNA_P1[15:8]
Si5351_write(30,0); //MSNA_P1[7:0]
Si5351_write(31,0); //MSNA_P3[19:16]MSNA_P2[19:16]
Si5351_write(32,0); //MSNA_P2[15:8]
Si5351_write(33,0); //MSNA_P2[7:0]
}
void MS0_set(){
Si5351_write(42,0); //MS0_P3[15:8]
Si5351_write(43,1); //MS0_P3[7:0]
Si5351_write(44,0); //MS0_P1[17:16]
Si5351_write(45,0b00001000); //MS0_P1[15:8]
Si5351_write(46,0); //MS0_P1[7:0]
Si5351_write(47,0); //MS0_P3[19:16]MS0_P2[19:16]
Si5351_write(48,0); //MS0_P2[15:8]
Si5351_write(49,0); //MS0_P2[7:0]
}
0 件のコメント:
コメントを投稿