Hobby Lab 趣味のモノ作り実験のサイトです。
部品 オペアンプ_関係 Si4735 試験1
1 テスト条件
 1.1 I2C信号プログラム
 1.2 発信回路は外部から入力
2 タイムチャート(AN332)
 2.1 Powerup
 2.2 Powerdown
 2.3 CTS割込
 2.3.1 GPO2の割込信号_1
 2.3.2 GPO2の割込信号_2
 2.3.3 GPO2の割込信号_3
 2.3.4 GPO2の割込時間
3 タイムチャート実測値
 3.1 CTS割込
 3.1.1 GPO2の出力信号
 3.1.2 GPO2直後のCTS割込信号
 3.1.3 通常のCTS割込信号
 3.1.4 周波数設定時の割込信号
 3.1.5 発信回路不具合時の割込

PrO:Si4735関係  Si4735について
 Si4735ラジオを作って見よう1
 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
 v プロパティ解説 v
 0x0001.GPO_IEN
 0x0102. DIGITAL_OUTPUT・・
 0x0104. DIGITAL_OUTPUT・・
 0x0201. REFCLK_FREQ
 0x0202. REFCLK_PRESCALE
 0x1100. FM_DEEMPHASIS
 0x1102. FM_CHANNEL_FILTER
 0x1107. FM_ANTENNA_INPUT
 0x1108. FM_MAX_TUNE_ERR・・
 0x1200. FM_RSQ_INT_SOURCE
 0x1201. FM_RSQ_SNR_HI_T・・
 0x1202. FM_RSQ_SNR_LO_T・・
 0x1203. FM_RSQ_RSSI_HI・・
 0x1204. FM_RSQ_RSSI_LO・・
 0x1205. FM_RSQ_MULTIPA・・
 0x1206. FM_RSQ_MULTIPA・・
 0x1207. FM_RSQ_BLEND_TH・・
 0x1300. FM_SOFT_MUTE_RATE
 0x1301. FM_SOFT_MUTE_SL・・
 0x1302. FM_SOFT_MUTE_M・・
 0x1303. FM_SOFT_MUTE_S・・
 0x1304. FM_SOFT_MUTE_R・・
 0x1305. FM_SOFT_MUTE_A・・
 0x1400. FM_SEEK_BAND_B・・
 0x1401. FM_SEEK_BAND_TOP
 0x1402. FM_SEEK_FREQ_S・・
 0x1403. FM_SEEK_TUNE_S・・
 0x1404. FM_SEEK_TUNE_R・・
 0x1500. FM_RDS_INT_SOU・・
 0x1501. FM_RDS_INT_FIF・・
 0x1502. FM_RDS_CONFIG
 0x1503. FM_RDS_CONFIDE・・
 0x1800. FM_BLEND_RSSI_S・・
 0x1801. FM_BLEND_RSSI_M・・
 0x1802. FM_BLEND_RSSI_A・・
 0x1803. FM_BLEND_RSSI_R・・
 0x1804. FM_BLEND_SNR_ST・・
 0x1805. FM_BLEND_SNR_M・・
 0x1806. FM_BLEND_SNR_A・・
 0x1807. FM_BLEND_SNR_R・・
 0x1808. FM_BLEND_MULTI・・
 0x1809. FM_BLEND_MULTI・・
 0x180A. FM_BLEND_MULTI・・
 0x180B. FM_BLEND_MULTI・・
 0x1A00. FM_HICUT_SNR_H・・
 0x1A01. FM_HICUT_SNR_L・・
 0x1A02. FM_HICUT_ATTAC・・
 0x1A03. FM_HICUT_RELEA・・
 0x1A04. FM_HICUT_MULTI・・
 0x1A05. FM_HICUT_MULTI・・
 0x1A06. FM_HICUT_CUTOF・・
 0x3100. AM_DEEMPHASIS
 0x3102. AM_CHANNEL_FIL・・
 0x3103. AM_AUTOMATIC_V・・
 0x3104. AM_MODE_AFC_SW・・
 0x3105. AM_MODE_AFC_SW・・
 0x3200. AM_RSQ_INT_SOU・・
 0x3201. AM_RSQ_SNR_HI_T・
 0x3202. AM_RSQ_SNR_LO_T・
 0x3203. AM_RSQ_RSSI_HI・・
 0x3204. AM_RSQ_RSSI_LO・・
 0x3300. AM_SOFT_MUTE_R・・
 0x3400. AM_SEEK_BAND_B・・
 0x3401. AM_SEEK_BAND_TOP
 0x3402. AM_SEEK_FREQ_S・・
 0x3403. AM_SEEK_TUNE_S・・
 0x3404. AM_SEEK_TUNE_R・・
 0x4000. RX_VOLUME
 0x4001. RX_HARD_MUTE

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 その他

