3CHクロックジェネレータSi5251Aの構造と制御方法について、分かったところまで書いておきます。(まだ、完全には理解していません。)
まず、構造と働きです。(図はデータシートから転載)
XA,XBに水晶を接続して、基準周波数を発振させます。秋月電子のモジュールではfxtal=25MHzです。
これを元にPLLAおよびPLLBで375MHz~900MHzを発生させます。PLL周波数はfvcoで表します。PLL周波数の設定は、レジスタ内のMSNxP1~MSNxP3で行います。(xはA,B)
PLLで発生させた周波数を分周器MultiSynth0~MultiSynth2で分周してCLK0~CLK2に出力します。これをfoutで表します。分周器の設定は、レジスタ内のMSxP1~MSxP3で行います。(x=0~3) どちらのPLLを使用するかは、MSx_SRCで決めることができます。
R0~R1は分周器で、1/1~1/128を指定できます。デフォルトは、1/1です。
出力強度もレジスタで設定することができます。
出力周波数foutは、2.5KHz~150MHzです。
このように、Si5351Aの各種設定は、全てレジスタの値で行われています。したがって、Si5351Aをコントロールするには、I2C通信によって各レジスタに設定値を書き込めばよいわけです。
I2C通信で書き込む方法は、1バイト書き込みと2バイト以上の書き込みがあり、次のようなフォーマットで行います。
Arduinoでは、Wireライブラリを使用して次のように行います。Si5351Aのスレーブアドレスは、0x60です。
setup(){
Wire,begin();
}
として、Arduinoをマスターとします。
Wire,beginTransmission(Si5351Aアドレス);
Wire,write(レジスタアドレス);
Wire,write(データ);
Wire.endTransmission();
で、ArduinoからSi5351Aにレジスタアドレスとデータが送信され、書き込みが行われます。
次に、Si5351Aのプログラミングの方法です。
データシートによると次のように行います。
今回は、割り込みは省略しています。
次回は、Si5351Aのレジスタについて、書いてみます。