📄 spi.c
字号:
//-------------------------------------------------------------------------
//FileName : spi.c
//Created by : ZhengYanbo
//Created date: 2006.4.8
//Version : v1.0
//Fuction : hardware and software spi operations
//Comments : for vs1003 service
//-------------------------------------------------------------------------
#include "spi.h"
#include "vs1003.h"
#define SPI_clk_delay() #asm("nop")
//***************************************************************************
//Routine for reading a BYTE from MMC/SD-Card
unsigned char SPI_TransferBYTE(unsigned char data)
//***************************************************************************
{
SPDR=data;
while(!(SPSR & 0x80)){};
return (SPDR);
}
//############################################################################
//Software SPI Read
unsigned char SPI_Read_Byte(void)
//############################################################################
{
unsigned char Byte = 0;
unsigned char a;
//Software SPI
for (a=8; a>0; a--) //MSB First
{
SPI_SCK=0; //Clock Impulse (Low)
SPI_clk_delay(); //clock Delay
if(SPI_MISO > 0)
{
Byte |= (1<<(a-1));
}
else
{
Byte &=~(1<<(a-1));
}
SPI_SCK=1; //Clock Impulse (High)
SPI_clk_delay(); //clock Delay
}
//Return the value
return (Byte);
}
//############################################################################
//Software SPI Write
void SPI_Write_Byte(unsigned char Byte)
//############################################################################
{
unsigned char i;
//Software SPI
for (i=0; i<8; i++) //MSB First
{
if (((Byte >> (7-i)) & 0x01)==0x01)
{
SPI_MOSI=1; //Set Output High
}
else
{
SPI_MOSI=0; //Set Output Low
}
SPI_SCK=0; //Clock Impulse (LOW)
SPI_clk_delay();
SPI_SCK=1; //Clock Impulse(High)
SPI_clk_delay(); //clock Delay
}
SPI_MOSI=1; //set output High
}
//end of spi.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -