Hobby Lab 趣味のモノ作り実験のサイトです。
部品 オペアンプ_関係 Si4735 マニュアル 0x40
1 0x40. AM_TUNE_FREQ
1.1  概要
1.2  注意事項・実装ポイント
1.2.1 STC 待ちの必須化
1.2.2 最後に必ず行う処理
2 コマンドパラメータ
2.1 パラメータリスト
2.2 パラメータ
2.2.1 FAST
2.2.2 FREQH,L
2.2.3 ANTCAPH,L
3 応答パラメータ
3.1 パラメータリスト
3.2 パラメータ
3.2.1 CTS
3.2.2 ERR
3.2.3 RSQINT
3.2.4 STCINT
4 その他
4.1 Google AI (Gemini) の見解
4.1.1 SSBモードへの拡張性
4.1.2 AM(帯域幅設定)との連動
4.1.3 まとめ
4.2 Google AI (Gemini)の回答
4.2.1 FAST処理概要

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

1.1 概要

Si4735の0x40コマンド(AM_TUNE_FREQ)は、AM、短波(SW)、長波(LW)の受信周波数を設定するための重要なコマンドです。

AM/SW/LW受信周波数を1kHzステップで149~23MHzの範囲に調整します。AM専用モードでは、有効周波数は1kHzステップで520~1710kHzの範囲です。
CTSビット(およびオプションの割り込み)は、次のコマンドを安全に送信できる状態になったときにセットされます。
ERRビット(およびオプションの割り込み)は、無効な引数が送信された場合にセットされます。
CTSビットとERRビットの両方がセットされている場合、割り込みは1回のみ発生することに注意してください。
オプションのSTC割り込みは、コマンドが完了したときにセットされます。
STCINTビットは、GET_INT_STATUSコマンドが呼び出された後にのみセットされます。
このコマンドは、電源投入モードのときのみ送信できます。STCビットが既にセットされている場合は、このコマンドによってSTCビットがクリアされます。
142ページの図24「CTSおよびSTCタイミングモデル」と145ページの表32「AM受信機のコマンドタイミングパラメータ」を参照してください。
AM:LO周波数は、RF周波数が1000kHz未満の場合はRF周波数より45kHz高く、1000kHzを超える場合はRF周波数より45kHz低くなっています。例えば、900kHzに同調した場合、LO周波数は945kHzになります。
注:FASTビットは、Si473x-D60以降のデバイスおよびSi4732デバイス(AMRXコンポーネント3.0以降)でサポートされています。
ANTCAPビットは、AMRXコンポーネント2.0以降(すべてのデバイス)でサポートされています。

対応機種:すべて
コマンド引数:5つ
応答バイト:なし

1.2 コマンド関連の注意事項・実装のポイント

1.2.1 STC(Seek/Tune Complete)待ちの必須化

コマンドを送信した直後は、ICの内部処理が完了するまで次の処理に移っては Venice(ハングアップ)の原因になります。
コマンド送信後は、必ずステータスバイトを読み込んで STC ビット(ビット0)が 1 になるまでループで待機(ポーリング) するか、インタラプト(IRQ)ピンの変化を検知してください。

1.2.2 最後に必ず行う処理

STC が 1 になったことを確認したら、完了をICに通知(クリア)するために 0x14(GET_INT_STATUS)コマンド を発行してステータスをリフレッシュさせてください。
これを怠ると、次回以降の選局コマンドやシークコマンドが正常に動作しなくなるケースがあります。




2 コマンドパラメータ

2.1 パラメータリスト

BitD7D6D5D4D3D2D1D0
CMD01000000
ARG10000000FAST
ARG2FREQH
ARG3FREQL
ARG4ANTCAPH
ARG5ANTCAPL

