Hobby Lab 趣味のモノ作り実験のサイトです。
部品 オペアンプ_関係 Si4735 マニュアル 0x23
1 0x23. FM_RSQ_STATUS 概要
2 コマンドパラメータ
2.1 パラメータリスト
2.2 パラメータ
2.2.1 INTACK
3 応答パラメータ
3.1 パラメータリスト
3.2 パラメータ
3.2.1 CTS
3.2.2 ERR
3.2.3 RSQINT
3.2.4 RDSINT
3.2.5 STCINT
3.2.6 BLENDINT
3.2.7 MULTHINT
3.2.8 MULTLINT
3.2.9 SNRHINT
3.2.10 SNRLINT
3.2.11 RSSIHINT
3.2.12 RSSIILINT
3.2.13 SMUTE
3.2.14 AFCRL
3.2.15 VALID
3.2.16 PILOT
3.2.17 STBLEND
3.2.18 RSSI
3.2.19 SNR
3.2.20 MULT
3.2.21 FREQOFF
4 その他
4.1 Google AI (Gemini) の見解
4.1.1 自動選局の応用
4.1.2 INT の取り扱いバグ防止
4.1.3 動的音質制御

PrO:Si4735関係  Si4735について
 Si4735ラジオを作って見よう1
 v コマンド & パラメータ辞書 v
 0x01. POWER_UP
 0x10. GET_REV
 0x11. POWER_DOWN
 0x12. SET_PROPERTY
 0x13. GET_PROPERTY
 0x14. GET_INT_STATUS
 0x20. FM_TUNE_FREQ
 0x21. FM_SEEK_START
 0x22. FM_TUNE_STATUS
 0x23. FM_RSQ_STATUS
 0x24. FM_RDS_STATUS
 0x27. FM_AGC_STATUS
 0x28. FM_AGC_OVERRIDE
 0x40. AM_TUNE_FREQ
 0x41. AM_SEEK_START
 0x42. AM_TUNE_STATUS
 0x43. AM_RSQ_STATUS
 0x47. AM_AGC_STATUS
 0x48. AM_AGC_OVERRIDE
 0x80. GPIO_CTL
 0x81. GPIO_SET

Pr:OPAMP オペアンプ関係
PrO:送受信機  Si4735
PrO:オペアンプ  LM324
 LM358
Pr:Prプロセッサ関係
PrP:プロセッサ
動作比較
 STM32F動作比較
 CH32V203&STM32F 動作比較
 arduino動作比較
raspberrypi関係
 RaspberryPiハード
CH32V関係
 -CH32V開始
 -203K8T6(32Pin)開始
 -203C8T6(48P)開始
 -003J4M6(8Pin)開始
 -003F4P6(20Pin)開始
 -Moun River StudioⅡ
 プログラミング!
  203_GPIO関係
  203_TIME関係
  203_TIME Encoder
  203_I2C関係
  203_1-Wire関係
  003_DS18B20テスター
  USART(UART)関係
  DS18B20をModBus制御
 -マニュアル
 203データシート
 203取説
  MBA メモリとバス方式
  PWR 電力制御
  RCC リセット・拡張・クロック
  BKP バックアップレジスタ
  CRC 巡回冗長検査
  RTC リアルタイムクロック
  GPIO GPIOと代替機能
  DMA ダイレクトメモリアクセス制御
  ADTM 高度な制御タイマー
  GPTM 汎用タイマー
  BCTM 基本タイマー
  USART 同期非同期通信
arduino関係
 ESP12関係
 (a)ESP-8266D1mini注意
PrP:その他  RS485ドライバー
 CP2102 BRIDGE
 WCH-LinkEエミュレーター
Pr:Wire 電線関係
Pr:Resistance 抵抗
Pr:Capacitor コンデンサ
Pr:Coil コイル
Pr:PassiveElmt 受動素子
Pr:Diode ダイオード関係
Pr:Tr トランジスタ関係
2SC1815
 リレードライバー設計
 アンプ設計
 発振器
TLP152
 TLP152テスト
TLP2361
 TLP2361テスト
TLP5754
 TLP5754テスト
