Hobby Lab 趣味のモノ作り実験のサイトです。
部品 オペアンプ_関係 Si4735 マニュアル 0x28
1 0x28. FM_AGC_OVERRIDE 概要
2 コマンドパラメータ
2.1 パラメータリスト
2.2 パラメータ
2.2.1 RFAGCDIS
2.2.2 LNA_GAIN_INDEX
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
4 その他
4.1 Google AI (Gemini) の見解
4.1.1 AGCの設定
4.1.2 アッテネーターの実装

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

このコマンドは、0x27で解説した相互変調や混変調の対策(アッテネーターの強制適用)などを行うために、FMフロントエンドの自動ゲイン制御(AGC)の挙動をホストマイコン側から完全に上書き(オーバーライド)するための最重要コマンドです [AN332]。

AGC設定を上書きし、AGCを無効にして、LNAのゲインを0(最小減衰)から26(最大減衰)の範囲で固定します。
このコマンドは、電源投入モード時のみ送信可能です。

対応機種:全機種
コマンド引数:2個
応答バイト:なし




2 コマンドパラメータ

2.1 パラメータリスト

BitD7D6D5D4D3D2D1D0
CMD00101000
ARG1XXXXXXXRFAGCDIS
ARG2XXXLNA_GAIN_INDEX[4:0]

ARGBitNameFunction
10RFAGCDIS
24:0LNA_GAIN_INDEX[4:0]

2.2 パラメータ

2.2.1 RFAGCDIS(RF Automatic Gain Control Disable)

目的
高周波(RF)ステージの自動ゲイン制御(AGC)機能を無効化(固定化)すること。
解説
Si4735は通常、周囲の電波状況に合わせてLNA(低雑音アンプ)の増幅率を自動最適化(AGC)しています。
0(デフォルト):RF AGCを有効にします。チップの自動調整アルゴリズムにゲイン制御を任せます。
1:RF AGCを無効にします。チップによる自動調整を強制的にストップさせ、アンプの増幅率(減衰量)を次項の LNA_GAIN_INDEX で指定した任意の値に完全にロック(固定)します
[

2.2.2 LNA_GAIN_INDEX[4:0](Low Noise Amplifier Gain Index)

目的
内蔵アンプ(LNA)の減衰量(増幅ステップ)を直接数値で手動指定すること。
解説
RFAGCDIS = 1 に設定して自動調整をオフにした際、具体的にどのアンプ強度で固定するかを 5ビット(0〜31の範囲、有効範囲は26まで) のインデックス値で指定します。
0:最小減衰(=最大ゲイン)。LNAの性能をフルに発揮し、電波を最も強く増幅します(弱電界・遠距離の局向け)。
1 〜 25:中間のゲイン状態。数値が大きくなるほど、アンプの増幅率が下がり(入力電波が減衰し)ます。
26:最大減衰(=最小ゲイン)。最もアンプの増幅を抑え、入力を最も絞った状態になります(送信所付近などの超強電界向け)。
※なお、RFAGCDIS = 0(自動AGC有効)のときは、この LNA_GAIN_INDEX にどのような数値を入力してコマンドを送信しても設定は無視されます。





3 応答パラメータ

3.1 パラメータリスト

BitD7D6D5D4D3D2D1D0
STATUSCTSERRXXRSQINTRDSINTXSTCINT

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になります。
選局完了のタイミングを正確に把握する目的で使用します。




4 その他

4.1 Google AI (Gemini) の見解

0x28 コマンドは、Si4735のフロントエンドアンプの自動調整を切り(RFAGCDIS)、0〜26 のステップ(LNA_GAIN_INDEX)でアンプの増幅率(減衰量)をホストマイコンの計算通りに完全固定するためのコマンドです。
電波が強すぎて回路が悲鳴を上げている(歪みが発生している)環境において、強制的に入力を絞る「デジタルアッテネーター」として絶大な効果を発揮します。

4.1.1 「一発固定」ではなく「自動復帰」を持たせる設計

混信やお化け局を退治するために RFAGCDIS = 1 にしてゲインを固定(例:20 などに設定)した場合、ユーザーがそのまま別の周波数(電波の弱い遠くの局)を選局し直したときに、「感度が低いまま固定されているため、次の局がまったく聞こえない(ノイズしか出ない)」という罠に陥ります。
そのため、ユーザーを選局ボタン(Tune / Seek)を押した瞬間の割り込み処理等で、必ず RFAGCDIS = 0(自動AGCに戻す)を含めた 0x28 コマンドを発行してリセットするロジックをファームウェアに組み込んでください。

4.1.2 ソフトウェア側での「スマート・アッテネーター」の実装アルゴリズム

先ほどご質問いただいた「混変調への強さ」を自動で引き出すための、賢い組み込みロジックとして以下のステップを推奨します。 ステップ1
通常時は RFAGCDIS = 0(自動)で受信。
ステップ2
ユーザーが「混信(お化け局)が多い」と感じて「LOCAL(近距離モード)」ボタンを押す。
ステップ3
マイコンがまず 0x27 (FM_AGC_STATUS) を叩いて、現在の自動AGCのインデックス(例: 10 だったとする)を読み取る。
ステップ4
そこからマージンとしてさらにアンプを絞るため、値を数ステップ加算(例: 10 + 5 = 15)する。
ステップ5
0x28 コマンドで RFAGCDIS = 1, LNA_GAIN_INDEX = 15 を書き込む。
この「現在の受信状態に追従した動的マージン手動固定」を行うことで、感度を落としすぎるリスクを最小限に抑えつつ、狙った周波数の相互変調歪みだけをピンポイントで消し去る高級な受信制御が可能になります。






































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