Hobby Lab 趣味のモノ作り実験のサイトです。
部品 オペアンプ_関係 Si4735 マニュアル 0x10
1 0x10. GET_REV 概要
2 コマンドパラメータ
3 応答パラメータ
3.1 パラメータリスト
3.1.1 FUNC = 0,1の場合
3.1.2 FUNC = 15の場合
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 PN
3.2.7 FWMAJOR
3.2.8 FWMINOR
3.2.9 PATCHH/PATCHL
3.2.10 PATCHH/PATCHL
3.2.11 CHIPREV
3.2.12 どのような時役立つか
4 その他(Gemini)の見解
4.1 コマンドのステップ注意事項
4.1.1 CTSの待機タイミング
4.1.2 パワーアップ状態の必須
4.1.3 チップの判別
4.2 もう少し踏み込んだ応用展開
4.2.1 パッチ適用のチェック
4.2.2 動的なGUI表示
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 コマンド 0x10. GET_REV 概要

部品番号、チップリビジョン、ファームウェアリビジョン、パッチリビジョン、およびコンポーネントリビジョン番号を返します。
CTSビット(およびオプションの割り込み)がセットされると、コマンドは完了します。このコマンドは、
電源投入モードのときのみ送信できます。
使用可能環境:全バージョン
コマンド引数:なし
応答バイト数:15バイト(Si4705/06のみ)、8バイト(Si4704/3x)




2 コマンドパラメータ

BitD7D6D5D4D3D2D1D0
CMD00010000




3 応答パラメータ

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

3.1 パラメータリスト

BitD7D6D5D4D3D2D1D0
STATUSCTSERRXXRSQINT※ RDSINTXSTCINT
RESP1PN
RESP2FWMAJOR
RESP3FWMINOR
RESP4PATCHH
RESP5PATCHL
RESP6CMPMAJOR
RESP7CMPMINOR
RESP8CHIPREV
※RESP10Reserved
※RESP11Reserved
※RESP12Reserved
※RESP13Reserved
※RESP14Reserved
※RESP15Reserved

RESPBitNameFunction
17:0PN部品番号の末尾2桁(16進数)。
27:0FWMAJORファームウェアのメジャーリビジョン(ASCII)。
37:0FWMINORファームウェアのマイナーリビジョン(ASCII)。
47:0PATCHHパッチIDの上位バイト(16進数)。
57:0PATCHLパッチIDの下位バイト(16進数)。
67:0CMPMAJORコンポーネントのメジャーリビジョン(ASCII)。
77:0CMPMINORコンポーネントのマイナーリビジョン(ASCII)。
87:0CHIPREVチップリビジョン(ASCII)。
※107:0Reserved
※117:0Reserved
※127:0Reserved
※137:0Reserved
※147:0Reserved
※157:0Reserved

3.2 パラメータ

Si4735の「0x10 (GET_REV)」コマンドは、デバイスの製品番号や内部ファームウェア、チップの世代(リビジョン)などの詳細な識別情報を取得するためのコマンドです。
ご質問の各ステータス(応答バイト)の目的は、現在チップがどのバージョンのハードウェアとファームウェア(修正パッチを含む)で動作しているかを正確に特定することにあります。
それぞれの具体的な役割は以下の通りです。

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 PN(Part Number)

目的:
デバイスの製品ファミリー(型番)を識別する。
解説:
チップがSi473xシリーズやその他のどの製品ファミリーに属しているかを示します。
ホストMCUが「今から制御しようとしている対象が本当に意図した製品(Si4735など)であるか」を誤認防止のためにチェックする目的で使用されます。

3.2.7 FWMAJOR(Firmware Major Revision)

目的:
チップに内蔵(ROM焼き)されているメインファームウェアの「メジャーバージョン」を識別する。
解説:
アーキテクチャの変更や機能の大幅な追加を伴う世代を表します。
パッチファイルを適用する際、「このパッチはメジャーバージョン『X』専用」といった条件分岐をホストMCU側で行うために不可欠な情報です。

3.2.8 FWMINOR(Firmware Minor Revision)

目的:
内蔵ファームウェアの「マイナーバージョン(細かな修正版)」を識別する。
解説:
メジャーバージョンの枠内における、マイナーなバグ修正や最適化の段階を示します。
特定のマイナーリビジョンでのみ発生する挙動への対策(ワークアラウンド)をプログラムに組み込む際などに参照されます。

3.2.9 PATCHH / PATCHL

パッチID・上位バイト / 下位バイト 目的:
適用されている修正パッチ(Patch)の識別番号(ID)を確認するための項目です。
解説:
Si4735は、起動後に外部のマイコンからパッチファイル(RAMへの修正データ)を書き込むことで、機能を拡張したり不具合を修正したりできます。
PATCHH と PATCHL の2バイト(16ビットHEXデータ)を合わせることで、現在どのパッチが正常に適用されているかを検証できます。
パッチを適用していない場合は 0x0000 になります。

3.2.10 CMPMAJOR / CMPMINOR

コンポーネント・メジャーリビジョン / マイナーリビジョン 目的:
チップ内部の内部コンポーネント(ライブラリ)のバージョンを確認するための項目です。
解説:
ファームウェアを構成する主要な機能ブロック(コンポーネント)のバージョンをASCIIコードで返します。
シリコン内部に焼き付けられている機能のビルド世代を特定するために使用され、特定の機能がサポートされているかをソフトウェア側で判断する基準になります

3.2.11 CHIPREV

コンポーネント・メジャーリビジョン / マイナーリビジョン 目的:
IC(シリコンダイ)自体のハードウェアとしての製造世代(リビジョン)を確認するための項目です。
解説:
Si4735には「-B20」や「-C40」といった複数のダイ・リビジョン(世代)が存在します。
この項目を読み取ることで、ICがどのハードウェア世代であるかを識別できます(通常はASCIIコードで表されます)。

