Chris BAYLEY / Mbed 2 deprecated SPI-2-USB

Dependencies:   mbed

Committer:
cbayley
Date:
Mon Jan 30 23:08:52 2012 +0000
Revision:
0:1ca47c273d0f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cbayley 0:1ca47c273d0f 1 // Relay bytes received as SPI slave to PC-USB-Serial
cbayley 0:1ca47c273d0f 2
cbayley 0:1ca47c273d0f 3 #include "mbed.h"
cbayley 0:1ca47c273d0f 4 #include "MODSERIAL.h"
cbayley 0:1ca47c273d0f 5
cbayley 0:1ca47c273d0f 6 //SPISlave slave(p5, NC, p7, p8);
cbayley 0:1ca47c273d0f 7 SPISlave slave(p11, NC, p13, p14);
cbayley 0:1ca47c273d0f 8 MODSERIAL pc(USBTX,NC,1024,0);
cbayley 0:1ca47c273d0f 9 //Serial pc(USBTX,NC);
cbayley 0:1ca47c273d0f 10 DigitalOut ledTX(LED1);
cbayley 0:1ca47c273d0f 11 DigitalOut ledRX(LED2);
cbayley 0:1ca47c273d0f 12 DigitalOut ledOV(LED4);
cbayley 0:1ca47c273d0f 13 Timeout toRXLed;
cbayley 0:1ca47c273d0f 14
cbayley 0:1ca47c273d0f 15
cbayley 0:1ca47c273d0f 16 #define fSPI (5000000)
cbayley 0:1ca47c273d0f 17 #define BAUD (115200)
cbayley 0:1ca47c273d0f 18
cbayley 0:1ca47c273d0f 19
cbayley 0:1ca47c273d0f 20 void offRXLed(void)
cbayley 0:1ca47c273d0f 21 {
cbayley 0:1ca47c273d0f 22 ledRX = 0;
cbayley 0:1ca47c273d0f 23 }
cbayley 0:1ca47c273d0f 24
cbayley 0:1ca47c273d0f 25 void onRX(void)
cbayley 0:1ca47c273d0f 26 {
cbayley 0:1ca47c273d0f 27 ledRX = 1;
cbayley 0:1ca47c273d0f 28 toRXLed.attach(offRXLed,0.1);
cbayley 0:1ca47c273d0f 29 }
cbayley 0:1ca47c273d0f 30
cbayley 0:1ca47c273d0f 31 // This function is called when a character goes from the TX buffer
cbayley 0:1ca47c273d0f 32 // to the Uart THR FIFO register.
cbayley 0:1ca47c273d0f 33 void txCallback(MODSERIAL_IRQ_INFO *q) {
cbayley 0:1ca47c273d0f 34 ledTX = 1;
cbayley 0:1ca47c273d0f 35 }
cbayley 0:1ca47c273d0f 36
cbayley 0:1ca47c273d0f 37 // This function is called when TX buffer goes empty
cbayley 0:1ca47c273d0f 38 void txEmpty(MODSERIAL_IRQ_INFO *q) {
cbayley 0:1ca47c273d0f 39 ledTX = 0;
cbayley 0:1ca47c273d0f 40 }
cbayley 0:1ca47c273d0f 41
cbayley 0:1ca47c273d0f 42 // This function is called when TX buffer is Overrun
cbayley 0:1ca47c273d0f 43 void txOVR(MODSERIAL_IRQ_INFO *q) {
cbayley 0:1ca47c273d0f 44 ledOV = 1;
cbayley 0:1ca47c273d0f 45 }
cbayley 0:1ca47c273d0f 46
cbayley 0:1ca47c273d0f 47
cbayley 0:1ca47c273d0f 48 int main()
cbayley 0:1ca47c273d0f 49 {
cbayley 0:1ca47c273d0f 50 pc.baud(BAUD);
cbayley 0:1ca47c273d0f 51 slave.frequency(fSPI);
cbayley 0:1ca47c273d0f 52 pc.attach(&txEmpty, MODSERIAL::TxEmpty);
cbayley 0:1ca47c273d0f 53 pc.attach(&txCallback, MODSERIAL::TxIrq);
cbayley 0:1ca47c273d0f 54 pc.attach(&txOVR, MODSERIAL::TxOvIrq);
cbayley 0:1ca47c273d0f 55
cbayley 0:1ca47c273d0f 56 pc.printf("\n==== SPI 2 USB ready... ===\n");
cbayley 0:1ca47c273d0f 57
cbayley 0:1ca47c273d0f 58 while(1)
cbayley 0:1ca47c273d0f 59 {
cbayley 0:1ca47c273d0f 60 while ( !slave.receive() );
cbayley 0:1ca47c273d0f 61 {
cbayley 0:1ca47c273d0f 62 pc.putc( slave.read() ); // Read byte from master
cbayley 0:1ca47c273d0f 63 onRX();
cbayley 0:1ca47c273d0f 64 }
cbayley 0:1ca47c273d0f 65 }
cbayley 0:1ca47c273d0f 66 }