SPI有四种工作模式,根据所用模块进行选用,一般为模块0和模块3
采样一般为主机对从机进行数据采集,即为读取数据。
模式3时序图:
开始信号:对应模块cs线拉低
终止信号:对应模块cs线拉高
cpha = 1;cpol=1,即初始sck高电平,数据在第二个沿采集,在第一个沿发送。
核心代码:
一般spi收发信息不会同时进行,可以分开写此函数。
uint8_t spi_data(uint8_t data)
{
u8 buf=0;
u8 i;
for(i = 0;i<8;i++)
{
SPI_SCLK = 0;
if(data&0x80)
{
MOSI=1;
}
else
{
MOSI=0;
}
data <<=1;
SPI_SCLK = 1;
buf <<=1;
if(MISO == 1)
{
buf |= 0x1;
}
}
return buf;
}