Simple SPI test Application, intended to be used with SSS to send data between 2 mbed devices

Dependencies:   mbed

Committer:
picnic
Date:
Fri Aug 26 10:10:11 2011 +0000
Revision:
0:ec8b56c64406

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
picnic 0:ec8b56c64406 1 #include "mbed.h"
picnic 0:ec8b56c64406 2
picnic 0:ec8b56c64406 3 // Simple SPI Master
picnic 0:ec8b56c64406 4 // Simply sends incrementing bytes and receives the echo from the previous one
picnic 0:ec8b56c64406 5
picnic 0:ec8b56c64406 6 SPI spi(p5, p6, p7); // mosi, miso, sclk
picnic 0:ec8b56c64406 7 DigitalOut cs(p8);
picnic 0:ec8b56c64406 8
picnic 0:ec8b56c64406 9 Serial pc(USBTX, USBRX); // tx, rx
picnic 0:ec8b56c64406 10
picnic 0:ec8b56c64406 11 #define SINGLE 0
picnic 0:ec8b56c64406 12 #define CONTINUOUS 1
picnic 0:ec8b56c64406 13
picnic 0:ec8b56c64406 14 long c = 0;
picnic 0:ec8b56c64406 15 unsigned char r = 0;
picnic 0:ec8b56c64406 16 unsigned char v = 0;
picnic 0:ec8b56c64406 17 int ch;
picnic 0:ec8b56c64406 18
picnic 0:ec8b56c64406 19 void sendbyte() {
picnic 0:ec8b56c64406 20 // Select the device by seting chip select low
picnic 0:ec8b56c64406 21 cs = 0;
picnic 0:ec8b56c64406 22 v = c & 0xff;
picnic 0:ec8b56c64406 23 r = spi.write( v );
picnic 0:ec8b56c64406 24 // Deselect the device
picnic 0:ec8b56c64406 25 cs = 1;
picnic 0:ec8b56c64406 26
picnic 0:ec8b56c64406 27 pc.printf("%ld v=%02x\r\n", c, v);
picnic 0:ec8b56c64406 28 if (( c>0 ) && ( r!=(unsigned char)(v-1)) ) {
picnic 0:ec8b56c64406 29 pc.printf( " Echo error %02x!=%02x\r\n", v-1, r );
picnic 0:ec8b56c64406 30 pc.printf("Press any key to continue\r\n");
picnic 0:ec8b56c64406 31 ch = pc.getc();
picnic 0:ec8b56c64406 32 }
picnic 0:ec8b56c64406 33 c++;
picnic 0:ec8b56c64406 34 }
picnic 0:ec8b56c64406 35
picnic 0:ec8b56c64406 36 int main() {
picnic 0:ec8b56c64406 37 int mode = 0;
picnic 0:ec8b56c64406 38
picnic 0:ec8b56c64406 39 pc.printf("Simple SPI Master Test\r\n");
picnic 0:ec8b56c64406 40 pc.printf("Uses MBED's SPI library (1 byte in - 1 byte out)\r\n");
picnic 0:ec8b56c64406 41 pc.printf("\r\n C : Toggle continuous mode\r\n" );
picnic 0:ec8b56c64406 42 pc.printf(" T : Make a single transmission\r\n" );
picnic 0:ec8b56c64406 43
picnic 0:ec8b56c64406 44 // Setup the spi
picnic 0:ec8b56c64406 45 // second edge capture, with a 1MHz clock rate
picnic 0:ec8b56c64406 46 spi.format(8,3);
picnic 0:ec8b56c64406 47 spi.frequency(100000);
picnic 0:ec8b56c64406 48
picnic 0:ec8b56c64406 49 while (1) {
picnic 0:ec8b56c64406 50 if ( mode ) {
picnic 0:ec8b56c64406 51 wait_ms( 1 );
picnic 0:ec8b56c64406 52 sendbyte();
picnic 0:ec8b56c64406 53 }
picnic 0:ec8b56c64406 54 if ( pc.readable() ) {
picnic 0:ec8b56c64406 55 ch = pc.getc();
picnic 0:ec8b56c64406 56 switch ( ch ) {
picnic 0:ec8b56c64406 57 case 'C':
picnic 0:ec8b56c64406 58 case 'c':
picnic 0:ec8b56c64406 59 mode = ! mode;
picnic 0:ec8b56c64406 60 break;
picnic 0:ec8b56c64406 61 case 'T':
picnic 0:ec8b56c64406 62 case 't':
picnic 0:ec8b56c64406 63 sendbyte();
picnic 0:ec8b56c64406 64 break;
picnic 0:ec8b56c64406 65 }
picnic 0:ec8b56c64406 66 }
picnic 0:ec8b56c64406 67 }
picnic 0:ec8b56c64406 68 }