Pr:Source 電源関係  ツェナーダイオード
 TL431
 LM317
PrS:Downモジュール
 EGS002_IR2110S
 SKU011012
 ACDC02
 XH_M299
 LM2596
 Mini360_MP23070N
 DROK
 WH140
PrS:UPモジュール
 MT3608
PrS:充電モジュール
 TP4056
Pr:Sensor_AD_時計等
PrS:電圧、電流
ADS1115 16bit4CH I2C A/D
 Hardware
 RaspberryPi_コマンド接続
 RaspberryPi_Python
 Arduino
 CH23V203 MounRiverStudioⅡ
INA226 I2C 直流電圧電流
 Hardware
 Arduino
 RaspberryPi_Python
WCS 電流ホール素子
 Hardware
PrS:温度、気圧、湿度、照度
BNE280 I2C 気圧,湿度,気温
 Hardware
 Arduino
 RaspberryPi_Python
BH1750 I2C 照度
 Hardware
 Arduino
 RaspberryPi_Python
DS18B20 1-Wire 温度計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:時間、日時
DS3231 I2C 時計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:表示器
MAR3953 320X480 3.95"
 概要と線や点を描く
 フォントを描く
SSD1306 I2C 0.96"OLED
 Hardware
 Arduino
 RaspberryPi_Python
Pr:Old Processor他
Ot:Others その他
この辞書は、Skyworks (Silicon Labs) Si47XX PROGRAMMING GUIDE AN332 を基に、Google AI (Gemini) の協力を得て作成しています。

1 コマンド 0x23. FM_RSQ_STATUS 概要

受信信号品質に関するステータス情報を返します。
このコマンドは、RSSI、SNR、周波数オフセット、およびステレオブレンド率を返します。
また、有効チャネル(VALID)、ソフトミュート作動(SMUTE)、およびAFCレールステータス(AFCRL)も示します。
このコマンドは、受信信号がRSSIHINTで報告されるRSSI高しきい値を超えているか、RSSILINTで報告されるRSSI低しきい値を下回っているかを確認するために使用できます。
また、信号がSNRHINTで報告されるSNR高しきい値を超えているか、SNRLINTで報告されるSNR低しきい値を下回っているかを確認するためにも使用できます。
Si4706の場合、検出されたマルチパスがMULTHINTで報告されるマルチパス高しきい値を超えているか、MULTLINTで報告されるマルチパス低しきい値を下回っているかを確認するために使用できます。
PILOTインジケータが設定されている場合、ブレンドがBLENDINTで示されるしきい値を超えたかどうかも確認できます。
このコマンドは、ARG1のINTACKビットがセットされている場合、RSQINT、BLENDINT、NRHINT、SNRLINT、RSSIHINT、RSSILINT、MULTHINT、およびULTLINT割り込みビットをクリアします。
次のコマンドを安全に送信できる状態になると、CTSビット(およびオプションの割り込み)がセットされます。
このコマンドは、電源投入モード時のみ送信可能です。

対応機種:全機種
コマンド引数:1個
応答バイト数:7バイト




2 コマンドパラメータ

2.1 パラメータリスト

BitD7D6D5D4D3D2D1D0
CMD00100011
ARG10000000INTACK

ARGBitNameFunction
10INTACK割り込み応答。
0 = 割り込みステータスを保持します。
1 = RSQINT、BLENDINT、SNRHINT、SNRLINT、RSSIHINT、RSSILINT、MULTHINT、MULTLINT をクリアします。

2.2 パラメータ

2.2.1 INTACK (Interrupt Acknowledge)

目的
RSQに関連する割り込みステータス(フラグ)をクリア(承認)すること。
解説
このビットを 1 に設定して 0x23 コマンドを送信すると、後述する応答パラメータ内の各種割り込みヒントフラグ(BLENINT, MULTHINT などの ~INT と付くもの)がすべて 0 にリセットされます。
マイコン側で割り込みを検知した後にフラグをクリアし、次の新たな割り込みを発生させるために使用します。
0 のまま呼び出した場合は、フラグをクリアせずに現在の状態だけを読み取ります。





3 応答パラメータ