ARGBitNameFunction
1FAST高速チューニング。
設定すると、高速かつ無効化されたチューニングが実行されます。
チューニングの状態は正確ではありません。
2,3FREQH,L同調周波数上位[15:8],下位[7:0]バイト。
このバイトはFREQLと組み合わせて、同調周波数をkHz単位で選択します。AM/SW/LWモードでは、有効範囲は149~23000kHz(149kHz~23MHz)です。
AMのみのモードでは、有効範囲は520~1710kHz(520kHz~1710kHz)です。
4,5ANTCAPH,Lアンテナ同調コンデンサ上位[15:8]下位[7:0]バイト。
このバイトはANTCAPLと組み合わせて同調コンデンサの値を選択します。
両方のバイトがゼロに設定されている場合、同調コンデンサの値は自動的に選択されます。
値が0以外の場合、同調容量は95 fF × ANTCAP + 7 pFとして手動で設定されます。
ANTCAPの手動設定範囲は1~6143です。コンデンサの自動同調を推奨します。
注:SWモードでは、ANTCAPH[15:8]を0に、ANTCAPL[7:0]を1に設定する必要があります。

2.2 パラメータ

2.2.1 FAST(FAST Tuning Bit)

目的
選局(チューニング)にかかる時間を短縮し、高速な周波数切り替えを可能にします。
解説
このビットを 1 に設定すると、音声をミュートにする時間が短くなり、内部のフェーズロックループ(PLL)が通常よりも高速にロックします。
主に、ユーザーがダイヤル(エンコーダー)を素早く回して周波数を連続変更している最中や、簡易的な周波数スキャンを行う際に使用されます。
ただし、高速化する代わりに受信性能の最適化ステップを一部スキップするため、最終的な待ち受け周波数に決定した後は FAST = 0 で再度コマンドを送り、正確にチューニングし直すのが定石です。

2.2.2 FREQH,L(Tuning Frequency High Byte / Low Byte)

目的
受信したい具体的なターゲット周波数を 1 kHz 単位の16ビット(2バイト)データとして指定します。
解説
FREQH が上位8ビット、FREQL が下位8ビットを担います。設定値の計算方法: 受信したい周波数(kHz 単位)の数値をそのまま16進数に変換して分割します。
例: AM放送の 738 kHz(北日本放送など)に合わせたい場合
738 = 0x02E2
となるため、FREQH = 0x02、FREQL=E2 と設定します。

2.2.3 ANTCAPH,L(Antenna Tuning Capacitor High Byte / Low Byte)

目的
AM/SW/LW受信用の外部アンテナ回路(バーアンテナなど)と同期させるための、IC内部の可変容量コンデンサ(バリキャップ)の値を手動または自動で設定します。
解説
Si4735は、選択した周波数で最も感度が良くなるようにアンテナの同調容量を自動調整する機能を備えています。
このパラメータを 0x0000(自動設定) にすると、ICが自動で最適な容量にマッチングしてくれます。
手動で固定したい場合は、1 から 4095(0x0FFF)までの値を指定することで、内部キャパシタを直接制御できます。
手動設定は、特定の固定アンテナに最適化したい場合や、自動選局の微小なタイムラグを排除したい上級者向けの機能です。





3 応答パラメータ

3.1 パラメータリスト

BitD7D6D5D4D3D2D1D0
STATUSCTSERRXXRSQINTXXSTCINT

3.2 パラメータ

