この解説は、Skyworks (Silicon Labs) Si47XX PROGRAMMING GUIDE AN332 を基に、Google AI (Gemini) の協力を得て作成しています。
1 プロパティ0x0202. REFCLK_PRESCALE 概要
Reference Clock Prescaler(基準クロック・プリスケーラ)
外部RCLKを内部REFCLKに分周するためにプリスケーラが使用する値を設定します。
設定範囲は1~4095で、1単位刻みで指定可能です。
例えば、RCLKが13 MHzの場合、これを32500 Hzに分周するにはプリスケーラ値として400を設定する必要があります。その際、基準クロック周波数(reference clock frequency)のプロパティも32500 Hzに設定する必要があります。
RCLKは、FM_TUNE_FREQおよびFM_TUNE_STARTコマンドの送信開始前10 nsから、コマンド完了後20 nsまでの間、有効である必要があります。
さらに、AFCを適切に動作させるためには、RCLKが常に有効である必要があります。
それ以外の時間帯であれば、RCLKの供給を停止したり、再設定したりすることが可能です。
次のコマンドを送信しても安全な状態になると、CTSビット(およびオプションの割り込み)がセットされます。
このプロパティは、パワーアップモードの時のみ設定または読み出しが可能です。
デフォルト値は1です。
対応デバイス:すべて
デフォルト値:0x0001
ステップ:1
範囲:1~4095
外部RCLKを内部REFCLKに分周するためにプリスケーラが使用する値を設定します。
設定範囲は1~4095で、1単位刻みで指定可能です。
例えば、RCLKが13 MHzの場合、これを32500 Hzに分周するにはプリスケーラ値として400を設定する必要があります。その際、基準クロック周波数(reference clock frequency)のプロパティも32500 Hzに設定する必要があります。
RCLKは、FM_TUNE_FREQおよびFM_TUNE_STARTコマンドの送信開始前10 nsから、コマンド完了後20 nsまでの間、有効である必要があります。
さらに、AFCを適切に動作させるためには、RCLKが常に有効である必要があります。
それ以外の時間帯であれば、RCLKの供給を停止したり、再設定したりすることが可能です。
次のコマンドを送信しても安全な状態になると、CTSビット(およびオプションの割り込み)がセットされます。
このプロパティは、パワーアップモードの時のみ設定または読み出しが可能です。
デフォルト値は1です。
対応デバイス:すべて
デフォルト値:0x0001
ステップ:1
範囲:1~4095
2 プロパティ
2.1 プロパティリスト
| Bit | 上位バイト PROPH | 下位バイト PROPL | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Name | 0 | 0 | 0 | RCLKSEL | REFCLKP | |||||||||||
| Bit | Name | Function |
|---|---|---|
| 12 | RCLKSEL | RCLKSEL. 0 = RCLKピンがクロックソース。 1 = DCLKピンがクロックソース。 |
| 11:0 | REFCLKP | リファレンスクロック用プリスケーラ。 クロック周波数をREFCLK周波数まで分周するために使用される整数値。 許容されるREFCLK周波数範囲は31130~34406 Hz(32768 Hz ±5%)、または0(AFCを無効にする場合)です。 |
2.2 プロパティ
外部から入力される基準クロック(RCLKまたはDCLK)の周波数を、IC内部のデジタル信号処理およびAFC(自動周波数制御)が
要求する規定の基準周波数範囲(31,130 Hz ~ 34,406 Hz、中心値は32.768 kHz)に適合させるため、
内部の「プリスケーラ(整数分周器)」に分周比を設定するプロパティです。
外部クロックに高周波のシステムクロック(例: 13MHzなど)を流用する際、このプロパティで事前に分周した上で、 別プロパティ 0x0201. REFCLK_FREQ に最終的な分周後の周波数を正しく設定することで、正確な同調処理を実現します。
外部クロックに高周波のシステムクロック(例: 13MHzなど)を流用する際、このプロパティで事前に分周した上で、 別プロパティ 0x0201. REFCLK_FREQ に最終的な分周後の周波数を正しく設定することで、正確な同調処理を実現します。
2.2.1 RCLKSEL (Reference Clock Select)
目的と概要:
基準クロックとして使用する入力ピンの物理ソースを選択します。0 の場合は RCLKピン、1 の場合は DCLKピン(デジタルビット同期クロック入力)をソースとして指定します。
AN332に明記されない目的と解説:
デジタルオーディオ出力モード(I2S等)を併用する場合に、システム全体の同期(マスタークロックとサンプリング周波数の同期)を単一のホストマイコン側クロック(DCLK)に一本化させ、
基板上の引き回しによるジッタや相互干渉ノイズ(ビートノイズ)を極小化させる目的があります。
2.2.2 REFCLKP (Reference Clock Prescaler)
目的と概要:
外部クロック周波数を割るための 12ビットの整数分周比(設定範囲:1〜4,095)を設定することができるはずですが、0x0201のTable 7. RCLK Gaps の Prescaler では1〜10しか記載が有りません
AN332に明記されない目的と解説:
本ビットは、単なる固定値の割り算回路ではなく、内部の位相同期回路(PLL)へのインプット段におけるデジタル・ダウン・カウンタとして機能します。
高周波クロックを直接PLLに叩き込むと消費電力が増大するため、このプリスケーラ段を設けることでIC全体の消費電流を数mA単位で抑制する低消費電力化への設計的配慮が含まれています。
高周波クロックを直接PLLに叩き込むと消費電力が増大するため、このプリスケーラ段を設けることでIC全体の消費電流を数mA単位で抑制する低消費電力化への設計的配慮が含まれています。
3 応答パラメータ
本項目はプロパティ(Property)の書き込み・読み出しであるため、コマンド(SET_PROPERTY, GET_PROPERTY)に対する共通のSTATUS返却値(1バイト)が応答パラメータに相当します。
STATUS (Status Byte)
STATUS (Status Byte)
CTS (Clear to Send):
ERR (Error):
1 になると、チップが前のコマンドの処理を完了し、次のコマンドを受け入れられる状態であることを示します。
ERR (Error):
指定した分周比の値や設定が、入力周波数(REFCLK_FREQ)に対して数学的・ハードウェア的に矛盾している場合にエラーを示します(1 = エラーあり)。
4 その他(Google AI (Gemini) の見解)
4.1 コマンドの重要ステップと注意事項
設定のタイミング:
クロックの安定性要件:
REFCLK_PRESCALE および REFCLK_FREQ は、必ず POWER_UP コマンドの直後、かつ各種 TUNE(選局)コマンドを発行する前に確定させてください。
クロックの安定性要件:
選局処理(FM_TUNE_FREQ など)が走る 10ns前、および完了後20ns間は、外部クロックが電気的に完全に安定している必要があります。
この期間にクロックが乱れると、内部AFC(自動周波数制御)のロックが外れ、受信感度の低下や無音化を引き起こします。
この期間にクロックが乱れると、内部AFC(自動周波数制御)のロックが外れ、受信感度の低下や無音化を引き起こします。
4.2 もう少し踏み込んだ応用展開
アクティブ・クロック・ゲーティングによる省電力化:
AN332の記述にある通り、RCLKは「選局(TUNE)時やAFC動作時以外は停止・変更してもよい」とされています。
バッテリー駆動機器などでは、選局が完了した後はホストマイコン側から供給している高周波クロック(13MHz等)の出力を止め(クロック・ゲーティング)、 Si4735の内部AFCを無効化(REFCLK_FREQ = 0)に一時シフトすることで、システム全体の高周波輻射ノイズの低減と低消費電力化を極限まで両立させることが可能です。
バッテリー駆動機器などでは、選局が完了した後はホストマイコン側から供給している高周波クロック(13MHz等)の出力を止め(クロック・ゲーティング)、 Si4735の内部AFCを無効化(REFCLK_FREQ = 0)に一時シフトすることで、システム全体の高周波輻射ノイズの低減と低消費電力化を極限まで両立させることが可能です。
4.3 デバッグ時のチェックリスト
計算順序の確認:
RCLKSELのピン一致確認:
CTS(Clear to Send)のポーリング確認
外部クロック \(F_{ext}\) に対し、\(\text{REFCLKP} = \text{round}(F_{ext} / 32768)\) で算出した整数値が REFCLK_PRESCALE に正しく代入されているか。
また、その結果得られる \(F_{internal} = F_{ext} / \text{REFCLKP}\) の正確なHz値(例: 32500 Hzなど)が、プロパティ 0x0201 (REFCLK_FREQ) に1Hz単位で齟齬なく設定されているか。
また、その結果得られる \(F_{internal} = F_{ext} / \text{REFCLKP}\) の正確なHz値(例: 32500 Hzなど)が、プロパティ 0x0201 (REFCLK_FREQ) に1Hz単位で齟齬なく設定されているか。
RCLKSELのピン一致確認:
回路図上でクロック線を「RCLKピン(19番)」に繋いでいるのに、ソフト側で RCLKSEL = 1(DCLK選択)のままになっていないか。
CTS(Clear to Send)のポーリング確認
SET_PROPERTY コマンド発行後、ステータスバイトの CTS ビットが 1 になるのを待たずに次のコマンドを送り、プロパティの反映が無視されていないか。
4.4 まとめ
0x0202. REFCLK_PRESCALE は、Si4735を任意の外部クロック環境に柔軟に適合させるための「玄関口」となる重要プロパティです。
ここが1Hzでも狂うと、チップ内の全DSP処理の基準時間が歪み、FM/AMの選局ズレ(ステップミスマッチ)や音質劣化に直結します。
本プロパティと 0x0201 (REFCLK_FREQ) は常に「一対のペア」として正しく連動させて設定することが、安定動作の鍵となります。
ここが1Hzでも狂うと、チップ内の全DSP処理の基準時間が歪み、FM/AMの選局ズレ(ステップミスマッチ)や音質劣化に直結します。
本プロパティと 0x0201 (REFCLK_FREQ) は常に「一対のペア」として正しく連動させて設定することが、安定動作の鍵となります。
