Hobby Lab 趣味のモノ作り実験のサイトです。
部品 オペアンプ_関係 Si4735 マニュアル 0x13
1 0x13. GET_PROPERTY 概要
2 コマンドパラメータ
2.1 パラメータリスト
2.2 パラメータ
2.2.1 PROPH
2.2.2 PROPL
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 PROPDH
3.2.7 PROPDL
4 その他(Gemini)の見解
4.1 コマンドのステップ注意事項
4.1.1 CTSの待機タイミング
4.1.2 モードの一致
4.1.3 レンスポンスのデータ
4.2 もう少し踏み込んだ応用展開
4.2.1 不揮発性ベリファイ
4.2.2 初期値(デフォルト値)
4.3  レンスポンスデータ
4.4 その他
4.4.1 シャドウレジスタ
4.4.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 コマンド 0x13. GET_PROPERTY 概要

全般 2.2 特性概要 に示されているプロパティを取得します。
CTSビット(およびオプションの割り込み)は、次のコマンドを安全に送信できるときにセットされます。
このコマンドは、電源投入モードのときのみ送信できます。

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




2 コマンドパラメータ

2.1 パラメータリスト

BitD7D6D5D4D3D2D1D0
CMD00010010
ARG100000000
ARG2PROPH
ARG3PROPL

ARGBitNameFunction
17:0Reserved常に0に書き込む
27:0PROPHプロパティ上位バイト。
このバイトは、PROPLと組み合わせて、変更するプロパティを指定するために使用されます。
37:0PROPLプロパティ下位バイト。
このバイトは、PROPHと組み合わせて、変更するプロパティを指定するために使用されます。

2.2 パラメータ

2.2.1 PROPH

Property High Byte の略
目的
設定対象とするプロパティ番号の 上位8ビット を指定します。

2.2.2 PROPL

Property Low Byteの略
目的
設定対象とするプロパティ番号の 下位8ビット を指定します。





3 応答パラメータ

(FUNC = 1 [AM]の場合 ※は有りません)

3.1 パラメータリスト

BitD7D6D5D4D3D2D1D0
STATUSCTSERRXXRSQINT※ RDSINTXSTCINT
RESP100000000
RESP2PROPDH
RESP3PROPDL

RESPBitNameFunction
17:0Reserved常に0に書き込む
27:0PROPDHプロパティ値上位バイト。
このバイトは、PROPDLと組み合わせて、プロパティ値を設定するために使用されます。
37:0PROPDLプロパティ値下位バイト。
このバイトは、PROPDHと組み合わせて、プロパティ値を設定するために使用されます。

3.2 パラメータ

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 PROPDH

Property Data High Byteの略
目的
そのプロパティに書き込みたい設定値(データ)の 上位8ビット を指定します。

3.2.7 PROPDL

Property Data Low Byteの略
目的
そのプロパティに書き込みたい設定値(データ)の 下位8ビット を指定します。





4 その他

4.1 コマンドの重要ステップと注意事項(Google AI (Gemini) の見解)

Silicon LabsのDSPラジオIC「Si4735」における0x13 (GET_PROPERTY) コマンドは、現在デバイスに設定されているプロパティ(音量、フィルタ帯域幅、AGC設定、SSBのBFO値など)の設定値を内部レジスタから読み出すためのコマンドです。
先述の 0x12 (SET_PROPERTY) と対になる本コマンドの注意点、応用展開、およびGoogle AI (Gemini) の見解をまとめます。
0x13 コマンドは、コマンドバイトに続いて2バイトのプロパティID(PROP)の計3バイトを送信し、その後に4バイト(ステータス1バイト + レスポンス3バイト)を読み出します。

4.1.1 CTS(Clear to Send)の待機タイミング

コマンド(0x13)とプロパティIDを送信した後、レスポンスデータを読み出す前に、ステータスバイトのCTSビットが「1」になるのを必ず確認(ポーリング)してください。
0x13 は内部のコントロールレジスタを検索して値を引っ張ってくるため、IC内部でわずかな処理時間を要します。
CTSを待たずに即座にデータを読み出すと、無効なデータ(0x0000 や 0xFFFF)が返ってきます。

4.1.2 パワーアップ状態とモードの一致