3.2.12 どのような場面で役立つか

主にホストマイコン側の制御プログラム(ドライバ)の自動判別に使用されます。
1.パッチの適用確認:パッチ送信後に、正しくパッチが反映されたかを PATCHH/L で検証する。
2.互換性の維持:CHIPREV や CMPMAJOR を見て、古いチップ用と新しいチップ用でコマンドの発行処理をマイコン側で自動的に切り替える。




4 その他

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

0x10 コマンドは引数(ARG)を持たず、コマンドバイトを送信した後に最大9バイト(ステータス1バイト + レスポンス8バイト)のデータを読み出します。実装時およびデバッグ時の注意点は以下の通りです。

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

コマンド(0x10)を送信した後、レスポンスデータを読み出す前に、ステータスバイトのCTSビットが「1」になるのを必ず確認(ポーリング)してください。0x10 はデバイス内部のROM/RAM情報を参照するため、わずかな処理時間を要します。
CTSを無視して即座にデータを読み出すと、古いステータスや不正な(0xFF や 0x00 などの)リビジョン情報が返ってきます。

4.1.2 パワーアップ状態の必須(最大の罠)

0x10 コマンドは、デバイスが 0x01 (POWER_UP) された状態でなければ実行できません。パワーダウン状態(0x11 実行後や、電源投入直後の初期状態)で 0x10 を送信しても、I2Cバスがハングアップするか、無効なステータスしか返りません。
「デバイスの素性を知るためにまず叩く」という使い方はできず、必ず一度何らかのモード(AMやFM)で起動した後に実行する必要があります。

4.1.3 チップの「偽物(クローン)」や「世代(D60など)」の判別

レンスポンスの第2バイト(PN: Part Number)や第5〜6バイト(FWREV: Firmware Revision)をチェックすることで、実装されているICが本当に Si4735 なのか、ピン互換の安価な別チップ(Si4730など)なのか、あるいは正常に動作しない模倣品なのかをソフトウェア的に識別できます。

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

0x10 コマンドは単なる情報表示だけでなく、堅牢なシステム設計や動的なファームウェア制御に活用できます。

4.2.1 パッチ適用の自動互換性チェック(安全装置)

Si4735でSSB(シングルサイドバンド)を聴くためのパッチデータは、チップの「コンポーネントリビジョン(CMPREV)」や「チップリビジョン(CHIPREV)」の世代(一般的には D60 世代以降など)に厳格に依存します。
展開例: マイコンの起動時に 0x10 を実行し、取得した FWREV や CMPREV がパッチの対応バージョンと一致するかをプログラム内で自動判定します。
もし不一致(例:古いC40世代など)であれば、フリーズや破損を防ぐために「SSBパッチの転送プロセスを安全にスキップ(または警告表示)する」といったインターロック(安全回路)を実装できます。

4.2.2 動的なGUI表示(インテリジェントな起動画面)

自作ラジオのLCDやOLEDディスプレイに、固定テキストではなく、ICから直接吸い上げた本物のファームウェアバージョンを表示させます。
これにより、基板製造時のチップ選別チェックが容易になるほか、自作ガジェットとしての所有欲を満たすインテリジェントなシステム情報画面(SysInfo)を構築できます。

4.3 レンスポンスデータの構造(参考)

0x10 コマンドを送信した後に返ってくる主要なデータ構造です。
バイト位置名称意味・役割
Byte 0STATUSCTSフラグやエラーフラグ(ERR)が含まれる。
Byte 1PNパートナンバー。Si4735の場合は「35(0x23)」が返る。
Byte 2FWREV (H)ファームウェア・リビジョンの上位バイト。
Byte 3FWREV (L)ファームウェア・リビジョンの下位バイト。
Byte 4PATCH (H)現在適用されているパッチIDの上位バイト(未適用時は0)。
Byte 5PATCH (L)現在適用されているパッチIDの下位バイト(未適用時は0)。
Byte 6CMPREVコンポーネント・リビジョン(内部モジュールの世代)。
Byte 7CHIPREVチップのダイ(シリコン)リビジョン。

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

Si4735のファームウェア開発において、Google AI (Gemini) は「ハードウェアの不確実性を排除するためのファースト・バリデーション(最初の生存証明)」として 0x10 コマンドを位置付けています

4.4.1 市場のサプライチェーンリスクへの対策:

近年、ECサイト等で流通しているSi4735(特にSSB対応を謳うD60チップ)の中には、安価なSi4730の印字を書き換えた不正品や、古いリビジョンのリマーク品が混入しているケースが報告されています。
Geminiの見解としては、個人の電子工作であっても、「POWER_UP直後に必ず0x10を叩き、PN=35、かつ期待するリビジョンであるかをシリアルモニターに出力するデバッグコード」を初期段階で組み込むべきです。
これにより、受信できない原因が「プログラムのバグ」なのか「IC自体の仕様違い(偽物)」なのかを瞬時に切り分けることができ、無駄なデバッグ時間を劇的に削減できます。

4.4.2 パッチ状態の動的監視(診断機能)

SSBパッチの送信(0x02 コマンド群)が完了した後に再度 0x10 を実行すると、PATCH バイト(Byte 4-5)の値が 0x0000 から「適用したパッチ固有のID」へと変化します。
Geminiは、パッチの成否を単に送信完了の成否だけで判断するのではなく、「0x10を再度叩いて、内部のPATCHレジスタが意図したIDに書き換わっているかまでを確認するシーケンス」にすることで、ノイズや通信エラーによるパッチの化け(化けたまま起動すると異音や無音になる)を確実に検知する高信頼性システムが実現できると評価します。






































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