SPI_slave_frdm
Dependencies: mbed-src
Fork of SPI_slave_lpc1114fn28 by
main.cpp@0:84a7343cd5c1, 2015-03-18 (annotated)
- 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?
User | Revision | Line number | New 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 | } |