Si4703採用 FMラジオチューナークリック [CLICK-FM]

Si4703採用 FMラジオチューナークリック (CLICK-FM)は、シリコンラボラトリーズ社製のワンチップFMラジオチューナーIC、Si4703を搭載したFMラジオ受信ができるクリックボード(※1)です。電源電圧は3.3Vです。

※1:クリックボードは、mikroBUS規格のインターフェースを搭載した様々な機能性ボードの総称です。

制御は同期式シリアル通信のI2Cで行います。SCL及びSDA線はいずれも4.7kオームの抵抗でプルアップされています。

76MHz~108MHzのFM波を受信して復調することができます。出力段には2つの300mWオペアンプLM4864を搭載しており十分な音声レベルの出力を得ることができます。

Si4703はボリュームコントロール機能があるので、I2C通信で音声出力のレベルを設定できます。通常は-28dBから0dBまで指定できます。なおVOLEXTレジスタを1にセットすると-58dBから-30dBの範囲で指定できるようになります。

本体には3.5mm径のステレオジャックが搭載されています。ここに1m程度のイヤホンケーブル等を接続すると、その線がアンテナ線として機能します。必ずイヤホンやスピーカーケーブルを接続してご使用ください。

 

  • ワールドワイドなFMバンド設定、76~108MHz
  • シークチューニング機能
  • 自動ゲインコントロール(ACG)内蔵
  • 優れた過負荷耐性
  • アダプティブノイズサスペンション機能
  • 自動周波数コントロール機能
  • 電子ボリューム機能
  • LM4864オペアンプ搭載 (L,R両方)
  • アンテナ兼用の3.5mmイヤホンジャック
  • I2C通信による制御(2線式か3線式かの選択可能)
  • 電源電圧は3.3V

 

使い方の詳細はSi4703のデータシートをお読み下さい。


■本体回路図

クリックして拡大できます。


■インターフェイス端子(mikroBUS規格)

 

機能詳細 ピン名 Mikrobus logo.png ピン名 機能詳細
Si4703のGPIO2へ  GPIO2 1 AN PWM 16 NC
#リセットピン  #RST 2 RST INT 15 GPIO1 Si4703のGPIO1へ 
#セレクトイネーブル #SEN 3 CS TX 14 NC
NC 4 SCK RX 13 NC
NC 5 MISO SCL 12 SCL シリアルI2C クロック
NC 6 MOSI SDA 11 SDA シリアルI2C データ
+3.3V 電源入力 3.3V 7 +3.3V +5V 10 NC
Ground GND 8 GND GND 9 GND Ground

 

※NCは未使用ピンです。#記号は負論理です。

Si4703のGPIO1/2/3をデジタルLowに設定して消費電流を低減します。このレジスタ内の他のすべてのビットは、最後に読み取られた値に維持される必要があります。

 

3  #SEN 3線式の制御にした場合に使用します。2線式の場合にはSCLの立ち上がりエッジでSENピンがLレベルに設定されると転送が開始されます。データの最後では、SENピンをハイにした後、次のSCLの立ち下がりエッジで、データがラッチされます。(下図参照)

データシートの8ページ参照

11 I2C SDA I2Cスレーブデータ線 内部で4.7kオームでプルアップ済み
・7ビットI2Cスレーブアドレス:0x20 (固定)
・100KHz又は400KHz
12 I2C SCL I2Cスレーブクロック線  内部で4.7kオームでプルアップ済み
1,15 GPIO2

GPIO1

デフォルトではハイインピーダンスになっています。レジスタの設定で入出力方向及び論理を変えられます。詳しくはデータシートの14ページを参照下さい。

 


■I2C通信とレジスタ

本モジュールに搭載のを2線式で使用する場合のI2Cの7ビットスレーブアドレスは0x10に固定されています。Readで1を加算、Writeで0を加算します。

3線式の場合のタイミングダイアグラム

 

2線式の場合のタイミングダイアグラム

下記2線式での内容を解説します。(3線式についてはデータシートを参照ください。)

2線式、3線式どちらを使うかは本体電源投入時のピンの状態により決まります。2線式I2C通信を実行するには、本体の電源投入時にSDIOピン(I2CのSDAピン、11ピン)をLレベルにします。#SENピン(3ピン)をHレベルにすると、2線式になります。フローチャートは下記の通りです。(GPIO3は本ボードではGNDの方(=Noの方)に進みます)

レジスタ番地は、「Writeの場合」にはレジスタ0x02の上位バイトから始まり続いてレジスタ0x02の下位バイトとなります。そして、自動的にインクリメントされ0x03の上位バイト→下位バイト→0x04の上位バイト→下位バイト・・・と続きます。レジスタの最後の番地まで到達すると0x00に戻ります。I2Cのストップコンディションで終了と見なされます。

「Readの場合」にはレジスタ0x0Aの上位バイトから始まり続いてレジスタ0x0Aの下位バイトとなり、同様にインクリメントされます。レジスタの最後の番地まで到達すると0x00に戻ります。I2Cのストップコンディションで終了と見なされます。

 

例えばレジスタ0x07に値を書き込みたい場合には、レジスタ0x07を直接指定する方法はないので、レジスタ0x02からスタートして、10進めて(マイコンの場合には10回I2C_Writeを実行して)(0x02hの上位→下位→0x03の上位→下位・・・)0x07の上位バイトに到達して、そこから上位、下位の順番で書き込むことになります。この辺りはプログラムに工夫が必要となります。実際のプログラム例は本ページの例を参考にしてください。

レジスタ一覧は、データシートの22ページに記載があります。

 


■設定とプログラミング例

日本で使用する場合には特に0x05レジスタでバンド設定と、スペーシング設定を日本にする必要があります。

0x05レジスタの7:6ビット BAND[1:0]がバンドの国設定です。

BAND[1:0] Band select
00 87.5–108 MHz (US / Europe, Default)
01 76-108MHz(Japan wide band)
10 76-90MHz(Japan)

 

0x05レジスタの5:4ビット SPACE[1:0]がスペーシング(チャンネル間隔)の国設定です。

SPACE[1:0] Channel spacing
00 200 kHz (US / Australia, Default)
01 100kHz(Europe,Japan)
10 50kHz

 

よっていずれもレジスタの値を 01 にする必要があります。この設定を誤るとデフォルトの設定となってしまいFMラジオの受信ができません。実際の設定値はプログラム例で確認ください。

選局するFMラジオ局の周波数は、次の式で計算します。

Freq(MHz) = 0.1 x Channel + 76

最初の0.1MHzはスペーシング値、最後の76MHzはバンドの最小値となります。例えば東京の場合80.0MHzは東京FMですが、その場合には次のようになります。

80.0(MHz) = 0.1 × CH + 76

CH = 40  となるので設定値は40となります。この辺りの実装方法もプログラム例でご確認下さい。

 


プログラムのポイント

・レジスタに書き込むデータを配列として予め用意しておく。

・レジスタに書き込まれている既存の内容は新しいデータを書き込む前に一度コピーしておく。

・レジスタに値を書き込む場合には、必ず0x02レジスタから始まるので、目的のレジスタまでインクリメントする。

・レジスタの値を読む場合には、必ず0x0Aレジスタから始まるので、目的のレジスタまでインクリメントする。

・レジスタは16ビット幅なので、上位ビット→下位ビットの順で書き込む(読み込む)。

 

 

※参考

FM変調とは?
FM変調とは、変調する信号の振幅に応じて搬送波の周波数を変化させる方法です。よって変調波の周波数は連続的に変化します。FM変調では搬送波周波数を中心として、変調信号とは違うスペクトラムが発生するので非線形変調となります。