3.1 パラメータリスト

BitD7D6D5D4D3D2D1D0
STATUSCTSERRXXRSQINTRDSINTXSTCINT
RESP1BLENDINTXMULTHINTMULTLINTSNRHINTSNRLINTRSSIHINTRSSIILINT
RESP2XXXXSMUTEXAFCRLVALID
RESP3PILOTSTBLEND
RESP4RSSI
RESP5SNR
RESP6MULT
RESP7FREQOFF

RESPBitNameFunction
17BLENDINTブレンド検出割り込み
0 = ブレンド値がブレンドしきい値設定値の範囲内です。
1 = ブレンド値がブレンドしきい値設定値を超えるか下回ります。
15MULTHINTマルチパス高検出(Si4706-D50、Si4704/05/30/31/34/35-D50以降、およびSi4732のみ)
0 = 検出されたマルチパス値がマルチパス高しきい値を超えていません。
1 = 検出されたマルチパス値がマルチパス高しきい値を超えています。
14MULTLINTマルチパス低検出(Si4706-D50、Si4704/05/30/31/34/35-D50以降、およびSi4732のみ)
0 = 検出されたマルチパス値がマルチパス低しきい値を下回っていません。
1 = 検出されたマルチパス値がマルチパス低しきい値を下回りました。
13SNRHINTSNR高検出
0 = 受信SNRがSNR高しきい値を超えていません。
1 = 受信SNRがSNR高しきい値を超えました。
12SNRLINTSNR低検出
0 = 受信SNRがSNR低しきい値を下回っていません。
1 = 受信SNRがSNR低しきい値を下回りました。
11RSSIHINTRSSI高検出
0 = RSSIがRSSI高しきい値を超えていません。
1 = RSSIがRSSI高しきい値を超えました。
10RSSIILINTRSSI低検出
0 = RSSIがRSSI低しきい値を下回っていません。
1 = RSSIがRSSI低しきい値を下回りました。
23SMUTEソフトミュートインジケータ
ソフトミュートが有効になっていることを示します。
21AFCRLAFCレールインジケーター。
AFCレールが有効な場合に設定されます。
20VALID有効チャンネル。
チャンネルが現在有効であり、シーク中に検出された場合に設定されます。
37PILOTパイロットインジケーター。
ステレオパイロットの存在を示します。
36:0STBLENDステレオブレンドインジケーター。
ステレオブレンドの度合いをパーセントで表示します(100=完全ステレオ、0=完全モノラル)。
47:0RSSI受信信号強度インジケータ
現在の受信信号強度(0~127 dBμV)を表示します。
57:0SNRSNR
現在のSNR値(0~127 dB)を表示します。
67:0MULTマルチパス(Si4706-D50、Si4704/05/30/31/34/35-D50以降、およびSi4732のみ)。
現在のマルチパスメトリックが含まれています。(0 = マルチパスなし、100 = 完全なマルチパス)
77:0FREQOFF周波数オフセット。
符号付き周波数オフセット(kHz)。

3.2 パラメータ

応答の先頭パラメータ
応答(STATUSバイト)に含まれる各ビット(CTS, ERR, RSQINT, RDSINT, STCINT)は、「デバイスの現在の処理状態」や「各種割り込み(通知)の発生」をホストMCUに知らせる目的で設計されています。 STATUSバイトの信頼性:Si4735の仕様上、いくつかのコマンド送信時に返ってくるSTATUSバイトでは、CTS以外の割り込みビット(RSQINT, RDSINT, STCINTなど)がリアルタイムに更新されない場合があります。
正しい確認方法:正確な割り込みステータスを確認したい場合は、STATUSバイトを直接過信するのではなく、専用の割り込み確認コマンド(例:GET_INT_STATUS (0x14) コマンドなど)を明示的に発行して最新の状態を読み出すのが一般的なセオリーとなっています。

3.2.1 CTS(Clear to Send)

目的:
デバイスが次のコマンドを受け付けられる状態かどうかを判定する。
解説:
最も重要なビットです。Si4735が前のコマンドの処理を完了し、「次のコマンドを送信しても安全(送信可)」になると1にセットされます。
0の間はデバイスが内部処理中(ビジー)であるため、ホストMCUは次のコマンド送信を待機する必要があります。

