SPI_slave_frdm

Dependencies:   mbed-src

Fork of SPI_slave_lpc1114fn28 by TEAMUSB

Committer:
armdran
Date:
Wed Mar 18 08:33:44 2015 +0000
Revision:
0:84a7343cd5c1
Child:
1:f0831940e436
simple request / response works

Who changed what in which revision?

UserRevisionLine numberNew contents of line
armdran 0:84a7343cd5c1 1 #include "mbed.h"
armdran 0:84a7343cd5c1 2
armdran 0:84a7343cd5c1 3 //SPI Slave
armdran 0:84a7343cd5c1 4 SPISlave device(dp2, dp1, dp6, dp25); // mosi, miso, sclk, ssel
armdran 0:84a7343cd5c1 5 Serial pc(USBTX, USBRX);
armdran 0:84a7343cd5c1 6
armdran 0:84a7343cd5c1 7 int main() {
armdran 0:84a7343cd5c1 8 pc.baud(9600);
armdran 0:84a7343cd5c1 9 //pc.format(8, SerialBase::None, 1);
armdran 0:84a7343cd5c1 10 device.frequency(1000000);
armdran 0:84a7343cd5c1 11 device.format(8, 0);
armdran 0:84a7343cd5c1 12 device.reply(0x00);
armdran 0:84a7343cd5c1 13
armdran 0:84a7343cd5c1 14 int i = 0;
armdran 0:84a7343cd5c1 15
armdran 0:84a7343cd5c1 16 while(1) {
armdran 0:84a7343cd5c1 17
armdran 0:84a7343cd5c1 18 uint8_t instruction = 0xAB;
armdran 0:84a7343cd5c1 19
armdran 0:84a7343cd5c1 20 pc.printf("waiting for instruction");
armdran 0:84a7343cd5c1 21 device.reply(0xFF);
armdran 0:84a7343cd5c1 22
armdran 0:84a7343cd5c1 23 while(!device.receive()) {
armdran 0:84a7343cd5c1 24 if(i++ % 10000 == 0) {
armdran 0:84a7343cd5c1 25 printf(".");
armdran 0:84a7343cd5c1 26 }
armdran 0:84a7343cd5c1 27 }
armdran 0:84a7343cd5c1 28 pc.printf("\r\n");
armdran 0:84a7343cd5c1 29 instruction = device.read(); // Read byte from master
armdran 0:84a7343cd5c1 30
armdran 0:84a7343cd5c1 31 if(instruction == 0xFF) {
armdran 0:84a7343cd5c1 32 continue;
armdran 0:84a7343cd5c1 33 }
armdran 0:84a7343cd5c1 34
armdran 0:84a7343cd5c1 35 uint8_t reply = instruction + 0x10;
armdran 0:84a7343cd5c1 36 device.reply(reply);
armdran 0:84a7343cd5c1 37
armdran 0:84a7343cd5c1 38 pc.printf("waiting for reply signal");
armdran 0:84a7343cd5c1 39 while(!device.receive()) {
armdran 0:84a7343cd5c1 40 if(i++ % 10000 == 0) {
armdran 0:84a7343cd5c1 41 printf(".");
armdran 0:84a7343cd5c1 42 }
armdran 0:84a7343cd5c1 43 }
armdran 0:84a7343cd5c1 44 pc.printf("\r\n");
armdran 0:84a7343cd5c1 45
armdran 0:84a7343cd5c1 46 uint8_t ignore = device.read();
armdran 0:84a7343cd5c1 47
armdran 0:84a7343cd5c1 48 pc.printf("instruction: 0x%X; reply: 0x%X; dummy_instruction: 0x%X\r\n", instruction, reply, ignore);
armdran 0:84a7343cd5c1 49
armdran 0:84a7343cd5c1 50 }
armdran 0:84a7343cd5c1 51
armdran 0:84a7343cd5c1 52 }