spi

Dependents:   MusicShield

spi.c

Committer:
Jackson_lv
Date:
2015-07-13
Revision:
0:4a8f916ef7b5

File content as of revision 0:4a8f916ef7b5:

#include "spi.h"

SPI device(SPI_MOSI, SPI_MISO, SPI_SCK);
 
//SPI Init Code,visit SD Card/W25Q64/NRF24L01						  
//SPI PIN Init
void SPI_Init(void)
{	 

	//SPI2 clock frequence less than 36Mhz
	SPI.frequency(36000000/256);
	SPI_ReadWriteByte(0xff);//start transfer
}   


//SPI Speed Setting 
//SpeedSet:0~7
//SPI Speed = fAPB1/2^(SpeedSet+1)
//APB1 clock usually is 36Mhz
void SPI_SetSpeed(uint8_t SpeedSet)
{
	SpeedSet&=0X07;			//limit
	SPI->CR1&=0XFFC7; 
	SPI->CR1|=SpeedSet<<3;	//setting SPI speed
	SPI->CR1|=1<<6; 		//SPI device enabled 
} 


//SPI readWrite a Byte
//TxData:the data to write
//return:the data read back
u8 SPI_ReadWriteByte(uint8_t TxData)
{		
	u16 retry=0;				 
	while((SPI->SR&1<<1)==0)		//waiting sending array is empty
	{
		retry++;
		if(retry>=0XFFFE)return 0; 	//out of time quit
	}			  
	SPI->DR=TxData;	 	  		//send one byte
	retry=0;
	while((SPI->SR&1<<0)==0) 		//waiting received a byte
	{
		retry++;
		if(retry>=0XFFFE)return 0;	//out of time quit
	}	  						    
	return SPI->DR;          		//return the data read	    
}