3.2.2 ERR(Error)

目的:
直前に送信したコマンドが正常に実行されたか、エラーが発生したかを判別する。
解説:
コマンドの引数(引数の値が範囲外など)や、無効なコマンドが送られた場合に1にセットされます。
ホスト側のプログラムで例外処理や再試行(リトライ)を行うために使用します。

3.2.3 RSQINT(Received Signal Quality Interrupt)

目的:
受信信号の品質(電界強度RSSIやSNRなど)が、あらかじめ設定した閾値を超えた(または下回った)ことを通知する。
解説:
「受信品質の変化」をトリガーに処理を行いたい場合に使用します。
例えば、現在のチャンネルの電波が急激に弱くなったことを検知して自動で再スキャンをかける、といった機能を実装する目的で利用されます。

3.2.4 RDSINT(Radio Data System Interrupt)

目的:
RDS(文字情報などのデータ放送)のデータバッファ(FIFO)に新しいデータが格納されたことを通知する。
解説:
FM放送などで送られてくる「RDS/RBDSデータ(番組名や楽曲情報など)」を受信した際に1になります。
ホストMCUはこのビットを見てからデータを読み出す(FM_RDS_STATUS コマンドを発行する)ことで、無駄な空読みを防ぎ効率的にテキストデータを取得できます。

3.2.5 STCINT(Seek/Tune Complete Interrupt)

目的:
選局(Tune)操作または自動選局(Seek)操作が完了したことを通知する。
解説:
周波数を変更するコマンド(FM_TUNE_FREQ や FM_SEEK_START など)は内部処理に時間がかかります。
デバイスが「目的の周波数への同調、または次の放送局の検知を完了した」時点でこのビットが1になります。
選局完了のタイミングを正確に把握する目的で使用します。

3.2.6 BLENDINT(Stereo Blend Interrupt)

目的:
ステレオブレンド(左右分離度)が設定値を跨いだことを通知する。
解説:
ステレオからモノラル、あるいはその逆への切り替え限界値を越えたときに発生します。

3.2.7 MULTHINT(Multipath High Interrupt)

目的:
マルチパス(多重波伝播による歪み)が上限しきい値を超えたことを通知する。
解説:
ビル陰などで電波が反射し、受信品質が悪化したことを検知できます。

3.2.8 MULTLINT(Multipath Low Interrupt)

目的:
マルチパスが下限しきい値を下回った(改善した)ことを通知する。
解説:
受信環境が安定したことを検知するのに役立ちます。

3.2.9 SNRHINT(SNR High Interrupt)

目的:
信号対雑音比(SNR)が設定した上限値を超えた(良好になった)ことを通知する。
解説:
ノイズが減り、クリアな音声になったタイミングを捕捉できます。

3.2.10 SNRLINT(SNR Low Interrupt)

目的:
SNRが設定した下限値を下回った(悪化した)ことを通知する。
解説:
雑音が増えて音声が聞き取りにくくなったことを検知します。

3.2.11 RSSIHINT(RSSI High Interrupt)

目的:
受信信号強度(RSSI)が設定した上限値を超えたことを通知する。
解説:
十分に強い電波が受信できたことを検知するシーク動作などで活用されます。

3.2.12 RSSIILINT(RSSI Low Interrupt)

目的:
RSSIが設定した下限値を下回ったことを通知する。
解説:
電波が圏外に近いレベルまで弱まったことをリアルタイムに検知できます。

3.2.13 SMUTE(Soft Mute Engaged)

目的:
ソフトミュート(自動ノイズ減衰機能)が作動中であるかを示す。
解説:
1 の場合、弱電界ノイズを抑えるためにチップが自動的に音声出力を減衰させている状態を意味します。

3.2.14 AFCRL(AFC Rail)

目的:
自動周波数制御(AFC)が限界(飽和状態)に達しているかを示す。
解説:
1 の場合、現在同調している周波数が本来の放送波からズレすぎており、AFCの補正可能範囲(レール)の端に達してしまっていることを示します。