0x12 と同様に、現在起動していないモードのプロパティIDを指定するとエラー(ERRフラグ)になります。
例として、FMモードで起動しているときにAM用のプロパティ(0x3102 など)を読み出そうとすると、正しい値は返らずステータスのERRビットが立ちます。
必ず現在の動作モードに適合するプロパティIDを指定してください。

4.1.3 レンスポンスのデータ構造とエンディアン

読み出される設定値(VAL)は、レスポンスの第2バイトが上位(High)、第3バイトが下位(Low)のビッグエンディアン形式で返ってきます。
マイコン側で16ビット整数(uint16_t や int16_t)として結合する際は、バイトシフト演算((High << 8) | Low)を正しく行う必要があります。

4.2 もう少し踏み込んだ応用展開(Google AI (Gemini) の見解)

0x13 コマンドは単なる確認用にとどまらず、システムの信頼性向上や、動的な設定管理に非常に有益です。

4.2.1 起動時・モード切り替え時の「設定値の不揮発性ベリファイ(答え合わせ)」

I2Cバスにノイズが乗る環境や、マイコンの処理がバタついている場合、0x12 で送った設定が稀にIC側に正しく届かない(無視される)ケースがあります。
展開例: 重要なパラメータ(音量やSSBのBFOオフセットなど)を 0x12 で書き換えた直後に、あえて 0x13 を実行して「本当に意図した値が書き込まれたか」をベリファイ(検証) します。
もし値が異なっていれば再度 0x12 を送るというリトライ処理をファームウェアに組み込むことで、極めて堅牢な通信制御が実現します。

4.2.2 設定の「初期値(デフォルト値)」の自動動的取得

Si4735は、0x01 (POWER_UP) で起動した直後、各プロパティにSilicon Labsが定めた推奨のデフォルト値が自動で割り当てられます。
展開例: マイコン側に初期設定値をハードコーディング(直書き)しておく代わりに、起動直後に 0x13 を使ってICが持つ「本物のデフォルト値」をすべて吸い出し、マイコン内の変数(キャッシュ)に格納します。
これにより、ICのファームウェアリビジョン(D60など)の違いによって内部の既定値がマイナーチェンジされていても、ホストマイコン側がそれを自動で吸収・追従できるようになります。

4.3 レンスポンスデータの構造

0x13 コマンドを送信した後に返ってくる4バイトのデータ構造です。
バイト位置名称意味・役割
Byte 0STATUSCTSフラグやエラーフラグ(ERR)が含まれる。
Byte 1RESP1予約領域(通常は 0x00 が返る)。
Byte 2PROPVAL (H)指定したプロパティの設定値の上位バイト。
Byte 3PROPVAL (L)指定したプロパティの設定値の下位バイト。

4.4 その他Google AI (Gemini) の見解

Si4735のファームウェアアーキテクチャ設計において、Google AI (Gemini) は「マイコン内部のステート(状態)と、DSP内部の物理レジスタの完全な同期」のために 0x13 を戦略的に活用することを推奨します。

4.4.1 シャドウレジスタ(キャッシュ)運用の推奨

音量の変更やミュート状態の管理、SSBのBFO変更などを行う際、ユーザーインターフェース(LCDへの数値表示など)の更新のために毎回 0x13 を実行してICから値を読み出すのは、I2Cバスの帯域とマイコンの処理時間を無駄に消費します。
Geminiの見解としては、基本的にはマイコン側の変数(シャドウレジスタ)で設定値を管理し、ICへの書き込み(0x12)のみを行う構成がベストです。
そして 0x13 は、「起動直後の初期同期」や「エラー復帰処理(例外ハンドリング)」、あるいは「デバッグモード時のレジスタダンプ」といった、 システムが状態の整合性を厳密に検証したいタイミングに限定してピンポイントで使用するのが最も合理的であると評価します。

4.4.2 SSBパッチ適用後の整合性チェックへの応用

SSBパッチを転送した後は、通常のAMモードとは異なる特殊なプロパティ(SSB専用フィルタ 0x0101 など)が解放されます。
Geminiの見解では、パッチ適用の最終確認シーケンスとして、0x10 (GET_REV) でパッチIDを確かめるだけでなく、あえてSSB専用プロパティに対して 0x13 を発行し、 エラー(ERR)にならずに正しいデフォルト値が返ってくるかを確認するロジックを組むことで、パッチが「メモリ上だけでなく、 機能として100%アクティブになっているか」をより深く診断・担保できる高信頼性レシーバーが構築できると見なしています。





































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