Nucleo_SPImaster_F042K6

Dependencies:   mbed

Fork of Nucleo_SPImaster_F042K6 by Dongki Bae

Committer:
bcup
Date:
Wed Oct 05 07:11:05 2016 +0000
Revision:
3:c6f8271b2d4e
Parent:
2:5311ad7c83e6
d

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bcup 0:24e90e3ca3f4 1 #include "mbed.h"
bcup 0:24e90e3ca3f4 2
bcup 0:24e90e3ca3f4 3 #define DEBUG_SPI
bcup 0:24e90e3ca3f4 4
bcup 0:24e90e3ca3f4 5 #ifdef DEBUG_SPI
bcup 0:24e90e3ca3f4 6 #define PRINTD(arg1,arg2...) printf(arg1,##arg2)
bcup 0:24e90e3ca3f4 7 #endif
bcup 0:24e90e3ca3f4 8
bcup 3:c6f8271b2d4e 9 SPI spi(PA_7,PA_6,PA_5); // MOSI, MISO, SCLK(CLK,SCK)
bcup 3:c6f8271b2d4e 10 DigitalOut cs(PA_4);
bcup 0:24e90e3ca3f4 11
bcup 3:c6f8271b2d4e 12 void SPI_INIT()
bcup 0:24e90e3ca3f4 13 {
bcup 3:c6f8271b2d4e 14 PRINTD("Set SPI init..\n");
bcup 3:c6f8271b2d4e 15 PRINTD("Set SPI format..\n");
bcup 3:c6f8271b2d4e 16 spi.format(8,0);
bcup 3:c6f8271b2d4e 17 PRINTD("Set frequency to default..\n");
bcup 3:c6f8271b2d4e 18 spi.frequency(1000000); // default 1MHz
bcup 0:24e90e3ca3f4 19 }
bcup 0:24e90e3ca3f4 20
bcup 3:c6f8271b2d4e 21 void SPI_Write()
bcup 0:24e90e3ca3f4 22 {
bcup 3:c6f8271b2d4e 23 char temp;
bcup 3:c6f8271b2d4e 24 int i,value;
bcup 3:c6f8271b2d4e 25 char response;
bcup 3:c6f8271b2d4e 26 char tx_cnt = -1;
bcup 3:c6f8271b2d4e 27 char rx_cnt = -1;
bcup 2:5311ad7c83e6 28 char tx_buffer[255]={0};
bcup 3:c6f8271b2d4e 29 char rx_buffer[255]={0};
bcup 3:c6f8271b2d4e 30 PRINTD("\n==========MASTER==========\n");
bcup 3:c6f8271b2d4e 31 PRINTD("DATA SEND START...\n");
bcup 3:c6f8271b2d4e 32 PRINTD("Lock SPI BUS..\n");
bcup 3:c6f8271b2d4e 33
bcup 0:24e90e3ca3f4 34 while(1)
bcup 0:24e90e3ca3f4 35 {
bcup 0:24e90e3ca3f4 36
bcup 0:24e90e3ca3f4 37 temp=getchar();
bcup 3:c6f8271b2d4e 38 tx_buffer[++tx_cnt]=temp;
bcup 0:24e90e3ca3f4 39 if(temp==0x0d)
bcup 0:24e90e3ca3f4 40 {
bcup 0:24e90e3ca3f4 41 tx_buffer[tx_cnt]=0;
bcup 0:24e90e3ca3f4 42 PRINTD("\nData send Finish...\n");
bcup 0:24e90e3ca3f4 43 for(i=0;i<=tx_cnt;++i)
bcup 0:24e90e3ca3f4 44 {
bcup 0:24e90e3ca3f4 45 PRINTD("%c[%02x]",tx_buffer[i],tx_buffer[i]);
bcup 0:24e90e3ca3f4 46 }
bcup 0:24e90e3ca3f4 47 PRINTD("\n\n");
bcup 3:c6f8271b2d4e 48 spi.lock();
bcup 0:24e90e3ca3f4 49 for(i=0;i<=tx_cnt;++i)
bcup 0:24e90e3ca3f4 50 {
bcup 0:24e90e3ca3f4 51 value=tx_buffer[i];
bcup 3:c6f8271b2d4e 52 PRINTD("[M]write[%d]=%c[%02x]\n",i,value,value);
bcup 3:c6f8271b2d4e 53 cs=0;
bcup 3:c6f8271b2d4e 54 response=spi.write(value);
bcup 3:c6f8271b2d4e 55 cs=-1;
bcup 3:c6f8271b2d4e 56 PRINTD("[M]receive=%c[%x]\n",response,response);
bcup 3:c6f8271b2d4e 57 rx_buffer[++rx_cnt]=response;
bcup 0:24e90e3ca3f4 58 }
bcup 3:c6f8271b2d4e 59 spi.unlock();
bcup 3:c6f8271b2d4e 60 for(i=0;i<255;++i)
bcup 0:24e90e3ca3f4 61 {
bcup 0:24e90e3ca3f4 62 tx_buffer[i]=0;
bcup 0:24e90e3ca3f4 63 }
bcup 3:c6f8271b2d4e 64 for(i=0;i<=tx_cnt;i++)
bcup 3:c6f8271b2d4e 65 {
bcup 3:c6f8271b2d4e 66 PRINTD("init_tx_buffer[%d]=%c\n",i,tx_buffer[i]);
bcup 3:c6f8271b2d4e 67 }
bcup 3:c6f8271b2d4e 68 tx_cnt=-1;
bcup 0:24e90e3ca3f4 69 }
bcup 0:24e90e3ca3f4 70 else
bcup 0:24e90e3ca3f4 71 {
bcup 0:24e90e3ca3f4 72 PRINTD("%c[%02x]",tx_buffer[tx_cnt],tx_buffer[tx_cnt]);
bcup 0:24e90e3ca3f4 73 }
bcup 0:24e90e3ca3f4 74 }
bcup 0:24e90e3ca3f4 75 }
bcup 0:24e90e3ca3f4 76
bcup 0:24e90e3ca3f4 77 int main()
bcup 0:24e90e3ca3f4 78 {
bcup 3:c6f8271b2d4e 79 int send_data;
bcup 3:c6f8271b2d4e 80 SPI_INIT();
bcup 3:c6f8271b2d4e 81
bcup 0:24e90e3ca3f4 82 while(1)
bcup 0:24e90e3ca3f4 83 {
bcup 3:c6f8271b2d4e 84 SPI_Write();
bcup 3:c6f8271b2d4e 85 }
bcup 3:c6f8271b2d4e 86 }