1 テスト条件

 1.1 I2C信号プログラム

MounRiver Studio Ⅱにより、CH32V203の下記関数を作製してテストしている。
以下に関数を記載するが、こんな感じとして見て下さい。
なぜかたと言うと、今回I/Oについては、関係するものだけを分離して記載するのに時間がかかるため割愛しているので。

呼び出し方法 (例: POWER_UPコマンド 3byte送信して応答 1byte受信する。)
 Si4735のディバイスNoは0x11

 コマンドデータはcmdpar[ ],応答データはrespar[ ]配列に入れる。
 cmdpar[0] = 0x01; cmdpar[1] = 0xC0; cmdpar[2] = 0x05;

 Si4735_i2C(0x11,cmdpar,3,respar,1);

関数

例の結果
respar[0] = 0x80
モニター(シリアル)は
Hobbylab Touch Position2
TxCmd[01] Rx[1] = 80
ハード出力信号は3.1を参照

なお関数中の cts_ready_flag はGPO2端子を割込処理により監視する関数を作製している。

 1.2 発信回路は外部から入力

Si4735の発信回路は試験(4.1 発信回路不良の判定方法)のため、発振子を外して外部から32.768kHz(3V方形波)をRCLKに入力した。




2 タイムチャート(AN332)

 2.1 Powerup

デバイスをパワーダウンモードからパワーアップモードへ移行させるためのブート手順には、2つの方法があります。
1つ目は最も一般的な方法で、デバイス内部メモリからのブートです。
2つ目は、システムコントローラからデバイスに書き込まれるファームウェアパッチを使用したブートです。
デバイスをパワーアップする手順は以下の通りです。

(1) RST = 0 を維持した状態で、VDDおよびVIOを供給します。
VDDおよびVIOの最小立ち上がり時間は25 μsであり、RST = 1に設定する前に、VDDとVIOが250 μs間安定している必要があります。
電源の投入順序は任意です。
RSTはVIO電源ドメインに属しているため、VIOが供給される前はRST = 0の状態を維持する必要があります。

(2) 希望するバスモードに合わせてGPO1およびGPO2を設定します。
RST = 1にする前のGPO1およびGPO2の最小セットアップ時間は、システムコントローラによってアクティブに駆動される場合は30 ns、内部の1 MΩ抵抗によってGPO1(ハイ)およびGPO2(ロー)のデフォルト状態が設定される場合は100 μsです。

(3) RST = 1に設定します。

(4) コマンドレジスタにPOWER_UPを書き込みます。
POWER_UPコマンドは、デバイスに対し、内部メモリからのブート(セクション「7.1. Device Memoryからのパワーアップ」を参照)または システムコントローラから送信されたファームウェアパッチからのブート(セクション「7.2. Component Patchからのパワーアップ」を参照)を行うよう指示します。
CTS = 1となった後、デバイスは通常動作を開始し、追加のコマンドを受け入れる準備が整います。
POWER_UPコマンドは、DIN(ピン13、Si4732ではピン16)、DFS(ピン14、Si4732ではピン1)、RIN(Si4704/05/3x-D62ではピン16)およびLIN(Si4704/05/3x-D62ではピン15)の 状態をアナログまたはデジタルオーディオモード用に設定し、GPO2/INTを割り込み動作用に設定します。
このコマンドが実行される前、これらのピンはハイインピーダンス状態に設定されています。
GPIO_CTLおよびGPIO_SETコマンドは、GPO2/INTおよびGPO3の状態を設定します。
これらのコマンドを実行する前は、これらのピンはハイインピーダンス状態にあります。

(5) RCLKを供給します。
RCLKバッファはVIO電源ドメインにあるため、VIOへの電源供給後であればいつでもRCLKを供給可能です。
RCLKは、FM_TUNE_FREQコマンドのように受信機を有効にするコマンドの実行前10 nsの時点で有効である必要があり、また、TX_TUNE_POWERコマンド(値0x00) のようにキャリアを無効にするコマンドの実行後10 nsの間も有効である必要があります。
キャリアが有効な場合、適切なAGC動作を行うためにRCLKが必要です。
キャリアが無効な場合は、RCLKの供給を停止したり、設定を変更したりしても構いません。

 2.2 Powerdown

