この解説は、Skyworks (Silicon Labs) Si47XX PROGRAMMING GUIDE AN332 を基に、Google AI (Gemini) の協力を得て作成しています。
1 プロパティ 0x1500. FM_RDS_INT_SOURCE 概要
FM_RDS_INT_SOURCE
RDS関連の割り込みを設定します。
次のコマンドを送信しても安全な状態になると、CTSビット(およびオプションの割り込み)がセットされます。
このプロパティは、パワーアップモードのときにのみ設定または読み出しが可能です。
デフォルト値は0です。
対応デバイス: Si4705/06、Si4731/32/35
デフォルト値: 0x0000
RDS関連の割り込みを設定します。
次のコマンドを送信しても安全な状態になると、CTSビット(およびオプションの割り込み)がセットされます。
このプロパティは、パワーアップモードのときにのみ設定または読み出しが可能です。
デフォルト値は0です。
対応デバイス: Si4705/06、Si4731/32/35
デフォルト値: 0x0000
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 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | RDSNEWBLOCKB | RDSNEWBLOCKA | 0 | RDSSYNCFOUND | RDSSYNCLOST | RDSRECV |
| Bit | Name | Function |
|---|---|---|
| 5 | RDSNEWBLOCKB | RDS New Block B Found(Si4706、Si4705/31/35-D50以降、およびSi4732のみ) このビットが設定されている場合、Block Bのデータが検出または変更された際に割り込みを発生させます。 |
| 4 | RDSNEWBLOCKA | RDS New Block A Found(Si4706、Si4705/31/35-D50以降、およびSi4732のみ) このビットが設定されている場合、Block Aのデータが検出または変更された際に割り込みを発生させます。 |
| 2 | RDSSYNCFOUND | RDS Sync Found(RDS同期確立) このビットが設定されている場合、RDSの同期が確立した際にRDSINTを発生させます。 |
| 1 | RDSSYNCLOST | RDS Sync Lost(RDS同期喪失) このビットが設定されている場合、RDSの同期が失われた際にRDSINTを発生させます。 |
| 0 | RDSRECV | RDS Received(RDS受信) このビットが設定されている場合、RDS FIFO内のエントリ数がFM_RDS_INT_FIFO_COUNT以上になった際にRDSINTを発生させます。 |
2.2 プロパティ
本プロパティは、FM受信時にRDSデータ(番組名やテキスト情報など)の受信に関連する各種割り込みの発生条件(ソース)を個別に有効化(Enable)するためのレジスタです。
ここで有効化した特定のイベントがチップ内部で発生すると、ステータスレジスタの RDSINT フラグが立ち、同時に GPO2/INT ピンを介してホストマイコンへリアルタイムにハードウェア割り込みを出力できます。
デフォルト値は 0x0000(すべてのRDS割り込みが無効)です。
ここで有効化した特定のイベントがチップ内部で発生すると、ステータスレジスタの RDSINT フラグが立ち、同時に GPO2/INT ピンを介してホストマイコンへリアルタイムにハードウェア割り込みを出力できます。
デフォルト値は 0x0000(すべてのRDS割り込みが無効)です。
2.2.1 RDSNEWBLOCKB (RDS New Block B Interrupt Enable)
目的と概要:
RDSデータの「ブロックB」が単独で正しく受信され、エラー訂正(ECC)が完了した瞬間に割り込みをトリガします。
AN332に明記されない目的と解説:
PIコード(局識別)の超超高速デコード: RDSグループ(A, B, C, Dの4ブロック構成)全体の受信完了を待たずとも、多くのグループ形式において「ブロックB」にはプログラムタイプ(PTY)やPIコードの断片、
交通情報フラグ(TP)などの最重要メタデータが集約されています。
本ビットをピンポイントで有効化することで、全ブロックの同期が不安定な弱電界環境下であっても、重要な制御フラグだけを数ミリ秒でも早くホスト側でもぎ取る(先回り処理する)ための超攻撃的な受信ロジックに機能します。
本ビットをピンポイントで有効化することで、全ブロックの同期が不安定な弱電界環境下であっても、重要な制御フラグだけを数ミリ秒でも早くホスト側でもぎ取る(先回り処理する)ための超攻撃的な受信ロジックに機能します。
2.2.2 RDSNEWBLOCKA (RDS New Block A Interrupt Enable)
目的と概要:
RDSデータの「ブロックA」が単独で正しく受信され、エラー訂正が完了した瞬間に割り込みをトリガします。
AN332に明記されない目的と解説:
PIコード(番組識別)の絶対的ホールド:
すべてのRDSグループにおいて、最初の「ブロックA」には必ずその局の固有IDである「PI(Program Identification)コード」が格納されています。
周波数を変更した直後などに、このビットの割り込みだけをトリガとして監視すれば、現在同調した局が「狙い通りの放送局かどうか」を最短のタイムラグで識別・判定するトリガとして応用できます。
周波数を変更した直後などに、このビットの割り込みだけをトリガとして監視すれば、現在同調した局が「狙い通りの放送局かどうか」を最短のタイムラグで識別・判定するトリガとして応用できます。
2.2.3 RDSSYNCFOUND (RDS Sync Found Interrupt Enable)
目的と概要:
RDSのデータストリーム(57kHzサブキャリア)と、チップ内部のRDSデコーダーとの間で、「同期が確立(Sync Found)された瞬間」に割り込みをトリガします。
AN332に明記されない目的と解説:
固定受信における「Eスポ・海外局接近」の自動無人アラート:
固定設置レシーバーにおいて、放送局がないはずの空きチャネルに本ビットを仕込んでおくことで、Eスポ等によってRDS信号を持った海外FM波
(中国のRDBSや欧州RDSなど)のキャリアが一瞬でも飛び込んできて同期が乗った瞬間、ホストをスリープから叩き起こして自動記録やアラートを発報する
「無人Eスポハンター」の超低消費電力なトリガセンサーとして真価を発揮します。
固定設置レシーバーにおいて、放送局がないはずの空きチャネルに本ビットを仕込んでおくことで、Eスポ等によってRDS信号を持った海外FM波
(中国のRDBSや欧州RDSなど)のキャリアが一瞬でも飛び込んできて同期が乗った瞬間、ホストをスリープから叩き起こして自動記録やアラートを発報する
「無人Eスポハンター」の超低消費電力なトリガセンサーとして真価を発揮します。
2.2.4 RDSSYNCLOST (RDS Sync Lost Interrupt Enable)
目的と概要:
受信品質の悪化などにより、保持していたRDSデータストリームの「同期が外れた(Sync Lost)瞬間」に割り込みをトリガします。
AN332に明記されない目的と解説:
UIの「テキスト更新フリーズ」を防止するフェイルセーフ: 電波のフェージングによりRDSデコードが内部でストップした際、ホスト側がそれを知らずに古いテキスト(曲名など)を液晶に表示し続けてしまうのを防ぎます。
本割り込みを検知した瞬間、液晶上のRDSシグナルインジケーターを即座に「消灯」させ、データが最新ではないことをユーザーに誠実に伝えるための動的なUI品質向上に直結します。
本割り込みを検知した瞬間、液晶上のRDSシグナルインジケーターを即座に「消灯」させ、データが最新ではないことをユーザーに誠実に伝えるための動的なUI品質向上に直結します。
2.2.5 RDSRECV (RDS Receive Interrupt Enable)
目的と概要:
4つのブロック(A, B, C, D)がすべて揃った「1つの完全なRDSグループ(計104ビット)」を受信完了するたびに割り込みをトリガします。
AN332に明記されない目的と解説:
ホストマイコンの負荷を極限まで下げる「バースト読み出し」の実現:
通常、RDSテキスト(Radio Text)や番組名(PS)を復調するには、この完全な1グループ単位での処理が基本です。
本ビットだけを有効にしておけば、ホスト側は途中の細かなブロック受信を一切無視し、「データが完全にコンプリートした瞬間」だ けピンポイントで起床して FM_RDS_STATUS (0x24) コマンドからデータを根こそぎ一括回収(バーストリード)できるため、ホストのSPI/I2Cバスの占有時間と消費電力を極限まで削減できます。
通常、RDSテキスト(Radio Text)や番組名(PS)を復調するには、この完全な1グループ単位での処理が基本です。
本ビットだけを有効にしておけば、ホスト側は途中の細かなブロック受信を一切無視し、「データが完全にコンプリートした瞬間」だ けピンポイントで起床して FM_RDS_STATUS (0x24) コマンドからデータを根こそぎ一括回収(バーストリード)できるため、ホストのSPI/I2Cバスの占有時間と消費電力を極限まで削減できます。
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 コマンドの重要ステップと注意事項
親玉となる「GPO割り込み」の同時開放:
激しい割り込み頻度(チャタリング感)への警戒:
本プロパティでどれほど詳細にRDSイベントを有効化しても、システム全体の共通プロパティである 0x0001 (GPO_IEN) の RDSIEN (Bit 2) が 1 にセットされていなければ、
物理ピン(GPO2/INT)からは一切パルスが出力されません。必ずセット運用のコードを記述してください。
激しい割り込み頻度(チャタリング感)への警戒:
特に RDSRECV(1グループ完了)は、FM電波が良好な環境では 約11.4ミリ秒に1回 という非常に高い頻度で割り込みが連続発生します。
ホストマイコンの割り込みサービスルーチン(ISR)内の処理は極限まで軽くし、実際のテキスト解析はメインループ(バックグラウンド)側にキューを渡して逃がす設計にしないと、マイコン側がハングアップ状態に陥ります。
ホストマイコンの割り込みサービスルーチン(ISR)内の処理は極限まで軽くし、実際のテキスト解析はメインループ(バックグラウンド)側にキューを渡して逃がす設計にしないと、マイコン側がハングアップ状態に陥ります。
4.2 もう少し踏み込んだ応用展開
電界強度(RSSI/SNR)と連動する「インテリジェントRDS割り込みフィルター」:
固定受信において、地元の強力な局を受信している安定時は、高位な RDSRECV (Bit 0) だけをON にして、静かにテキストの完成だけを待ち受けます。
一方、Eスポ狙いや超弱電界局の探索時は、グループの完遂が難しくなるため、ホスト側から動的に本プロパティを書き換えて RDSRECV をOFFにし、代わりに RDSSYNCFOUND (Bit 3) や RDSNEWBLOCKA (Bit 4) だけを鋭利に研ぎ澄まします。
これにより、「中身のテキストはノイズで壊れていても、海外局のPIコードの頭文字だけでもハードウェアの力でもぎ取る」という、環境適応型の動的割り込み戦略への応用展開が可能です。
一方、Eスポ狙いや超弱電界局の探索時は、グループの完遂が難しくなるため、ホスト側から動的に本プロパティを書き換えて RDSRECV をOFFにし、代わりに RDSSYNCFOUND (Bit 3) や RDSNEWBLOCKA (Bit 4) だけを鋭利に研ぎ澄まします。
これにより、「中身のテキストはノイズで壊れていても、海外局のPIコードの頭文字だけでもハードウェアの力でもぎ取る」という、環境適応型の動的割り込み戦略への応用展開が可能です。
4.3 デバッグ時のチェックリスト
0x0001 (GPO_IEN) の RDSIEN (Bit 2) は適切に有効化されているか?
0x1502 (FM_RDS_CONFIG) の RDSEN (Bit 0) が 1 になっており、そもそもチップ内のRDSデコーダー自体が起動しているか?(ここが落とし穴になりやすいです)
割り込み発生後、ホストマイコン側から FM_RDS_STATUS (0x24) コマンドを発行してステータスを読み出し、デバイス内部の割り込みラッチを正常にクリア(自動クリア)させているか? (読み出さないと、ピンがLowに張り付いたまま次の割り込みが出なくなります)
0x1502 (FM_RDS_CONFIG) の RDSEN (Bit 0) が 1 になっており、そもそもチップ内のRDSデコーダー自体が起動しているか?(ここが落とし穴になりやすいです)
割り込み発生後、ホストマイコン側から FM_RDS_STATUS (0x24) コマンドを発行してステータスを読み出し、デバイス内部の割り込みラッチを正常にクリア(自動クリア)させているか? (読み出さないと、ピンがLowに張り付いたまま次の割り込みが出なくなります)
4.4 まとめ
FM_RDS_INT_SOURCE(0x1500)は、Si4735の強力な内蔵RDSデコーダーと、ホストマイコンの処理能力を無駄なくリアルタイム同調させるための知的な指揮官レジスタです。
固定設置型の受信機において、本プロパティの各ビットの特性を深く理解し、受信コンディションに応じて「グループ単位(通常時)」と「ブロック・同期単位(弱電界・Eスポ狙い時)」の切り替えをソフトウェアで統制することで、 マイコンに一切の無駄なポーリング負荷をかけることなく、文字情報の解析から異常伝搬の瞬間検知までを完全自動でこなす、極めてスマートな近代型DSPレシーバーの基盤が確立されます。
固定設置型の受信機において、本プロパティの各ビットの特性を深く理解し、受信コンディションに応じて「グループ単位(通常時)」と「ブロック・同期単位(弱電界・Eスポ狙い時)」の切り替えをソフトウェアで統制することで、 マイコンに一切の無駄なポーリング負荷をかけることなく、文字情報の解析から異常伝搬の瞬間検知までを完全自動でこなす、極めてスマートな近代型DSPレシーバーの基盤が確立されます。
