提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
SPI通讯协议
一、SPI基本内容
SPI接口有四部分组成,分别是SCLK(时钟)、MOSI(master向slave发送数据)、'MISO(从机向主机发送数据)、SS(片选段,主机选择从机进行通信)。


二、SPI模式选择
SPI 一共有四种模式
SPI的CPOL,表示当SCLK空闲idle的时候,其电平的值是低电平0还是高电平1:
CPOL=0,时钟空闲idle时候的电平是低电平,所以当SCLK有效的时候,就是高电平,就是所谓的active-high;
CPOL=1,时钟空闲idle时候的电平是高电平,所以当SCLK有效的时候,就是低电平,就是所谓的active-low;
CPHA=0,表示第一个边沿:
对于CPOL=0,idle时候的是低电平,第一个边沿就是从低变到高,所以是上升沿;
对于CPOL=1,idle时候的是高电平,第一个边沿就是从高变到低,所以是下降沿;
CPHA=1,表示第二个边沿:
对于CPOL=0,idle时候的是低电平,第二个边沿就是从高变到低,所以是下降沿;
对于CPOL=1,idle时候的是高电平,第一个边沿就是从低变到高,所以是上升沿;

不同模式 收写数据方式




三、SPI数据写入或者读取
主片在访问某一从片时,必须使该从片的片选信号有效;主片在SCK信号的同步下,通过MOSI线发出指令、地址信息;如需将数据输出,则接着写指令,由SCK同步在MOSI线上发出数据;如需读回数据,则接着读指令,由主片发出SCK,从片根据SCK的节拍通过MISO发回数据。
四、SPI优缺点
SPI通讯的优势
使SPI作为串行通信接口脱颖而出的原因很多;
全双工串行通信;
高速数据传输速率。
简单的软件配置;
极其灵活的数据传输,不限于8位,它可以是任意大小的字;
非常简单的硬件结构。从站不需要唯一地址(与I2C不同)。从机使用主机时钟,不需要精密时钟振荡器/晶振(与UART不同)。不需要收发器(与CAN不同)。
SPI的缺点
没有硬件从机应答信号(主机可能在不知情的情况下无处发送);
通常仅支持一个主设备;
需要更多的引脚(与I2C不同);
没有定义硬件级别的错误检查协议;
与RS-232和CAN总线相比,只能支持非常短的距离;
五、SPI编程实现及波形
SPI主机模块 代码
module spi_module #(
parameter CYCLE = 1000,
DW = 35
) (
input logic ACLK,
input logic ARESETn,
input logic TVALID,
input logic RVALID,
input logic [DW-1:0] TDATA,
output logic [DW-20:0] RDATA,
output logic TREADY,
input logic MISO,
output logic scl_out,
output logic MOSI,
output logic SCS_N
);
localparam BW = DW+13;
logic [BW-1:0] data;
logic [$clog2(CYCLE)-1:0] cycle_cnt;
logic [$clog2(BW)-1:0] bit_cnt;
enum logic [4:0] {
IDLE = 5'b00001,
START = 5'b00010,
WRITE = 5'b00100,
READ = 5'b01000,

本文详细介绍了SPI协议的基本内容,包括SPI接口组成部分、四种模式选择及其数据收发方式。讨论了SPI的优点和缺点,并展示了在FPGA中实现SPI通信的代码模块,包括主机模块、顶层模块和测试模块,以及读写数据的ROM代码文件设置和仿真波形分析。

1889

被折叠的 条评论
为什么被折叠?



