0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RTC6218(RL508)をArduinoで制御 DSP FMラジオモジュール 

Posted at

#はじめに

  • 電子工作の初心者としてDSPラジオに挑戦中。
  • 今回はマイナーなCHIPに挑戦。データシートはあるが、作例はほとんど無く、少し苦労しました。日本国内では入手できなさそうなCHIPなので、参考にはならないと思いますが。
  • 今回のCHIPは外部からクロックを供給する必要あるため、32.768kHzの水晶発振回路を利用しています。他記事をご参照ください。

#Chipについて

  • 今回はRTC6218(RL508)。台湾のメーカー(RichWave)のようです。この会社のHPがありますが、そこにはRTC62XXシリーズの表記はあるのですが、本CHIP(RTC6218)は表記がありませんでした。
  • CHIP名なのですが、RL508という表記も見かけます。どちらの名前で検索してもデータシートは出てきます。
  • ChipはAliexpressで調達。20個で750円(送料込み)。小ロットのものが見つかりませんでした。
  • 他のモジュールで資料検索していた時に、本CHIPをみかけました。データシートはしっかりしていたので、挑戦してみることにしました。

#使用したもの

#DIP化

  • Chipが1.27ミリ(ハーフピッチ)なのではんだ付けはそれほど難しくありません。ピン数も少ないので。パスコン(0.1μF)を空中配線しています。
  • パスコン以外はそのままはんだ付けしています。本CHIPは出力コンデンサも不要で、そのままイヤフォンで聴けます。
    RTC6218_module.jpg

#配線

  • 他のモジュールと同様にArduinoとつなぐだけ。電源は3.3Vを使っています。
  • RCLKピンには、水晶発振回路からの出力を接続。ANTピンはアンテナです。
  • 添付画像ご参照ください。
    RTC6218_kairo.jpg

#I2C通信、Slaveアドレスについて

  • ArduinoのI2C Scanner によると、Slave addressは"0X64"でした。
  • I2C通信ですが、Si4702などと同様に、連続書込み/読み込みだけです。RDA5807Mの"0X10"と同様に、書き込みは02hから、読込は0Ahからとなり、レジスタの指定はできません。コード例などはこの記事を参照願います。

#コード作成のポイント

  • データシートに手順が書いてあるのですが、最初の"Initialize"が珍しい手順で、ここで苦労しました。
  • 「レジスタ0に0X96AAを書き込め」と書いてあるのですが、データシートによるとレジスタ0は"DEVICE ID"で、しかもRead Onlyの設定。こんなところに書き込み?
  • さらに、本CHIPは02hからしか書き込めないので、00hに書き込むには、02→03→・・→0F→00と書き込まなければならない。
  • ということで半信半疑で書き込んでみると、何とこれが正解。これで無事Initializeに成功しました。
  • 次にPower-Up。これは06hのCSR0_ENABLEを1、CSR0_DISABLEを0にすればよい。
  • 同じく、06hでクロック周波数(32.768kHz)を設定。
  • 次に音声関係を02hで設定。Mute0、Mono0、De50など。
  • 最後に、周波数を設定。Band、Spaceを選択して、03hに設定。この時、TUNEビット(03h[15])を1にする。
  • これで受信に成功すると思います。

#動作コード

  • 特定の周波数を書き込むシンプルなコード。連続書込みしかできないので、冗長なコードになっています。うまくWHILE文など使えば、簡明になるかも。
  • 連続書込みの時、目的のレジスタに到達するまでのレジスタは0を書き込んでいます。
  • レジスタに書き込むデータは、16進数、2進数、10進数が混在しています。この方がわかりやすそうだったので。
#include <Wire.h>

void setup() {
delay(50);
Wire.begin();
//Initialize 96AA->00h
Wire.beginTransmission(0x64); // slave address 0x64
Wire.write(0x00);      //02h 
Wire.write(0x00);      // 
Wire.write(0x00);      //03h 
Wire.write(0x00);      // 
Wire.write(0x00);      //4 
Wire.write(0x00);      // 
Wire.write(0x00);      //5 
Wire.write(0x00);      // 
Wire.write(0x00);      //6 
Wire.write(0x00);      // 
Wire.write(0x00);      //7 
Wire.write(0x00);      // 
Wire.write(0x00);      //8 
Wire.write(0x00);      // 
Wire.write(0x00);      //9 
Wire.write(0x00);      //  
Wire.write(0x00);      // A
Wire.write(0x00);      //  
Wire.write(0x00);      // B
Wire.write(0x00);      // 
Wire.write(0x00);      // C 
Wire.write(0x00);      //  
Wire.write(0x00);      // D
Wire.write(0x00);      //  
Wire.write(0x00);      // E
Wire.write(0x00);      //  
Wire.write(0x00);      // F
Wire.write(0x00);      // 
Wire.write(0x96);      // 00h  Initilize
Wire.write(0xAA);      //  
Wire.endTransmission();
delay(200);

//Power-up 06h 
Wire.beginTransmission(0x64); // slave address 0x64
Wire.write(0x00);      //2 
Wire.write(0x00);      // 
Wire.write(0x00);      //3 
Wire.write(0x00);      // 
Wire.write(0x00);      //4 
Wire.write(0x00);      // 
Wire.write(0x00);      //5 
Wire.write(0x00);      // 
Wire.write(0b10000000); //06h Enable1 Dis0
Wire.write(0b00000000); // clk32768
Wire.endTransmission();
delay(100);

//Audio, Frequency set. Tune1
Wire.beginTransmission(0x64);     // slave address 0x64
Wire.write(0b11010000); //02h Mute0 Mono0 DE50 
Wire.write(0b00000111); //  vol 0111
Wire.write(0b10010100); //03h Tune1 Band01 Space01
Wire.write(800-760);    //  80.0
//Wire.write(825-760);  //  82.5
Wire.endTransmission();
}

void loop() {
}

#おまけ

  • 本CHIPのような初期化の方法は初めてだったので、かなり戸惑いました。データシート通りと言えばそれまでなのですが。このような初期化の方法は一般的なのでしょうか…
  • 時々、本CHIPが動作しない時がありました。電源を抜き差ししたり、プログラムを2回走らせると、動作するようになります。起動方法にどこか問題があるのかもしれません。
  • 電源を乾電池経由にすると、ノイズが減少しました。PCからのノイズを拾いやすいのかもしれません。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?