AnalogDiscovery2のロジアナ機能で手始めにSPIの信号を測定しました。
ArduinoとMCP4922を使ってノコギリ波を出力し、AD2のScopeで出力波形、LogicでSPI信号を測定しました。
ブレッドボード配線
Arduinoのスケッチ <MCP4922_Test.ino>
#include <SPI.h> #define PIN_CS 10 // MCP4922のCSピン #define PIN_LDAC 9 // MCP4922のラッチピン SPISettings MCP4922Settings(1000000, MSBFIRST, SPI_MODE0); uint16_t cnt = 0; // MCP4922に出力 // parameter: v: 出力値(0 .. 4095) void MCP4922Write(int16_t v) { SPI.beginTransaction(MCP4922Settings); digitalWrite(PIN_LDAC, HIGH) ; digitalWrite(PIN_CS, LOW) ; SPI.transfer((v >> 8)| 0x30) ; SPI.transfer(v & 0xff) ; digitalWrite(PIN_CS, HIGH) ; digitalWrite(PIN_LDAC, LOW) ; SPI.endTransaction(); } void setup() { // MCP4922出力の初期化 pinMode(PIN_CS, OUTPUT); digitalWrite(PIN_CS, HIGH); // Initial High pinMode(PIN_LDAC, OUTPUT); SPI.begin(); } void loop() { MCP4922Write(cnt & 0x0FFF); cnt++; }
出力波形
SPI信号
SPI信号はデータの2バイト目:h00でトリガをかけています。Measurements機能でFrequencyを測定すると約27.7kHzになっています。MCP4922をArduino Unoで使うと出力波形のサンプリングレートはこのあたりが上限になります。(SPI CLock: 1MHzの場合)
0 件のコメント:
コメントを投稿