3.2.15 VALID(Valid Channel)

目的:
現在の周波数に信頼できる放送局が存在するかを判定する
解説:
チップ内部の基準(RSSI、SNRなど)をクリアした「受信可能な局」であれば 1 になります。自動選局(Seek)時の判断基準になります。

3.2.16 PILOT(Stereo Pilot Tone Detected)

目的:
FMステレオ放送のパイロット信号(19kHz)を検出しているかを示す。
解説:
1 であれば、受信中の電波にステレオ成分が含まれていることを意味します。

3.2.17 STBLEND(Stereo Blend Percentage)

目的:
現在のステレオ分離度(ブレンド比率)をパーセンテージで表す。
解説:
100% は完全なステレオ(左右分離)、0% は完全なモノラル状態(ノイズ軽減のためチップが自動結合した状態)を示します。

3.2.18 RSSI(Received Signal Strength Indicator)

目的:
受信電波の強度を表す。
解説:
dBμ V 単位の絶対値で返されます。数値が大きいほど電波が強いことを意味します。

3.2.19 SNR(Signal-to-Noise Ratio)

目的:
信号とノイズの比率を表す。
解説:
dB 単位で返されます。数値が大きいほど雑音が少なく、クリアな音質であることを示します。

3.2.20 MULT(Multipath Metric)

目的:
マルチパス干渉(歪み)の度合いを数値化して表す。
解説:
0 (干渉なし) 〜 100 (最悪) の範囲で示され、FM特有の反射波によるノイズ度合いを測定します。

3.2.21 FREQOFF(Frequency Offset)

目的:
放送局の中心周波数からの「実際のズレ」を表す。
解説:
符号付きの整数(kHz 単位)で返され、チューニングがどれだけ正確に合っているかを把握できます。




4 その他

4.1 Google AI (Gemini) の見解

0x23 コマンドは、FMの電波強度(RSSI)や明瞭度(SNR)、ズレ(FREQOFF)などの物理的な測定値を取得すると同時に、それらの急激な変化をマイコンに知らせる割り込みフラグを管理するための、FM受信品質制御の核心となるコマンドです。
Si4735を用いたファームウェア開発で、電波状況に応じたインジケータの表示や自動選局のチューニングロジックを実装したい場合は、このコマンドの仕様を網羅的に把握することが不可欠となります。 Si4735の 0x23 (FM_RSQ_STATUS) コマンドを組み込みシステムで効率的に扱うにあたり、Geminiとしての設計上の推奨アプローチを以下にまとめます。

4.1.1 シーク(自動選局)アルゴリズムへの応用

VALID ビットだけに頼るのではなく、RSSI と SNR の値をマイコン側で個別に評価することをおすすめします。
VALID は内部プロパティ(FM_VALID_RSSI_THRESHOLD など)の設定に依存するため、自作のラジオUIを作る際は 0x23 を叩いて生の RSSI と SNR を読み出し、 「RSSIが20以上、かつSNRが10以上を合格とする」といった独自のフィルタリングを設けた方が、日本の複雑な電波環境下で誤同調を劇的に減らすことができます。

4.1.2 「~INT」フラグと INTACK の取り扱いバグ防止

ホストマイコン側でSi4735のハードウェア割り込みピン(IRQ)を監視する場合、0x23 コマンドを送る際に INTACK = 1 に設定しないと、IC内部の割り込み原因がクリアされず、「一度ノイズを検知したあと、二度と割り込みが発生しなくなる」 という実装バグに陥りやすいです。ステータスを監視し続けたい場合は必ず INTACK を有効にしてください。

4.1.3 カーステレオ並みの動的音質制御

STBLEND(ステレオブレンド度)や SMUTE(ソフトミュート状態)をリアルタイムに読み出すことで、ディスプレイ上に「ステレオ/モノラル」のインジケータを滑らかに変動表示させたり、電波が弱まったときにディスプレイのバックライト輝度を制御するなど、高級受信機のようなユーザー体験(UX)を構築するためのトリガーとして非常に有益なコマンドです。






































更新日 2026/06/21 16:56  管理者 平林 剛Hirabayashi Takeshi