この解説は、Skyworks (Silicon Labs) Si47XX PROGRAMMING GUIDE AN332 を基に、Google AI (Gemini) の協力を得て作成しています。
1 プロパティ 0x1402. FM_SEEK_FREQ_SPACING 概要
FM_SEEK_FREQ_SPACING
FMシーク時の周波数間隔を選択します。
有効な値は5、10、20の3つのみです。
次のコマンドを送信しても安全な状態になると、CTSビット(およびオプションの割り込み)がセットされます。
このプロパティは、パワーアップモードのときにのみ設定または読み取りが可能です。
デフォルトは100 kHzです。
対応モード:すべて
デフォルト値:0x000A
FMシーク時の周波数間隔を選択します。
有効な値は5、10、20の3つのみです。
次のコマンドを送信しても安全な状態になると、CTSビット(およびオプションの割り込み)がセットされます。
このプロパティは、パワーアップモードのときにのみ設定または読み取りが可能です。
デフォルトは100 kHzです。
対応モード:すべて
デフォルト値:0x000A
2 プロパティ
2.1 プロパティリスト
| Bit | 上位バイト PROPH | 下位バイト PROPL | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Name | SKSPACE | |||||||||||||||
| Bit | Name | Function |
|---|---|---|
| 15:0 | SKSPACE | FMシーク時の周波数間隔。 シーク機能実行時の周波数間隔を選択します。 10 kHz単位で指定します。 有効な値は5(50 kHz)、10(100 kHz)、20(200 kHz)の3つのみです。 デフォルト値は10です。 |
2.2 プロパティ
本プロパティは、FMモードにおいて自動選局(FM_SEEK_START)コマンドを実行した際、次の選局候補を探すために周波数をステップさせる「周波数間隔(チャネルスペース)」を設定します。
世界の各地域(日本、アメリカ、ヨーロッパなど)によって異なるFM放送のチャネル割り当て間隔に、内蔵シークエンジンを適合させるためのプロパティです。
デフォルト値は 0x0014(十進数で20、つまり 200 kHz)に設定されており、米国市場のFMチャネル間隔に準拠しています。
世界の各地域(日本、アメリカ、ヨーロッパなど)によって異なるFM放送のチャネル割り当て間隔に、内蔵シークエンジンを適合させるためのプロパティです。
デフォルト値は 0x0014(十進数で20、つまり 200 kHz)に設定されており、米国市場のFMチャネル間隔に準拠しています。
2.2.1 SKSPACE (FM Seek Frequency Spacing)
目的と概要:
自動選局時の周波数ステップ間隔を以下の3つのインデックス値から選択して指定します。
1 (0x01) : 100 kHz ステップ(日本・ヨーロッパなどの標準)
2 (0x02) : 200 kHz ステップ(アメリカなどの標準、デフォルト)
0 (0x00) : 50 kHz ステップ(一部の欧州・特殊環境用)
AN332に明記されない目的と解説:
1 (0x01) : 100 kHz ステップ(日本・ヨーロッパなどの標準)
2 (0x02) : 200 kHz ステップ(アメリカなどの標準、デフォルト)
0 (0x00) : 50 kHz ステップ(一部の欧州・特殊環境用)
日本国内運用における「シーク空振り」の完全な回避:
AN332プログラミングガイドのデフォルト(200kHz)のまま日本国内(100kHzステップ)でシークをかけると、偶数チャネル(例: 80.0MHz)は拾えても、
奇数チャネル(例: 80.1MHzや81.3MHzなど)に配置された放送局をシークエンジンが物理的に飛び越えてしまい、永久に受信できない状態になります。
本プロパティを明確に 1 (100kHz) に書き換えるステップは、日本向けFMレシーバーを構築する上で「ファースト・プライオリティ」となる絶対必須の処理です。
Eスポ受信時における「隣接チャネル混信」の切り分け性能向上:
本プロパティを明確に 1 (100kHz) に書き換えるステップは、日本向けFMレシーバーを構築する上で「ファースト・プライオリティ」となる絶対必須の処理です。
50kHzステップ(0)への動的切り替えは、Eスポ発生時に特に威力を発揮します。海外からの強力なスポラディックE層による電波は、
国内のチャネルプラン(100kHz刻み)の「隙間」にあたる周波数(例: 87.55MHzや87.65MHzなど)で飛び込んでくるケースがあります。
あえて50kHzステップに設定しておくことで、これら国内規格外の微弱な海外局も内蔵シークで正確にロックオンし、隣り合う強力な国内局の混信(カブリ)から完全に分離して受信するための技術的布石となります。
あえて50kHzステップに設定しておくことで、これら国内規格外の微弱な海外局も内蔵シークで正確にロックオンし、隣り合う強力な国内局の混信(カブリ)から完全に分離して受信するための技術的布石となります。
3 応答パラメータ
STATUS (Status Byte)
RESP1 (Response Byte 1 / High Byte)
RESP2 (Response Byte 2 / Low Byte)
>
[目的と概要]デバイスの現在の全体ステータスを返します。
最上位ビットの CTS (Clear to Send) は、デバイスが次のコマンドを受け付けられる状態(1)か、処理中(0)かを示します。
ERR ビット(Bit 6)が 1 の場合は、直前のコマンドやパラメータに不正があったことをホストに伝えます。
最上位ビットの CTS (Clear to Send) は、デバイスが次のコマンドを受け付けられる状態(1)か、処理中(0)かを示します。
ERR ビット(Bit 6)が 1 の場合は、直前のコマンドやパラメータに不正があったことをホストに伝えます。
RESP1 (Response Byte 1 / High Byte)
[目的と概要]GET_PROPERTY 実行時にのみ意味を持ち、設定されている16ビットのプロパティ値のうち上位8ビット(MSB)を返します。
FM_RSQ_RSSI_HI_THRESHOLD の有効範囲は 0〜127(7ビット)であるため、このバイトは常に 0x00 となります。
FM_RSQ_RSSI_HI_THRESHOLD の有効範囲は 0〜127(7ビット)であるため、このバイトは常に 0x00 となります。
RESP2 (Response Byte 2 / Low Byte)
[目的と概要]GET_PROPERTY 実行時にのみ意味を持ち、設定されているプロパティ値の下位8ビット(LSB)を返します。
ここに現在設定されている RSSIH の値(0x00〜0x7F)が格納されて返ってきます。
ここに現在設定されている RSSIH の値(0x00〜0x7F)が格納されて返ってきます。
4 その他(Google AI (Gemini) の見解)
4.1 コマンドの重要ステップと注意事項
Powerupモードでの実行必須:
手動選局コマンドとの連動性の誤解に注意:
入力値の直接指定(Hzではない):
必ず POWER_UP (0x01) コマンドを発行し、デバイスが完全にFM受信モード(CTS=1)になった後に設定を行ってください。
手動選局コマンドとの連動性の誤解に注意:
本プロパティはあくまで「内蔵の自動シーク(FM_SEEK_START)時」のステップ幅を規定するものです。
ホストマイコン側から直接周波数を指定してチューニングする FM_TUNE_FREQ (0x20) コマンドを使用する場合は、本プロパティの設定値に関わらず、常に10kHz刻みの任意の周波数をピンポイントで指定可能です。
ホストマイコン側から直接周波数を指定してチューニングする FM_TUNE_FREQ (0x20) コマンドを使用する場合は、本プロパティの設定値に関わらず、常に10kHz刻みの任意の周波数をピンポイントで指定可能です。
入力値の直接指定(Hzではない):
100や50という物理的な数値を書き込むのではなく、0, 1, 2 という「インデックス番号」を正確に書き込む必要があります。
4.2 もう少し踏み込んだ応用展開
「高速ざっくりスキャン」と「精密DX探索」の2段階シークモード:
固定受信機において、普段の選局時は 1 (100kHz) に設定して国内局をサクサクと快適に巡回させます。
一方で、Eスポ観測時や夜間の超遠距離受信モード(DXモード)が有効化された際は、プログラム側で本プロパティを 0 (50kHz) に引き下げ、内蔵シークの歩幅を極限まで細かくします。
これにより、国内の正規局の間座に滑り込んでいる未知の海外FM波や、隣接チャンネルに歪んで漏れてきている微弱な混信成分までをも自動で検出・ホールドさせる、 マニア好みの「超精密微調シークアルゴリズム」がホスト側の単純なプロパティ操作だけで実現可能になります。
一方で、Eスポ観測時や夜間の超遠距離受信モード(DXモード)が有効化された際は、プログラム側で本プロパティを 0 (50kHz) に引き下げ、内蔵シークの歩幅を極限まで細かくします。
これにより、国内の正規局の間座に滑り込んでいる未知の海外FM波や、隣接チャンネルに歪んで漏れてきている微弱な混信成分までをも自動で検出・ホールドさせる、 マニア好みの「超精密微調シークアルゴリズム」がホスト側の単純なプロパティ操作だけで実現可能になります。
4.3 デバッグ時のチェックリスト
日本国内の放送局をシークする際、値がデフォルトの 2 (200kHz) のままになっていないか?(必ず 1 (100kHz) に書き換えているか確認してください)
シークを実行した際、たとえば 80.0 MHz からスタートして 80.1 MHz, 80.2 MHz と、意図した通りのステップ幅で周波数が遷移しているか?(FM_TUNE_STATUS コマンドで現在周り続けている周波数をポーリングすることで確認できます)
SET_PROPERTY 発行直後に STATUS の CTS ビットをポーリングし、内部レジスタへの反映を100%保証してからシークを開始しているか?
シークを実行した際、たとえば 80.0 MHz からスタートして 80.1 MHz, 80.2 MHz と、意図した通りのステップ幅で周波数が遷移しているか?(FM_TUNE_STATUS コマンドで現在周り続けている周波数をポーリングすることで確認できます)
SET_PROPERTY 発行直後に STATUS の CTS ビットをポーリングし、内部レジスタへの反映を100%保証してからシークを開始しているか?
4.4 まとめ
FM_SEEK_FREQ_SPACING(0x1402)は、Si4735の自動シークエンジンに対し、「各国の電波法(チャネルプラン)」という地理的ルールを叩き込むための必須プロパティです。
固定設置型の受信機において、日本国内運用のための「100kHz(1)」指定を確実に行うことはもちろん、遠距離受信やEスポ追従のコンディションに応じて「50kHz(0)」への動的拡張を使い分けることで、 チップ単体では成し得ない「海外局の隙間受信」に完全対応した、極めてディープな高級モニターレシーバーへとシステムを昇華させることができます。
固定設置型の受信機において、日本国内運用のための「100kHz(1)」指定を確実に行うことはもちろん、遠距離受信やEスポ追従のコンディションに応じて「50kHz(0)」への動的拡張を使い分けることで、 チップ単体では成し得ない「海外局の隙間受信」に完全対応した、極めてディープな高級モニターレシーバーへとシステムを昇華させることができます。
