Shows SPI activity. Replace SPI with SPIDebug, and replace chip select's DigitalOutput with CSDebug. Outputs debug info on stdout. Currently only outputs 8-bit debug info. Easy enough to change that if your SPI debug uses a larger data width.

Dependents:   SST25VF064C

Committer:
davervw
Date:
Tue Apr 10 04:42:12 2012 +0000
Revision:
0:0f32ac84dca5
SPIDebug library initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
davervw 0:0f32ac84dca5 1 ///////////////////////////////////////////////////////////////////////////////
davervw 0:0f32ac84dca5 2 // SPIDebug.h
davervw 0:0f32ac84dca5 3 //
davervw 0:0f32ac84dca5 4 // COPYRIGHT (c) 2012 by David Van Wagner
davervw 0:0f32ac84dca5 5 //
davervw 0:0f32ac84dca5 6 // dave@vanwagner.org
davervw 0:0f32ac84dca5 7 // http://techwithdave.blogspot.com
davervw 0:0f32ac84dca5 8 //
davervw 0:0f32ac84dca5 9 // License: Creative Commons Attribution-ShareAlike 3.0 Unported License
davervw 0:0f32ac84dca5 10 // http://creativecommons.org/licenses/by-sa/3.0/
davervw 0:0f32ac84dca5 11 ///////////////////////////////////////////////////////////////////////////////
davervw 0:0f32ac84dca5 12
davervw 0:0f32ac84dca5 13 #include "SPIDebug.h"
davervw 0:0f32ac84dca5 14
davervw 0:0f32ac84dca5 15 bool SPIDebug::debug = true; // default on
davervw 0:0f32ac84dca5 16
davervw 0:0f32ac84dca5 17 SPIDebug::SPIDebug(PinName mosi, PinName miso, PinName sclk, const char *name)
davervw 0:0f32ac84dca5 18 {
davervw 0:0f32ac84dca5 19 if (debug)
davervw 0:0f32ac84dca5 20 printf("SPI(%08x, %08x, %08x, %s)\n", mosi, miso, sclk, name);
davervw 0:0f32ac84dca5 21 spi = new SPI(mosi, miso, sclk, name);
davervw 0:0f32ac84dca5 22 }
davervw 0:0f32ac84dca5 23
davervw 0:0f32ac84dca5 24 SPIDebug::~SPIDebug()
davervw 0:0f32ac84dca5 25 {
davervw 0:0f32ac84dca5 26 delete spi;
davervw 0:0f32ac84dca5 27 }
davervw 0:0f32ac84dca5 28
davervw 0:0f32ac84dca5 29 void SPIDebug::format(int bits, int mode)
davervw 0:0f32ac84dca5 30 {
davervw 0:0f32ac84dca5 31 if (debug)
davervw 0:0f32ac84dca5 32 printf("SPI.format(%d, %d)\n", bits, mode);
davervw 0:0f32ac84dca5 33 spi->format(bits, mode);
davervw 0:0f32ac84dca5 34 }
davervw 0:0f32ac84dca5 35
davervw 0:0f32ac84dca5 36 void SPIDebug::frequency(int hz)
davervw 0:0f32ac84dca5 37 {
davervw 0:0f32ac84dca5 38 if (debug)
davervw 0:0f32ac84dca5 39 printf("SPI.frequency(%d)\n", hz);
davervw 0:0f32ac84dca5 40 spi->frequency(hz);
davervw 0:0f32ac84dca5 41 }
davervw 0:0f32ac84dca5 42
davervw 0:0f32ac84dca5 43 int SPIDebug::write(int value)
davervw 0:0f32ac84dca5 44 {
davervw 0:0f32ac84dca5 45 int result = spi->write(value);
davervw 0:0f32ac84dca5 46 if (debug)
davervw 0:0f32ac84dca5 47 printf(">%02x <%02x ", value, result);
davervw 0:0f32ac84dca5 48 return result;
davervw 0:0f32ac84dca5 49 }
davervw 0:0f32ac84dca5 50
davervw 0:0f32ac84dca5 51 CSDebug::CSDebug(PinName pin)
davervw 0:0f32ac84dca5 52 {
davervw 0:0f32ac84dca5 53 cs = new DigitalOut(pin);
davervw 0:0f32ac84dca5 54 }
davervw 0:0f32ac84dca5 55
davervw 0:0f32ac84dca5 56 CSDebug::~CSDebug()
davervw 0:0f32ac84dca5 57 {
davervw 0:0f32ac84dca5 58 delete cs;
davervw 0:0f32ac84dca5 59 }
davervw 0:0f32ac84dca5 60
davervw 0:0f32ac84dca5 61 void CSDebug::write(bool state)
davervw 0:0f32ac84dca5 62 {
davervw 0:0f32ac84dca5 63 cs->write(state);
davervw 0:0f32ac84dca5 64 if (SPIDebug::debug)
davervw 0:0f32ac84dca5 65 {
davervw 0:0f32ac84dca5 66 if (state == false)
davervw 0:0f32ac84dca5 67 printf("SPI CS\n");
davervw 0:0f32ac84dca5 68 else
davervw 0:0f32ac84dca5 69 printf("\n");
davervw 0:0f32ac84dca5 70 }
davervw 0:0f32ac84dca5 71 }