2013/12/14からのアクセス回数 27726
SPIインタフェースを持つ、12-bit DAC(デジタル・アナログ変換)MCP4922を使ってみます。 *1
DAコンバータ MCP4922を利用しD/A変換を行う の例題を実際にArduinoで動かしながら、動作を確認していきます(ほとんど物まねですみません)。
MCP4922のSPIインタフェースでは、12-bitのデジタル信号の他に、bit12から15 に制御用のデータを追加しています。
Arduinoとの接続では、VoutAにLEDを接続して動きをみてみます。 *2
動作確認用スケッチは、上記のサイトのプログラムをそのまま使わせて頂きます。
#include "pins_arduino.h"
#include <SPI.h>
#define LDAC 9 // ラッチ動作出力ピン
void setup() {
// 制御するピンは全て出力に設定する
pinMode(LDAC,OUTPUT) ;
// SPIの初期化処理を行う
SPI.begin() ; // SPIを行う為の初期化
SPI.setBitOrder(MSBFIRST) ; // ビットオーダー
SPI.setClockDivider(SPI_CLOCK_DIV8) ;// クロック(CLK)をシステムクロックの1/8で使用(16MHz/8)
SPI.setDataMode(SPI_MODE0) ; // クロック極性0(LOW) クロック位相0
}
void loop() {
int i ;
for (i=0 ; i < 4096 ; i=i+4) {
digitalWrite(LDAC,HIGH) ;
digitalWrite(SS,LOW) ;
SPI.transfer((i >> 8)|0x30) ; // Highバイト(0x30=OUTA/BUFなし/1x/シャットダウンなし)
SPI.transfer(i & 0xff) ; // Lowバイトの出力
digitalWrite(SS,HIGH) ;
digitalWrite(LDAC,LOW) ; // ラッチ信号を出す
}
}
スケッチを動かしてみます。LEDが点灯し、よく見ると明かりが細かく振動しているように見えます。
期待したとおりのノコギリ波が生成されているかオシロスコープで見てみました。
きちんとノコギリの波形がでています。これで無事MCP4922の使い方を確認できました。
皆様のご意見、ご希望をお待ちしております。