デバイスをパワーアップ・モードからパワーダウン・モードへ移行させるには、POWER_DOWNコマンドを書き込む必要があります。
デバイスをパワーダウンし、VDDおよびVIO(オプション)の供給を停止する手順は以下の通りです。
(1) RCLK = 0に設定します(オプション)。
RCLKバッファはVIO電源ドメインにあるため、VIOが供給されている間はいつでも動作可能です。
コマンド送信の前後10 ns間は、RCLKが有効である必要があります。
また、適切なAFC動作のためには、RCLKが常に有効である必要があります。
それ以外の時間帯であれば、RCLKの供給停止や再設定を行っても構いません。

(2) コマンドレジスタにPOWER_DOWNを書き込みます。
すべてのレジスタ内容が失われることに注意してください。

(3) RST = 0に設定します。
POWER_DOWNコマンドの完了後、RSTを10 ns間ハイレベルに保持する必要があることに注意してください。

(4) VDDの供給を停止します(オプション)。

(5) VIOの供給を停止します(オプション)。
VDDの供給を停止せずにVIOの供給を停止してはなりません。予期しないデバイス動作を引き起こす可能性があります。


 2.3 CTS割り込み

2.3.1 GPO2の割込信号_1

AN332の解説では『10.Timingで紹介されている。』
コマンドがデバイスに受け付けられ、その実行が完了したことを示す2つのインジケータがあります。
CTS(Clear to Send)とSTC(Seek/Tune Complete)です。

各コマンドの送信後、CTSビットがセットされます。これは、コマンドがデバイスに受け付けられ、次のコマンドを受け入れる準備が整ったことを示します。
また、ほとんどのコマンドにおいて、CTSビットはコマンドの実行が完了したことも示します。

対象となるコマンドは以下の通りです。
(1) POWER_UP、POWER_DOWN、GET_REV、GET_PROPERTY、GPIO_CTL、GPIO_SET

(2) FM受信コンポーネント:
FM_TUNE_STATUS、FM_RSQ_STATUS、FM_RDS_STATUS

(3) AM/SW/LW受信コンポーネント:
AM_TUNE_STATUS、AM_RSQ_STATUS。CTSのタイミングモデルを図23に示します。


2.3.2 GPO2の割込信号_2 (周波数設定時等)

CTSビットに加え、コマンドの実行完了を示すためにSTCビットを使用するコマンドがいくつかあります(例:FM_TUNE_FREQ)。

次のコマンドを送信する前に、STCビットがセットされるのを待つことを強く推奨します。
割り込みを使用しない場合は、GET_INT_STATUSコマンドを送信してSTCビットの状態をポーリングし、同ビットがセットされたことを確認してから次のコマンドを送信することができます。

実行完了を示すためにSTCビットを使用するコマンド:

(1) FM受信コンポーネント:FM_TUNE_FREQ、FM_SEEK_START

(2) AM/SW/LW受信コンポーネント:AM_TUNE_FREQ、AM_SEEK_START
CTSおよびSTCのタイミングモデルを図24に示します。

2.3.3 GPO2の割込信号_3

SET_PROPERTYコマンドには、コマンドの実行完了を示すインジケータはありませんが、その完了タイミングは保証されており、tCOMPと呼ばれます。
CTSおよびSET_PROPERTYコマンドの完了タイミング・モデル(tCOMP)を、図25に示します。


2.3.4 GPO2の割込時間

CommandtCTStSTCtCOMPtINT
POWER_UP110 ms1 μs
POWER_DOWN300 μs
GET_REV
GET_PROPERTY
GET_INT_STATUS
PATCH_ARGS
PATCH_DATA
FM_RSQ_STATUS
FM_RDS_STATUS
FM_TUNE_STATUS
FM_TUNE_FREQ60 ms
FM_SEEK_START60 ms
SET_PROPERTY10 ms
FM_AGC_STATUS
FM_AGC_OVERRIDE
GPIO_CTL
GPIO_SET
AM_RSQ_STATUS
AM_TUNE_STATUS
AM_TUNE_FREQ80ms
AM_SEEK_START80ms




3 タイムチャート実測値

 3.1 CTS割り込み

3.1.1 GPO2の出力信号

POWER_UPコマンドでGPO2に出力指示した場合は出力に切り替わる(Lo→Hi)時間は

 10.3 (ms) だった。

