SPI数据发送为什么发送数据要经过一次上升沿还要经过一次下降沿?
case (dstate)8'd0:
begin
spics <= 1'b0;
spiclk <= 1'b1;
spido <= 1'b1;
dstate <= 8'd1;
end
8'd1:
begin
spics <= 1'b0;
spiclk <= 1'b1;
spido <= 1'b1;
dstate <= 8'd2;
end
8'd2:
begin
spics <= 1'b0;
spiclk <= 1'b0;
spido <= 1'b1;
dstate <= 8'd3;
end
8'd3:
begin
spics <= 1'b0;
spiclk <= 1'b1;
spido <= dsend;
dstate <= 8'd4;
end
8'd4:
begin
spics <= 1'b0;
spiclk <= 1'b0;
spido <= dsend;
dstate <= 8'd5;
end
8'd5:
begin
spics <= 1'b0;
spiclk <= 1'b1;
spido <= dsend;
dstate <= 8'd6;
end
8'd6:
begin
spics <= 1'b0;
spiclk <= 1'b0;
spido <= dsend;
dstate <= 8'd7;
end
8'd7:
begin
spics <= 1'b0;
spiclk <= 1'b1;
spido <= dsend;
dstate <= 8'd8;
end
8'd8:
begin
spics <= 1'b0;
spiclk <= 1'b0;
spido <= dsend;
dstate <= 8'd9;
end
8'd9:
begin
spics <= 1'b0;
spiclk <= 1'b1;
spido <= dsend;
dstate <= 8'd10;
end
8'd10:
begin
spics <= 1'b0;
spiclk <= 1'b0;
spido <= dsend;
dstate <= 8'd11;
end
8'd11:
begin
spics <= 1'b0;
spiclk <= 1'b1;
spido <= dsend;
dstate <= 8'd12;
end
8'd12:
begin
spics <= 1'b0;
spiclk <= 1'b0;
spido <= dsend;
dstate <= 8'd13;
end
8'd13:
begin
spics <= 1'b0;
spiclk <= 1'b1;
spido <= dsend;
dstate <= 8'd14;
end
8'd14:
begin
spics <= 1'b0;
spiclk <= 1'b0;
spido <= dsend;
dstate <= 8'd15;
end
8'd15:
begin
spics <= 1'b0;
spiclk <= 1'b1;
spido <= dsend;
dstate <= 8'd16;
end
8'd16:
begin
spics <= 1'b0;
spiclk <= 1'b0;
spido <= dsend;
dstate <= 8'd17;
end
8'd17:
begin
spics <= 1'b0;
spiclk <= 1'b1;
spido <= dsend;
dstate <= 8'd18;
end
8'd18:
begin
spics <= 1'b0;
spiclk <= 1'b0;
spido <= dsend;
dstate <= 8'd19;
end
8'd19:
begin
spics <= 1'b0;
spiclk <= 1'b1;
spido <= 1'b1;
dstate <= 8'd20;
end
8'd20:
begin
spics <= 1'b0;
spiclk <= 1'b1;
spido <= 1'b1;
dstate <= 8'd0;
spistate <= idle;
end
endcase
照这样的写法,SPI总线的CLK为什么11010...这样子的,最前边多出来一个时钟的1是干嘛用的?还有为什么发送一个数据要同时在上升沿和下降沿发送?
begin
spics <= 1'b0;
spiclk <= 1'b1;
spido <= dsend;
dstate <= 8'd4;
end
8'd4:
begin
spics <= 1'b0;
spiclk <= 1'b0;
spido <= dsend;
dstate <= 8'd5;
end
比如上边这两个状态,为什么发送数据要经过一次上升沿还要经过一次下降沿? 因为SPI是单边沿触发锁存数据。 学习,现在要用spi做fpga和stm32的通信 spi一般是全双工工作,根据相位和极性的不同,一般有上升沿发送数据,下降沿所存数据。。。 只要弄清楚SPI极性和相位2个概念,基本就吃透SPI了 弄清SPI的收发时序就知道怎么回事了. 3楼正解。
SPI是串行外设接口,数据移位输出,存在数据更新与锁存。
上升延数据更新,下降延时数据稳定态,可读取。
即,主端与从端在时钟上升延更新数据,在下降延读取数据。
具体时序控制,可参照器件手册。 http://cache.amobbs.com/bbs_upload782111/files_52/ourdev_722606F33V7K.jpg
SPI 极性时序图 (原文件名:SPI 极性时序图.jpg)
SPI极性与时序关系
页:
[1]