Hobby Lab 趣味のモノ作り実験のサイトです。
部品 オペアンプ_関係 Si4735 マニュアル 0x27
1 0x23. FM_RSQ_STATUS 概要
2 コマンドパラメータ
2.1 パラメータリスト
2.2 パラメータ
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 READ_RF-AGCDIS
3.2.7 READ_LNA_GAIN_INDEX
4 その他
4.1 Google AI (Gemini) の見解
4.1.1 AGCのデバッグ
4.1.2 アッテネーターのUI実装
4.2 疑問にお答え
4.2.1 相互変調,混変調に強度増

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 コマンド 0x27. FM_AGC_STATUS 概要

このコマンドは、現在のFMフロントエンドにおける自動ゲイン制御(AGC)がどのような状態で動作しているかを照会(クエリ)するためのものです。

デバイスのAGC設定を返します。
このコマンドは、AGCが有効か無効か、およびLNAゲインインデックスを返します。
このコマンドは、電源投入モード時のみ送信可能です。

対応環境:全環境
コマンド引数:なし
応答バイト数:2




2 コマンドパラメータ

2.1 パラメータリスト

BitD7D6D5D4D3D2D1D0
CMD00100111

2.2 パラメータ

なし




3 応答パラメータ

3.1 パラメータリスト

BitD7D6D5D4D3D2D1D0
STATUSCTSERRXXRSQINTRDSINTXSTCINT
RESP1XXXXXXXREAD_RF-AGCDIS
RESP2XXX

RESPBitNameFunction
15READ_RF-AGCDISこのビットは、RF AGCが無効になっているかどうかを示します。
0 = RF AGCが有効
1 = RF AGCが無効
15READ_LNA_GAIN_INDEX[4:0]これらのビットはLNAゲインインデックスの値を返します。
0 = 最小減衰(最大ゲイン)
1~25 = 中間減衰
26 = 最大減衰(最小ゲイン)
注:最大インデックスは変更される場合があります。

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 READ_RF-AGCDIS(Read RF AGC Disable State)

目的:
現在、高周波(RF)ステージの自動ゲイン制御(AGC)が「有効」か「手動で無効(固定)」にされているかの現在の設定状態を読み取ること。
解説:
前述の 0x28 (FM_AGC_OVERRIDE) コマンド等によって設定された、AGCのオン/オフ状態が反映されます。
0 の場合:RF AGCは有効(自動調整中)です。チップが電波強度に合わせて自動的に感度を調整しています。
1 の場合:RF AGCは無効(手動固定中)です。自動調整は機能しておらず、アンプのゲインは固定されています。

3.2.7 READ_LNA_GAIN_INDEX[4:0](Read Low Noise Amplifier Gain Index)

目的:
現在、内蔵の低雑音アンプ(LNA)に適用されている具体的なゲインインデックス(アッテネータの減衰ステップ)を読み取ること。
解説:
現在実際にSi4735のフロントエンドがどれだけの増幅(または減衰)を行っているかを 0〜26 の範囲の数値で返します。
0:最小減衰(=最大ゲイン)。電波を最大限に増幅している状態です。
1 〜 25:中間のゲイン状態。数値が大きくなるほどアンプの増幅率が下がり、電波を減衰させています。
26:最大減衰(=最小ゲイン)。 最もアンプの増幅を抑えている状態です。
重要な仕様: READ_RFAGC_DIS が 0(自動調整)であっても 1(手動固定)であっても、「今まさにその瞬間、チップが実際に適用している生のアンプ状態」がこのインデックス値からリアルタイムに取得できます。




4 その他

4.1 Google AI (Gemini) の見解

0x27 コマンドの応答は、Si4735の内部でAGCが作動しているか(READ_RFAGC_DIS)、そして今現在アンプがどの強さで電波を増幅・減衰しているか(READ_LNA_GAIN_INDEX)を丸裸にするための「ステータス確認用」のパラメータです。
手動での強制制御(0x28)をかける前に、まず「現在の状態を知る」ため、あるいは自動調整が今どう動いているかを追跡するために非常に強力なコマンドとなります。

4.1.1 AGCの「自動調整の挙動」をブラックボックス化させないデバッグ

通常、自動選局(Seek)や受信中のノイズに悩まされているとき、電波強度(RSSI)だけを見ても「チップが内部でアンプを絞っているから数値が低いのか」「そもそも本当に電波が弱いのか」の区別がつきません。
0x23 (FM_RSQ_STATUS) から得られる RSSI の値と、この 0x27 コマンドから得られる READ_LNA_GAIN_INDEX をセットで常時監視(シリアル出力等)してください。
1.RSSIが低い + ゲインインデックスが 0(最大増幅) = 本当に電波が届いていない(圏外・弱電界)。
2.RSSIが低い + ゲインインデックスが 26(最大減衰) = 近くに強烈な違法電波や放送局があり、チップが自衛のために感度を自ら殺している(強電界による飽和)。
このように、受信不良の原因がどちらにあるかを完璧に突き止めることができます。

