#はじめに
- DSPラジオでは久しぶりの投稿。QN8035の記事で、QN8065も投稿すると書いておきながら、放置していたので、本記事を投稿。
- 当時のノートを見ながら動作確認。一応、今回も動作は確認できました。
- 投稿内容は簡単になってます。
- 今回のCHIPは外部からクロックを供給する必要あるため、32.768kHzの水晶発振回路を利用しています。他記事をご参照ください。
- 本CHIPはQN8035と似ていますので、QN8035の記事も参照願います。
#Chipについて
- QN8065はQN8035とほぼ同じです。違いは以下の2点。
- 出力コンデンサが必要です。データシートには4.7μFと出ていますが適当な大きさで大丈夫だと思います。
- 内部レジスタ: QN8035では14hに書き込んでいたものを、01hに書き込めばよい。
- データシートが心許ない。Aitendoさんの商品ページにもリンクがあるのですが、内部レジスタの記載がない。どこかに詳細なデータシートはあるのでしょうか。
#使用したもの
- QN8065
- AitendoさんのDIP化基板
- IC(QN8065)のデータシート 検索してください。
- パスコン 0.1μF ピン2とピン6の間
- Arduino Uno互換機(ELEGOO)
- 32.768kHzの水晶発振回路
#DIP化
- 適当な基盤を使ってください。パスコン(0.1μF)を空中配線しています。
- 画像は割愛。
#配線
ピン | 機能 | ピン | 機能 |
---|---|---|---|
1 | アンテナ | 8 | 音声右 |
2 | GND | 7 | 音声左 |
3 | SCL | 6 | VCC |
4 | SDA | 5 | 外部クロック |
- 他のモジュールと同様にArduinoとつなぐだけ。電源は3.3Vを使っています。
- 外部クロックピンには、水晶発振回路からの出力を接続。
- 画像は割愛。
#I2C通信、Slaveアドレスについて
- Slave addressは"0X10"でした。
- I2C通信は、普通のコードで読み書きともOK。QN8035と同様に、各レジスタが1バイト。
#コード作成のポイント
- QN8035とほぼ同じなので、当該記事をご参照ください。レジスタ構成もほぼ同じと考えて良さそうです。
- QN8035で14hに書き込んでいたものを、本CHIPでは01hに書き込めばOKです。
#動作コード
- 特定の周波数を書き込むシンプルなコード。レジスタの書き込みにWhile文を使っています。
#include <Wire.h>
const unsigned int HW_Reg[]=
{
0x00,0x80, // initialize
0x00,0x01, // idle, seek0
0x07,0x90, //80.0
0x0a,0x79, //
//0x07,0xC2, //82.5
//0x0a,0x79, //
0x00,0x11, // receive, seek0
0x01,0x07, //mute0,de50,vol 111
0xff,0xff,
};
void setup() {
// put your setup code here, to run once:
Wire.begin();
int i=0;
while (HW_Reg[i] !=0xff) {
Wire.beginTransmission(0x10); // slave address 0x10
Wire.write(HW_Reg[i]); // Register i
Wire.write(HW_Reg[i+1]); // data
Wire.endTransmission(); // Stop bit
i+=2;
delay(100);
}
}
void loop() {
}
#おまけ
- DSPチップを触るのは久しぶりでしたが、何とか動作確認もできました。ちゃんと音声が出てくるとやはりうれしいですね。