①Si4735ディバイスNo 0x11
②POWER_UPコマンドで CTS割込=1(有効)、GPO2出力=1(有効)、PATCH=0(通常起動)、
  XOSCEN=0(外部RCLK使用)、FUNC=0(FM受信)、OPMODE=5(アナログ音声出力)
  I2C信号 0x01 0xC0 0x05
③10.3(ms) GPO2信号 Lo → Hi [ GPO2出力に確定 ]
④30.3(ms) GPO2信号 Hi→ Lo → Hi [ 割込信号 ]
⑤応答受信 0x80

0x01,0xC0,0x05のコマンドを送信後、CTS割込が発生し、応答信号0x80が出た信号図


3.1.2 GPO2出力直後のCTS割込信号

(1)POWER_UPコマンド実行からCTS割込時間を計測した結果(3.1.1の図参照)

  30.3 (ms) だった。

(2)CTS割込の時間を測定した結果

  2 (us)の幅で信号が出ていた。

POWER_UPの応答信号0x80の部分の時間軸を拡大した図


3.1.3 通常のCTS割込信号

POWER_UPコマンドの次にGET_REVコマンドを実行し、その時のCTS割込時間を計測した結果
コマンドを送信してから 130(us) 後にCTS割込が発生していた。

GET_REVコマンド実行からCTS信号が出て、応答信号が出るまでのタイムチャート図

図に無いが、CTSの割込信号幅は同じ2 (us)だった。

3.1.4 周波数設定時の割込信号

タイムチャート(AN332)の 2.3.2 GPO2の割込信号_2 で説明しているものの確認試験を実施した。
なお以下コマンドを実施することによりFM放送の受信が出来ることを確認できました。

tSTCの時間は 36.4 (ms)だった。

今回の試験のコマンド実施概要
POWER_UP 0x01,0xC0,0x05
GET_PROPERTY,GPO_IEN 0x13,0x00,0x00,0x01
SET_PROPERTY,GPO_IEN 0x12,0x00,0x00,0x01,0x00,0xC1 STC割込使用
GET_PROPERTY,GPO_IEN 0x13,0x00,0x00,0x01
FM_TUNE_FREQ 0x20,0x00,0x20,0x4E,0x00 周波数 82.7MHz=8270=0x204Eほか
第二割込待ち
FM_TUNE_STATUS 0x22,0x00
100(ms)待ち
FM_TUNE_STATUS 0x22,0x01
100(ms)待ち
FM_TUNE_STATUS 0x22,0x00
モニター(シリアル)は
Hobbylab Touch Position2
TxCmd[01] Rx[1] = 80
TxCmd[13] Rx[4] = 80 00 00 80
TxCmd[12] Rx[1] = 80
TxCmd[13] Rx[4] = 80 00 00 C1
TxCmd[20] Rx[1] = 80
TxCmd[22] Rx[8] = 81 01 20 4E 40 25 00 01
TxCmd[22] Rx[8] = 80 01 20 4E 40 25 00 01
TxCmd[22] Rx[8] = 80 01 20 4E 40 25 00 01
POWER_UPコマンドの次にGET_REVコマンドを実行し、その時のCTS割込時間を計測した結果
コマンドを送信してから 130(us) 後にCTS割込が発生していた。

GET_REVコマンド実行からCTS信号が出て、応答信号が出るまでのタイムチャート図


⑥の時間を測定出来る様に時間軸を拡大。 ⑥ = tSTCの時間は 36.4 (ms)


ただし、GPO2の割込信号が見えないので、⑦のデータ付近の時間軸を拡大する。

⑦のコマンド前に割込があることが判る。(赤い点が見える)

3.1.5 発信回路不具合の割込信号

(1)発信回路不具合で周波数制御コマンドを送信した時点で処理が完全にストップします。Google AI (Gemini)
0x20: FM_TUNE_FREQ (FM選局コマンド)
0x40: AM_TUNE_FREQ (AM選局コマンド)
と言うことで実験してみることにする。

(2)確認試験は 3.1.2 GPO2出力直後のCTS割込信号 で使用したコマンド群を使用して、外部クロックを停止した。
図から、第二割込⑥がこないため、そこで停止していることが判る。(音も出ていない)

以上から発振器が不具合を起こした場合はこの事象で判る。




































更新日 2026/07/19 05:37  管理者 平林 剛Hirabayashi Takeshi