4.1.2 自作の「手動アッテネーター機能」のシームレスなUI実装

高級なポータブルラジオには、近距離の局を聴くための「LOCAL」モードと、遠くの局を聴くための「DX(ディスタント)」モードを切り替えるスイッチ(アッテネーター)がついています。
Si4735でこれを実装する場合、まず
0x27 を叩いて自動調整時の最適な READ_LNA_GAIN_INDEX の値をサンプリングし、それをベースにして
0x28 (FM_AGC_OVERRIDE) で「現在の自動ゲインから少しだけゲインを落として固定する」といった、環境に適応した賢い手動感度調整UI(アッテネーター)をソフトウェア側で動的に計算・実装することが可能になります。

4.2 疑問にお答え(Google AI (Gemini) の見解)

4.2.1 AGCゲインを落として相互変調、混変調に強くなるか

質問
FM_AGC_OVERRIDEでゲインを落とした場合相互変調や混変調に強くなりますか
見解
はい、FM_AGC_OVERRIDE を使って意図的にアンプのゲインを落とした(減衰量を増やした)場合、相互変調(Intermodulation)や混変調(Cross Modulation)に対して劇的に強くなります。
高周波(RF)回路の設計において、非常に有効な歪み対策(飽和対策)となります。その理由とメカニズムを解説します。
1. 原因はフロントエンド(LNAやミキサー)の「飽和」
相互変調や混変調は、近くに強力な送信所があるなどの「強電界環境」において、複数の強い電波がラジオICの内部アンプ(LNA)やミキサー(混合器)に入力されることで発生します。
回路の処理能力を超える強すぎる電波が入ると、アンプが「非線形」という歪んだ動作を起こし、本来存在しないはずの周波数(お化け局)を内部で勝手に作り出してしまいます。

2. 入力電波をアッテネート(減衰)させる効果
FM_AGC_OVERRIDE で LNA_GAIN_INDEX を大きく設定する(ゲインを落とす)ということは、ICの入り口にある可変アッテネーター(減衰器)を絞ることと同義です。
[AN332]これにより、フロントエンド回路に飛び込んでくる強烈な電波の絶対的なパワー(電圧)を引き下げることができます。

3. 歪みの発生量は「入力電力の3乗(または2乗)」で減る
無線工学の法則(3次相互変調歪み:IM3など)において、不要な歪み成分の強さは「入力される電波の強さの3乗」に比例して変化するという特性があります。
つまり、ゲインを落として目的の電波(信号)を 10dB 減衰させると、内部で発生する相互変調歪み(ノイズ)は 30dB も減少することになります。
結果として、ノイズだけが急激に消え去り、目的の放送局がクリアに浮かび上がってきます。

自動AGC(デフォルト)との違いと、手動で落とす意味
Si4735には優秀な自動AGCが備わっているため、通常はICが自動でゲインを落として歪みを回避しようとします。
しかし、以下のケースでは手動(OVERRIDE)でさらにゲインを落とすことで、自動AGCを超える効果を発揮します。
AGCの判定基準をすり抜ける妨害波がある場合自動AGCは「帯域内のトータルパワー」や特定の指標を見てゲインを決めますが、FMの受信帯域(あるいは隣接バンド)の少し外側に極めて強力な電波(アマチュア無線、業務無線、あるいは別の強烈なFM局)がある場合、AGCの自動調整が最適に追いつかず、歪みが発生してしまうことがあります。
あえて手動で安全圏までマージンを取るFM_AGC_OVERRIDE を使って、自動AGCが弾き出したゲイン(0x27コマンドで読める値)よりもさらに数ステップ低いゲイン(大きなインデックス値)に手動で固定してしまえば、電波のフェージング(揺らぎ)によって一瞬入力が跳ね上がったとしても、絶対に回路が飽和しない鉄壁の状態を作ることができます。 [AN332]

注意点:ゲインを落とす「トレードオフ」
相互変調や混変調には圧倒的に強くなりますが、引き換えに「ラジオ全体の感度(NF:雑音指数)」は低下します。
そのため、もし近くにある強力な局(お化け局の元)を回避するためにゲインを落としすぎると、今度は「元々電波が弱かった遠くの放送局」までノイズに埋もれて聞こえなくなってしまいます。

【実装へのアドバイス】実用的なファームウェアを組む際は、一律でゲインを最小にするのではなく、0x23 (FM_RSQ_STATUS) で SNR(信号対雑音比)を監視しながら、 「相互変調によるお化け局が消え、かつ目的の局のSNRが最も高くなる最適なゲインの境界点」を LNA_GAIN_INDEX を動かしながら自動で探るようなアルゴリズムにすると、非常に高性能な受信機(高級カーオーディオ並みの混信除去ロジック)が実現できます。






































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