LoginSignup
1
1

More than 3 years have passed since last update.

ロジックアナライザを試すその3(SPI)

Posted at

SPIをロジックアナライザで確認

こちらの続編で、今度はSPIを試す。

PulseView

今回はWindows版を使う。ここなどからDownload。設定については、その1その2と同じ。

SPI設定

プロトコルを選択する(下記”Add protocol decode”クリック)。
Procotol Select.png
すると、次のダイアログボックスが表示される。
SPI select.png
”SPI”とタイプして検索し、SPIをクリック。
HardSPI_LogiAnaSetting.png
ClockをD7、CSをD0、MOSIをD3、MISOをD4に割りあてる(未使用のピンは”Disable”に設定)。今回用いるSPIデバイス(A/Dコンバータ)のモードは”Mode 0,0”なので、”Clock polarity”および「Clock phase」は両方とも’0’となる。

対象デバイス

以前試したA/DコンバータMCP3008がSPIデバイス、A/Dコンバータの先に温度センサーがある。温度センサーはA/DコンバータのChannel 0に接続。

A/DコンバータMCP3008

データシートで次の部分が大事。
MCP3008Datasheet_Hard.png

ソースコード

こちらにあったコードを若干修正した程度(ありがとうございます!)。

#include <SPI.h>
#define SPI_CS 10
float Vref = 5.0 ;
SPISettings settings(1000000,MSBFIRST,SPI_MODE0);

void setup() {
  Serial.begin(9600);
  pinMode(SPI_CS, OUTPUT);
  SPI.begin();
}

void loop(){
  // SPI setting and write&read
  SPI.beginTransaction(settings);
  digitalWrite(SPI_CS, LOW);
  SPI.transfer(0b00000001);                 // Start bit 1
  byte highByte = SPI.transfer(0b10000000); // SingleEnd Channel 0
  byte lowByte = SPI.transfer(0x00);        // dummy
  digitalWrite(SPI_CS, HIGH);
  SPI.endTransaction();
  unsigned int dataCh0 = ((highByte & 0x03) << 8) + lowByte;

  // Conversion of read data according to MCP9700 spec
  float volts = dataCh0 * Vref / 1024;
  float temperature = (volts - 0.5) / 0.01; // : 500 mv at 0 degree and 10 mv / degree 
  Serial.println("dataCh0: " + String(dataCh0,HEX) + "  Voltage: " + String(volts,3));
  Serial.println("Temperature: " + String(temperature,2) + " degrees");
  Serial.println();
  delay(3000);
}

上述したデータシートを具現化している。
- SPI設定は1MHz、MSB First、モード0(Mode 0,0)
- CSをLow
- "Start bit" write
- "SingleEnd/Channel 0" write & 1バイトread
- Dummy write & 1バイトread
- CSをHigh

配線の様子


こちらと同じ。見えていないが、VccとGNDとはArduino側に接続されている。
(ロジアナ用に複数のワイヤーあり。)

結果

ロジックアナライザのデコード結果およびシリアルコンソール表示は次のとおり。

デジタル変換された値”9b”がどちらにも見えている。成功。

最後に

実は続きがあります。

1
1
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
1
1