応答の先頭パラメータ
応答(STATUSバイト)に含まれる各ビット(CTS, ERR, RSQINT, STCINT)は、「デバイスの現在の処理状態」や「各種割り込み(通知)の発生」をホストMCUに知らせる目的で設計されています。 STATUSバイトの信頼性:Si4735の仕様上、いくつかのコマンド送信時に返ってくるSTATUSバイトでは、CTS以外の割り込みビット(RSQINT, 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 STCINT(Seek/Tune Complete Interrupt)

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




4 その他

4.1 Google AI (Gemini) の見解

Si4735のAM系チューニング(0x40)を制御する上で、より高音質・高性能なラジオを設計するための「Geminiの知見を交えたアドバイス」です。

4.1.1 SSB(単一側波帯)モードへの拡張性

Si4735(特にD60グラフィックリビジョン以降)は、アマチュア無線や短波の管制通信などで使われる SSB(USB/LSB)およびCWの受信に対応可能 です。
ただし、これにはSilicon Labsが提供するパッチコード(ファームウェア)を起動時にI2C経由でRAMに流し込む(パッチ当て)必要があります。
パッチ適用後のSSBモードでは、この 0x40 コマンドがそのまま SSB_TUNE_FREQ コマンドへと役割を変え、さらに細かな周波数ステップでの同調が可能になります。
自作ラジオのクオリティを大衆向けAMラジオから「本格的な短波通信レシーバー」へと化けさせることができる、非常に面白い展開要素です。

4.1.2 AMチャンネルフィルター(帯域幅設定)との連動

0x40 で周波数を決定した後は、0x12(SET_PROPERTY)コマンド を使って、AMのデジタルフィルター帯域幅(AM_CHANNEL_FILTER)を動的に切り替える実装を強く推奨します。
夜間の短波や混信の激しいAM:帯域幅を 1.0 kHz や 2.0 kHz に狭めてノイズをカットする。ローカルの強力なAM放送局:帯域幅を 4.0 kHz や 6.0 kHz に広げて高音質な(AMとしてはクリアな)サウンドを楽しむ。
このように、チューニングと同時にフィルター幅をユーザーが操作できるようにすると、市販の高級通信型受信機に匹敵する操作感が得られます。

4.1.3 まとめ

Si4735の 0x40 コマンドは、周波数指定(FREQH,L)、選局速度(FAST)、アンテナ整合(ANTCAPH,L) の3つを1度に制御し、DSPラジオとしてのAM受信基盤を決定づける極めて重要なAPIです。

4.2 Google AI (Gemini) の回答

4.2.1 FAST処理概要

質問
FASTではどの様にして早い処理をしているか概要を教えて下さい

見解
Si4735の FAST ビット(ファスト・チューニング・ビット)が有効なとき、IC内部で処理が高速化される主な仕組みは「PLL(位相同期回路)のロックプロセスの簡略化」と「アンテナ自動同調(オートチューニング)のスキップ・簡略化」の2つです。
DSPラジオチップの内部で行われている高速化の概要を解説します。
1. PLL(周波数シンセサイザ)の高速ロック
ラジオが新しい周波数に合わせる際、内部のPLLという回路が「狙った周波数」にピタッと安定するまで正確に追いかける制御(ロック処理)を行います。
通常時(FAST = 0):非常に細かいステップで、時間をかけて電気信号を安定させます。
これにより、周波数のズレや不要なノイズ(スプリアス)を極限まで抑えた「きれいな局部発振信号」を作ります。
高速時(FAST = 1):PLLの応答特性(ループ・フィルタの帯域など)を一時的に「大雑把だが素早いモード」に切り替えます。
これにより、多少の信号の揺らぎやノイズは許容しつつ、目的の周波数付近へ一瞬でジャンプさせます。

2. アンテナ同調(ANTCAP)処理のスキップ
AMや短波(SW)の受信では、周波数に合わせて外部アンテナの同調容量(ANTCAP)を最適化する必要があります。
通常時(FAST = 0):周波数を変えた後、ICが内部コンデンサの値を少しずつ変えながら「どこが一番感度が良くなるか」を測定・計算するサーチ処理が走ります。
これには数十ミリ秒の時間がかかります。
高速時(FAST = 1):この「最適な容量をじっくり探す処理」を完全にスキップするか、あるいはあらかじめチップ内に保存されている「大体の予測値」をパッと割り当てるだけに留めます。

3. ミュート(消音)時間の短縮
周波数を切り替える瞬間、バリバリという不快な切り替えノイズ(ポップノイズ)が出ます。
通常時は、PLLやアンテナの調整が完全に終わるまで長めに音を消します(オーディオ・ミュート)。
FASTモードでは、上記の処理自体がすぐ終わるため、消音時間を極限まで短縮して次の音をすぐに鳴らします。

例えるなら
通常モード(FAST=0):目的地(周波数)へ向かう際、コンパスで何度も方角を確かめ、服装(アンテナ)もしっかり整えてから慎重に進む。
FASTモード(FAST=1):とりあえず目的地の大体の方向へダッシュで向かい、細かいズレや服の乱れは後で直す。
このため、ダイヤルを勢いよく回して「キュルキュル」と素早く選局したい時(バンド内をスキャンしている最中)は FAST = 1 が威力を発揮します。






































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