SPI通讯简介

SPI简介

  1. SPI是串行外设接口(Serial Peripheral Interface)的缩写,
  2. 是美国摩托罗拉公司(Motorola最先推出的一种同步串行传输规范
  3. 是一种单片机外设芯片串行扩展接口,是一种高速、全双工、同步的串行通信总线
  4. SPI有主、从两种模式,通常由一个主模块和一个或多个从模块组成(SPI不支持多主机),主模块选择一个从模块进行同步通信,从而完成数据的交换。
  5. SPI通信原理很简单,需要至少4根信号线,单向传输是3根线;它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)和CS/SS(片选)

SPI通讯方式

SPI的通信方式有一主一从与一主多从,可以从字面意思上理解,其中一主多从模式分为两种,常规模式和菊花链模式。

1.常规模式

SPI主机的SCL,MOSI,MISO分别于从机对应的引脚相连,SS片选的个数取决于从机数,并且每个从机都与在主机上与其对应的SS相连。

2.菊花链模式

其中SCL的连接方式与常规模式相同,但所有从机的片选SS是连接在一起的,信息传输是从一个从机传输到另一个从机,最后传输到主机,主机发送的信号也是经过从机传给下一个从机。

SPI通信原理

1、主设备发起信号,将CS/SS拉低,启动通信。

2、主设备通过发送时钟信号,来告诉从设备进行写数据或者读数据操作(采集时机可能是时钟信号的上升沿(从低到高)或下降沿(从高到低),因为SPI有四种模式,后面会讲到),它将立即读取数据线上的信号,这样就得到了一位数据(1bit)。

3、主机(Master)将要发送的数据写到发送数据缓存区(Menory),缓存区经过移位寄存器(缓存长度不一定,看单片机配置),串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机,同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。

4、从机(Slave)也将自己的串行移位寄存器(缓存长度不一定,看单片机配置)中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据,这样,两个移位寄存器中的内容就被交换。

通讯过程

SPI总线在进行数据传送时,先传送高位,后传送低位;数据线为高电平表示逻辑“1”,低电平表示逻辑“0”;一个字节传送完成后无需应答即可开始下一个字节的传送;SPI总线采用同步方式工作,时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读取数据,完成一位数据传送,八个时钟周期即可完成一个字节数据的传送;所以SPI的通讯方式有四种,下面分别介绍一下这四种模式。

SPI有四种工作模式,通过串行时钟极性(CPOL)和相位(CPHA)的搭配来得到四种工作模式:

  • CPOL表示SCLK空闲时的状态,CPOL=0,串行时钟空闲状态为低电平。 CPOL=1,串行时钟空闲状态为高电平。
  • CPHA表示采样时刻,CPHA=0,串行时钟的第一个跳变沿(上升沿或下降沿)采集数据。 CPHA=1,串行时钟的第二个跳变沿(上升沿或下降沿)采集数据。

1.CPOL = 0 , CPHA = 0

此时SCK为低电平时表示空闲状态,并且在SCK产生第一个跳边沿时开始数据的采集,也就是上图紫色对号的位置,SCK第一个上升沿产生的位置开始采集数据。

2.CPOL = 0 , CPHA = 1

此时SCK为低电平时表示空闲状态,在SCK产生第二个跳边沿时开始数据采集,如上图紫色对号位置所示,从SCK的第二个跳边沿也就是图示下降沿开始处开始采集数据。

3.CPOL  =  1 , CPHA = 0

此时SCK为高电平时表示空闲状态,并且SCK产生的第一个跳边沿也就是第一个下降沿时开始数据的传输,如上图所示。

4.CPOL = 1,CPHA = 1

此时SCK为高电平时表示空闲状态,SCK产生的第二个跳边沿也就是第一个上升沿时开始数据传输,如上图所示。

注意: 需要说明的是,对于一个特定的从设备来说,一般在出厂时就会将其设计为某种特定的工作模式;我们在使用该设备时就必须保证主设备的工作模式和该从设备保持一致,否则是无法进行通信的;所以一般我们需要对主设备的CPOL和CPHA进行配置;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vivado是赛灵思公司(Xilinx)提供的一款集成电路开发套件,用于FPGA设计和嵌入式系统开发。SPI(Serial Peripheral Interface)是一种串行外设接口通信协议,用于在微控制器或其他数字集成电路之间传输数据。 在Vivado中进行SPI通讯,我们需要先设计相应的电路,并配置引脚和通信参数。首先,在Vivado设计工程中创建一个新的项目,并添加所需的硬件模块。然后,我们可以使用Vivado开发环境的IP Catalog来选择合适的SPI IP核。 接下来,我们需要对IP核进行配置,包括指定时钟频率、数据位宽、模式(主/从模式)、传输速率等。设置完成后,可以生成IP核,并将其添加到设计中。在设计中,我们还需要添加其他所需的模块,如处理器等。 完成硬件设计后,我们可以进行FPGA逻辑设计,包括将SPI模块与其他逻辑模块进行连接,并编写相应的逻辑代码。这些代码描述了SPI通讯的协议和控制流程,以确保正确的数据传输。 最后,我们需要将设计综合为比特流文件,并下载到FPGA设备中进行验证和测试。通过连接外部设备(如传感器、存储器等)到FPGA的SPI接口,我们可以进行数据传输和通讯测试。 总而言之,在Vivado中进行SPI通讯需要进行硬件设计、IP核配置、逻辑设计和测试验证等步骤。通过正确的配置和编写相应的代码,我们可以实现可靠的SPI通讯,并与其他数字集成电路或外部设备进行数据交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值