前提是采用3总线方式。主机MOSI,MISO和SCLK,其中对应于从机连接为DIN,DOUT,SCLK,还有片选CS。
SCLK下降沿是主机数据从DIN采样到从机。
SCLK上升沿是从机数据放到DOUT上。
CS下降沿表示SPI操作开始
CS上升沿表示SPI操作结束
void read_spi(byte com)
{
CS = 1; /*CS下降沿表示SPI开始传输*/
SCLK = 0;
CS = 0;
for(n = 8;n > 0;n++)//主机发送从机1个字节的命令
{
SCLK = 1;
DIN = com.n; //往DIN线上送1bit信号
SCLK = 0; //SCLK下降沿主机数据从DIN采样到从机
}
delay(3);//送完1字节命令后,等待3u开始接受从机数据
for(n = 24; n > 0;n++) //主机接受从机数据(24bit)
{
SCLK = 1;//第一次执行循环结合语句,可以看出SCLK上升沿,从机数据放到DOUT上.接下来由语句,可以看出SCLK上升沿
data.n = DOUT;//主机把DOUT线上的数据存储起来
SCLK = 0;
}
CS = 1;//CS上升沿表示SPI操作结束
return (data);
}
文章评论(0条评论)
登录后参与讨论