SPI协议简介


一、SPI是什么

  SPI (Serial Peripheral interface)定义的一种串行外围设备接口,是一种全双工、同步的通信总线,只需要四根信号线即可,节约引脚,同时有利于PCB的布局。正是出于这种简单易用的特性,现在越来越多的芯片集成了SPI通信协议,如FLASH、AD转换器等。

二、SPI的通信原理

  SPI的通信原理比较简单,它以主从方式工作,通常有一个主设备(例如:FPGA)和一个或多个从设备(例如: flash芯片M25P16)。
  SPI通信需要四根线,分别为 cs_n、sclk、mosi和 miso。其中 cs_n、sclk、mosi是由主机输出给从机,而miso由从机输出给主机。cs_n用于控制从机是否被选中,也就是说只有片选信号有效时,对从机的操作才有效;sclk是由主机产生的同步时钟,用于同步数据; mosi和 miso是主机发送和接收的数据脚。传输数据时,以MSB 的形式传输。

  • miso:主设备输入,从设备输出
  • mosi:主设备输出,从设备输入
  • sclk:时钟信号,由主设备产生
  • cs_n:从设备使能信号,由主设备控制,用于选择从机
    在这里插入图片描述

三、SPI的工作模式

  SPI通信一般有4种不同的模式,不同的从设备在出厂时被厂家配置为其中几种通信模式,通信模式是不允许用户修改的。主设备和从设备必须在同一模式下进行通信,否则数据会接收错误。SPI的通信模式是由CPOL(时钟极性)和CPHA(时钟相位)来决定的;

  时钟极性和时钟相位共同决定了读取数据的方式。

  • 时钟极性CPOL = 0 : 同步时钟SCLK在空闲时为低电平

  • 时钟极性CPOL = 1 : 同步时钟SCLK在空闲时为高电平;

  • 时钟相位CPHA = 0 : 在同步时钟信号SCLK的第一个跳变沿采样

  • 时钟相位CPHA = 1 : 在同步时钟信号SCLK的第二个跳变沿采样。
    在这里插入图片描述

  • 模式0:CPOL = 0,CPHA = 0;

  • 模式1:CPOL = 0,CPHA = 1;

  • 模式2:CPOL = 1,CPHA = 0;

  • 模式3:CPOL = 1,CPHA = 1。

我后续使用的FLASH(M25P16)只适用模式0(CPOL=0,CPHA=0)和模式3(CPOL=1,CPHA=1)。

四、SPI的传输流程

  • 主机先将cs_n片选信号拉低,选择对应从机,保证开始传输数据。
  • 当接收端检测到时钟的第二个边沿信号时,它将立即读取数据线上的信号,这样就得到了 1bit 的数据。(前沿输出,后沿采样)。
  • 主机发送数据给从机时,主机产生相应的时钟信号(sclk),然后数据一位一位地从mosi信号线上发送从机(先发送高位,再发送低位)。
  • 主机接收从机数据时,从机需要将数据送回主机,则主机将继续生成预定数量分频的时钟信号,并且从机通过miso信号线发送数据给主机(先发高位,再发低位)。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值