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.
SPIDebug.cpp@0:0f32ac84dca5, 2012-04-10 (annotated)
- Committer:
- davervw
- Date:
- Tue Apr 10 04:42:12 2012 +0000
- Revision:
- 0:0f32ac84dca5
SPIDebug library initial commit
Who changed what in which revision?
User | Revision | Line number | New 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 | } |