spi

Dependents:   MusicShield

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers spi.c Source File

spi.c

00001 #include "spi.h"
00002 
00003 SPI device(SPI_MOSI, SPI_MISO, SPI_SCK);
00004  
00005 //SPI Init Code,visit SD Card/W25Q64/NRF24L01                         
00006 //SPI PIN Init
00007 void SPI_Init(void)
00008 {    
00009 
00010     //SPI2 clock frequence less than 36Mhz
00011     SPI.frequency(36000000/256);
00012     SPI_ReadWriteByte(0xff);//start transfer
00013 }   
00014 
00015 
00016 //SPI Speed Setting 
00017 //SpeedSet:0~7
00018 //SPI Speed = fAPB1/2^(SpeedSet+1)
00019 //APB1 clock usually is 36Mhz
00020 void SPI_SetSpeed(uint8_t SpeedSet)
00021 {
00022     SpeedSet&=0X07;         //limit
00023     SPI->CR1&=0XFFC7; 
00024     SPI->CR1|=SpeedSet<<3;  //setting SPI speed
00025     SPI->CR1|=1<<6;         //SPI device enabled 
00026 } 
00027 
00028 
00029 //SPI readWrite a Byte
00030 //TxData:the data to write
00031 //return:the data read back
00032 u8 SPI_ReadWriteByte(uint8_t TxData)
00033 {       
00034     u16 retry=0;                 
00035     while((SPI->SR&1<<1)==0)        //waiting sending array is empty
00036     {
00037         retry++;
00038         if(retry>=0XFFFE)return 0;  //out of time quit
00039     }             
00040     SPI->DR=TxData;             //send one byte
00041     retry=0;
00042     while((SPI->SR&1<<0)==0)        //waiting received a byte
00043     {
00044         retry++;
00045         if(retry>=0XFFFE)return 0;  //out of time quit
00046     }                               
00047     return SPI->DR;                 //return the data read      
00048 }
00049 
00050 
00051 
00052 
00053 
00054 
00055 
00056