この解説は、Skyworks (Silicon Labs) Si47XX PROGRAMMING GUIDE AN332 を基に、Google AI (Gemini) の協力を得て作成しています。
1 プロパティ 0x3104. AM_MODE_AFC_SW_PULL_IN_RANGE 概要
AM_MODE_AFC_SW_PULL_IN_RANGE(短波AFC引き込み範囲設定)
SW AFCのプルイン範囲(引き込み範囲)またはトラッキング範囲を設定します。
PULL_IN_RANGEの値は同調周波数に対する相対値であり、
1/(PPM×10-6)として指定します。
例えば、プルイン範囲を115 ppmに設定する場合、PULL_IN_RANGE = 1/(115×10-6) = 8695 となります。
CTSビット(およびオプションの割り込み)がセットされると、コマンド処理は完了します。
対応デバイス:Si4734/35-D60以降、Si4732
デフォルト値:0x21F7 (115 ppm)
SW AFCのプルイン範囲(引き込み範囲)またはトラッキング範囲を設定します。
PULL_IN_RANGEの値は同調周波数に対する相対値であり、
1/(PPM×10-6)として指定します。
例えば、プルイン範囲を115 ppmに設定する場合、PULL_IN_RANGE = 1/(115×10-6) = 8695 となります。
CTSビット(およびオプションの割り込み)がセットされると、コマンド処理は完了します。
対応デバイス:Si4734/35-D60以降、Si4732
デフォルト値:0x21F7 (115 ppm)
2 プロパティ
2.1 プロパティリスト
| Bit | 上位バイト PROPH | 下位バイト PROPL | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Name | SWPIR | |||||||||||||||
| Bit | Name | Function |
|---|---|---|
| 15:0 | SWPIR | SW引き込み範囲 同調周波数に対するSW引き込み範囲。 |
2.2 プロパティ
AM_MODE_AFC_SW_PULL_IN_RANGEは、短波(SW)受信モードにおいて、自動周波数制御(AFC: Automatic Frequency Control)回路が
目的の放送局に「自動で引き込める(ロックを開始できる)周波数のズレの最大許容範囲」を設定するプロパティです。
・短波帯は電離層の影響によるフェージングや送信側の微妙な周波数ドリフト(ズレ)が発生しやすいため、内蔵DSPのAFCが中心周波数を追従します。
・本プロパティは、同調を外さずにどれだけ「離れた周波数から引き込めるか」という初期キャプチャ範囲をPPM(Parts Per Million)単位をベースにした特殊な整数演算値で決定します
・短波帯は電離層の影響によるフェージングや送信側の微妙な周波数ドリフト(ズレ)が発生しやすいため、内蔵DSPのAFCが中心周波数を追従します。
・本プロパティは、同調を外さずにどれだけ「離れた周波数から引き込めるか」という初期キャプチャ範囲をPPM(Parts Per Million)単位をベースにした特殊な整数演算値で決定します
2.2.1 SWPIR (Shortwave Pull-In Range)
目的と概要:
短波AFCの引き込み範囲を、設定値=1 / (PPM × 10^-6) の計算式に基づく値で設定します。
デフォルト値は 0x21F7(十進数で8695)であり、これは約 115 ppm の引き込み幅に相当します。
値を大きくする(計算式の分母であるPPMを小さくする)と引き込み幅が狭くなり、値を小さくすると引き込み幅が広くなります。
AN332に明記されない目的と解説:
デフォルト値は 0x21F7(十進数で8695)であり、これは約 115 ppm の引き込み幅に相当します。
値を大きくする(計算式の分母であるPPMを小さくする)と引き込み幅が狭くなり、値を小さくすると引き込み幅が広くなります。
隣接強電界局への「引き込み誤動作(トラッキングバースト)」の防止:
基準クロック(水晶振動子)の熱ドリフト吸収:
AN332では主にSW受信時の追従範囲として解説されていますが、短波帯の5kHzステップ内に強力な局が密集している環境において、
引き込み範囲(SWPIR)を広く(PPM値を大きく)しすぎると、本来受信したい微弱局ではなく、
隣接する強電界のオバケ局のキャリア(搬送波)にAFCが勝手に引っ張られて同調が狂う現象が起きます。
本パラメータをあえて狭い値に追い込む(PPM値を小さくする=設定整数値を大きくする)ことで、DSPの同調ターゲットをピンポイントに固定し、 隣接混信を回避する「ソフトウェア選択度フィルター」の補助的な役割を持たせることができます。
本パラメータをあえて狭い値に追い込む(PPM値を小さくする=設定整数値を大きくする)ことで、DSPの同調ターゲットをピンポイントに固定し、 隣接混信を回避する「ソフトウェア選択度フィルター」の補助的な役割を持たせることができます。
基準クロック(水晶振動子)の熱ドリフト吸収:
本ICの基準クロック(RCLK)に安価な水晶振動子を使用している場合、チップ自身の発熱で基準クロックが数ppm〜数十ppmドリフトします。
SWPIRの範囲を適切に維持しておくことで、マイコン側が周波数を再設定(TUNE)することなく、 IC単体でクロックの熱ドリフトによる受信感度低下を相殺させ続けるバックグラウンド補正バッファとして裏で極めて重要な役割を果たしています。
SWPIRの範囲を適切に維持しておくことで、マイコン側が周波数を再設定(TUNE)することなく、 IC単体でクロックの熱ドリフトによる受信感度低下を相殺させ続けるバックグラウンド補正バッファとして裏で極めて重要な役割を果たしています。
3 応答パラメータ
STATUS (Status Byte)
CTS (Clear to Send):
ERR (Error):
1 になると、チップが前のコマンドの処理を完了し、次のコマンドを受け入れられる状態であることを示します。
ERR (Error):
1 の場合、直前に送ったコマンドやプロパティの引数が不正(範囲外など)であったことを示します。
4 その他(Google AI (Gemini) の見解)
4.1 コマンドの重要ステップと注意事項
AMモードではなく「短波(SW)モード」でのみ有効:
特殊な計算式の理解:
本プロパティは名称に AM_MODE と付いていますが、パラメータ名が示す通り SW(短波)受信時のみ効果を発揮 します。
中波(MW)や長波(LW)ではAFCの動作ロジックが異なる、あるいは無効化されるため、短波帯(通常1.711MHz〜29.41MHz)の選局フローの直前・直後に書き込みを行ってください。
中波(MW)や長波(LW)ではAFCの動作ロジックが異なる、あるいは無効化されるため、短波帯(通常1.711MHz〜29.41MHz)の選局フローの直前・直後に書き込みを行ってください。
特殊な計算式の理解:
値がPPMの「逆数」をベースにしているため、設定する16ビットのバイナリ値(SWPIR)は直感的な周波数(kHz)ではなく、
計算が必要です(115ppmを設定したい場合は 1 / (115 * 10^-6) = 8695.6 ⇒ 0x21F7)。
プログラム内で動的に変更する場合は、ゼロ除算やオーバーフローを防ぐリミッタ処理が必須です。
プログラム内で動的に変更する場合は、ゼロ除算やオーバーフローを防ぐリミッタ処理が必須です。
4.2 もう少し踏み込んだ応用展開
「ファインチューニング(同期検波風)アシスト」への応用:
短波帯のSSB(単一側波帯)拡張ファームウェアや、極めてシビアな短波DX受信を行う際、 マイコン側のロータリーエンコーダの回転速度(早回しか、微調整か)に合わせて本プロパティをリアルタイムに変更します。
短波帯のSSB(単一側波帯)拡張ファームウェアや、極めてシビアな短波DX受信を行う際、 マイコン側のロータリーエンコーダの回転速度(早回しか、微調整か)に合わせて本プロパティをリアルタイムに変更します。
・早回し選局時(高速サーチ): SWPIR を広め(PPM大)にして、多少周波数がズレていても局のキャリアを一発で捕まえやすくする。
・ピンポイント静止時(リスニング): SWPIR をデフォルト(115ppm)またはそれ以下に狭め、フェージングによる隣接局への周波数ジャンプ(AFC外れ)を完全にロックガードする。
このような動的AFC制御(Dynamic AFC Tracking)を実装すると、劇的に安定した短波受信機が構築できます。
・ピンポイント静止時(リスニング): SWPIR をデフォルト(115ppm)またはそれ以下に狭め、フェージングによる隣接局への周波数ジャンプ(AFC外れ)を完全にロックガードする。
このような動的AFC制御(Dynamic AFC Tracking)を実装すると、劇的に安定した短波受信機が構築できます。
4.3 デバッグ時のチェックリスト
・16ビットの値を送信する際、上位バイト(D15〜D8)と下位バイト(D7〜D0)が逆転せずに正しく合成されて SET_PROPERTY(0x12)へ渡されているか?
・GET_PROPERTY(0x13)で 0x3104 を読み戻した際、デフォルト値(0x21F7)または意図して計算・設定した整数値が正しく格納されているかを確認できているか?
・非常に強力な短波局を受信中に、あえて周波数を1kHz〜2kHz故意にズラした状態で、 SWPIR を最大に広げた時と最小に絞った時で、AFCが中心周波数に引き戻す挙動(音質やRSSIの復帰)に差が出るか?(引き込み能力の確認)
・GET_PROPERTY(0x13)で 0x3104 を読み戻した際、デフォルト値(0x21F7)または意図して計算・設定した整数値が正しく格納されているかを確認できているか?
・非常に強力な短波局を受信中に、あえて周波数を1kHz〜2kHz故意にズラした状態で、 SWPIR を最大に広げた時と最小に絞った時で、AFCが中心周波数に引き戻す挙動(音質やRSSIの復帰)に差が出るか?(引き込み能力の確認)
4.4 まとめ
AM_MODE_AFC_SW_PULL_IN_RANGE(0x3104)は、短波特有の電波の揺らぎや周波数ズレに対して、
DSPラジオがどれだけの「包容力」を持って局をキャッチしにいけるかを決定する境界値です。
デフォルト値(115ppm)のままでも実用上問題ありませんが、短波の混信環境の打破や、 よりシビアな遠距離受信(DXing)を追求する自作ラジオのファームウェア設計においては、隠れたチューニングポイントとして非常に面白いポテンシャルを持っています。
デフォルト値(115ppm)のままでも実用上問題ありませんが、短波の混信環境の打破や、 よりシビアな遠距離受信(DXing)を追求する自作ラジオのファームウェア設計においては、隠れたチューニングポイントとして非常に面白いポテンシャルを持っています。
