SPI maestro

Dependencies:   mbed

Committer:
jangelgm
Date:
Tue Mar 07 11:28:18 2017 +0000
Revision:
0:bf809e86f7da
SPI maestro

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jangelgm 0:bf809e86f7da 1 /*Program Example 7.2. Sets the mbed up as Master, and exchanges data with a slave,
jangelgm 0:bf809e86f7da 2 sending its own switch positions, and displaying those of the slave.
jangelgm 0:bf809e86f7da 3 */
jangelgm 0:bf809e86f7da 4 #include "mbed.h"
jangelgm 0:bf809e86f7da 5 SPI ser_port(p11, p12, p13); //mosi, miso, sclk
jangelgm 0:bf809e86f7da 6 DigitalOut red_led(p25); //red led
jangelgm 0:bf809e86f7da 7 DigitalOut green_led(p26); //green led
jangelgm 0:bf809e86f7da 8
jangelgm 0:bf809e86f7da 9 DigitalOut cs(p14); //this acts as “slave select”
jangelgm 0:bf809e86f7da 10
jangelgm 0:bf809e86f7da 11 DigitalIn switch_ip1(p5);
jangelgm 0:bf809e86f7da 12 DigitalIn switch_ip2(p6);
jangelgm 0:bf809e86f7da 13
jangelgm 0:bf809e86f7da 14 char switch_word ; //word we will send
jangelgm 0:bf809e86f7da 15 char recd_val; //value return from slave
jangelgm 0:bf809e86f7da 16
jangelgm 0:bf809e86f7da 17 int main()
jangelgm 0:bf809e86f7da 18 {
jangelgm 0:bf809e86f7da 19 while (1){
jangelgm 0:bf809e86f7da 20 //Default settings for SPI Master chosen, no need for further configuration
jangelgm 0:bf809e86f7da 21 //Set up the word to be sent, by testing switch inputs
jangelgm 0:bf809e86f7da 22 switch_word=0xa0; //set up a recognizable output pattern
jangelgm 0:bf809e86f7da 23 if (switch_ip1==1)
jangelgm 0:bf809e86f7da 24 switch_word=switch_word | 0x01; //OR in lsb
jangelgm 0:bf809e86f7da 25 if (switch_ip2==1)
jangelgm 0:bf809e86f7da 26 switch_word=switch_word | 0x02; //OR in next lsb
jangelgm 0:bf809e86f7da 27 cs = 0; //select slave
jangelgm 0:bf809e86f7da 28 recd_val=ser_port.write(switch_word); //send switch_word and receive data
jangelgm 0:bf809e86f7da 29 cs = 1;
jangelgm 0:bf809e86f7da 30 wait(0.01);
jangelgm 0:bf809e86f7da 31 //set leds according to incoming word from slave
jangelgm 0:bf809e86f7da 32 red_led=0; //preset both to 0
jangelgm 0:bf809e86f7da 33 green_led=0;
jangelgm 0:bf809e86f7da 34 recd_val=recd_val & 0x03; //AND out unwanted bits
jangelgm 0:bf809e86f7da 35 if (recd_val==1)
jangelgm 0:bf809e86f7da 36 red_led=1;
jangelgm 0:bf809e86f7da 37 if (recd_val==2)
jangelgm 0:bf809e86f7da 38 green_led=1;
jangelgm 0:bf809e86f7da 39 if (recd_val==3){
jangelgm 0:bf809e86f7da 40 red_led=1;
jangelgm 0:bf809e86f7da 41 green_led=1;
jangelgm 0:bf809e86f7da 42 }
jangelgm 0:bf809e86f7da 43 }
jangelgm 0:bf809e86f7da 44 }