1.1 SPI协议简介

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线(SPI相比于IIC具有更高的通信速率)。现在越来越多的芯片集成了SPI通信协议,如FLASH、AD转换器、SD(其实就是flash)等。

SPI 通讯协议的优点是支持全双工通信,通讯方式较为简单,且相对数据传输速率较快;缺点是没有指定的流控制,没有应答机制确认数据是否接收。

流控方面:SPI缺乏流控机制,无论主器件还是从器件均不对消息进行确认,主器件无法知道从器件是否繁忙。IIC存在ACK应答信号,所以有流控机制。

SPI的通信原理比较简单,它以主从方式工作,通常有一个主设备(此处指FPGA)和一个或多个从设备(此处指SD卡)。

一主多从(无论有多少个从设备,都共同使用这 3 条总线;而每个从设备都有独立的这一条 CS_N 信号线,低电平有效)

1.2 CPOL/CPHA 及通讯模式

SPI 通讯协议一共有四种通讯模式,模式 0、模式 1、模式 2 以及模式 3,这 4 种模式分别由时钟极性(CPOL,Clock Polarity)和时钟相位(CPHA,Clock Phase)来定义,不同的从设备在出厂时被厂家配置为其中一种模式,模式是不允许用户修改的。

CPOL控制着SPI_CLK的时钟极性,时钟极性变化如下图所示:

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

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

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

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

由上图可知,当CPOL = 1时,SPI_CLK在空闲时为高电平,发起通信后的第一个时钟沿为下降沿;CPOL = 0时,SPI时钟信号SPI_CLK空闲时为低电平,发起通信后的第一个时钟沿为上升沿。

CPHA用于控制数据与时钟的对齐模式,其不同模式下的时序图如下图所示:

由上图可知,当CPHA = 1时,时钟的第一个变化沿(上升沿或者下降沿)数据开始改变,那么也就意味着时钟的第2个变化沿(与第一个变化沿相反)锁存数据;当CPHA = 0时,数据在时钟的第一个变化沿之前就已经改变,并且保持稳定,也就意味着在时钟的第一个变化沿锁存数据。

CPHA = 0,数据采样是在 SCK 时钟的奇数边沿,CPHA = 1,数据采样是在 SCK 时钟的偶数边沿。

1.3 SPI 基本通讯过程

此图表示的是主机视角的通讯时序。SCK、MOSI、CS_N 信号均由主机控制产生,SCK 是时钟信号,用以同步数据,MOSI 是主机输出从机输入信号,主机通过此信号线传输数据给从机,CS_N 为片选信号,用以选定从机设备,低电平有效;而 MISO 的信号由从机产生,主机通过该信号线读取从机的数据。MOSI 与 MISO 的信号只在 CS_N 为低电平的时候才有效,在 SCK 的每个时钟周期 MOSI 和 MISO 传输一位数据。

  • 数据传输时,MSB 先行或 LSB 先行并没有作硬性规定,但要保证两个 SPI 通讯设备之间使用同样的协定,一般都会采用MSB先行模式。
  • SPI 每次数据传输可以 8 位或 16 位为单位,每次传输的单位数不受限制。
  • SPI接口,模式0中,主机只需要负责:1.在奇数沿采集从机输出的数据(从机采集数据由具体的外设来负责,只需确保主机和从机在同一个协议模式下工作即可);2.在偶数沿放置写入从机的数据。
  • 主机数据MOSI写入从机的同时,也会从 从机中读出数据MOSI。

参考文献:

1.征途Pro《FPGA Verilog开发实战指南——基于Altera EP4CE10》

2.《开拓者FPGA开发指南》

SPI通信协议学习笔记相关推荐

  1. 单片机入门学习单片通信协议学习笔记....更新中

    单片机各类通信协议 --来自于bilbil金善愚老 一.1-wire单总线 概述: 采用单根信号线既传输时钟又传输数据且数据传输是双向的.(单总线器件芯片有编制唯一的序列号(芯片通信地址)) 适用范围 ...

  2. UART通信协议学习笔记

    目录 1.1 UART协议简介 1.2 波特率和比特率 1.3 RS-232信号线 1.4 RS-232和RS-485 1.5 代码波形图 1.6 相关问题 1.1 UART协议简介 同步串行通信需要 ...

  3. plc secs通讯协议_SECS/GEM通信协议学习笔记

    了解下半导体设备现场的通讯协议,对于GEM的开发是半导体设备管理/生产/维护软件的一部分. SECS / GEM是用于设备到主机数据通信的半导体设备接口协议.在自动化工厂中,接口可以启动和停止设备处理 ...

  4. IIC通信协议学习笔记

    目录 1.1 IIC协议简介 1.2 IIC器件地址 1.3 写时序 1.4 读时序 1.1 IIC协议简介 I2C即Inter-Integrated Circuit(内部集成电路总线),是由 Phi ...

  5. SECS/GEM通信协议学习之报文

    SECS/GEM通信协议学习笔记之报文格式 转载自他山之石 一.HSMS报文格式 HSMS 报文消息长度用一个 4 字节无符号整数表示,它表示消息头部和消息文本的总字节数,在传输过程中,高字节在前,低 ...

  6. android spi读写不通,Android-SPI学习笔记

    概述 SPI(Service Provider Interface, 服务提供方接口),服务通常是指一个接口或者一个抽象类,服务提供方是对这个接口或者抽象类的具体实现,由第三方来实现接口提供具体的服务 ...

  7. STM32CubeMX学习笔记(25)——FatFs文件系统使用(操作SPI Flash)

    一.FatFs简介 FatFs 是面向小型嵌入式系统的一种通用的 FAT 文件系统.它完全是由 ANSI C 语言编写并且完全独立于底层的 I/O 介质.因此它可以很容易地不加修改地移植到其他的处理器 ...

  8. 串口通信协议简介—学习笔记

    串口通信协议简介-学习笔记 文章目录 串口通信协议简介-学习笔记 一.串口.COM口.UART口, TTL.RS-232.RS-485区别详解 1.物理接口形式 2.电平标准 2.1 **TTL** ...

  9. STM32学习笔记(15)——SPI协议

    STM32学习笔记(15)--SPI协议 一.SPI协议简介 1. 物理层 2. 协议层 (1) 通讯的开始与停止 (2)时钟极性CPOL.时钟相位CPHA 二.STM32的SPI外设 1. 通讯引脚 ...

  10. 2022最新树莓派4B学习笔记:系统备份 OpenCV SPI TFT HTML

    树莓派4B学习笔记 一.首次使用 1.系统烧录 2.优化配置与备份 3.一些基本操作 二.摄像头 三.Pi Dashboard好看的仪表盘 四.OpenCV安装编译 五.SPI_TFT屏幕 六.最终代 ...

最新文章

  1. #Ruby# Introspect (1)
  2. ISE include 头文件错误的解决办法
  3. session:的生命周期
  4. 腾讯数平团队 荣获第15届国际文档分析与识别竞赛七项冠军
  5. Substitution控件MethodName无法取到Session的解决办法
  6. Tuxera NTFS使用教程:关于Tuxera NTFS mac还有你不知道的用法
  7. 打开网页到我们看到页面显示的过程中发生了什么?
  8. c语言编写计算器保存结果的程序,c语言编写计算器程序.doc
  9. C++表白代码--Beating heart
  10. 接口Request传参的常用注解
  11. JAVA反射构建对象
  12. 漫画小程序支持流量主,自动采集资源,漫画源码漫画小程序源码简单即可发布
  13. spss因子分析结果解读_SPSS统计结果P=0.000,我该如何解读呢?
  14. 2022年流行的Java框架有哪些?
  15. [Codeforces Round #428 DIV2E (CF839E)] Mother of Dragons
  16. jQuery选择器详细介绍
  17. B样条曲线与曲面相关知识点汇总
  18. 面向产品的新一代端到端唤醒框架 wekws 正式发布
  19. window11无法启动您的相机,0xA00F429F<WindowShowFailed>(OxC00D36BB)
  20. 如何正确关闭MongoDB

热门文章

  1. TypeScript 获取时间戳
  2. Oracle(plsql)数据导入导出
  3. 【软工】week3-个人阅读作业-软件案例分析
  4. 阿里云搭建WordPress系统
  5. 信号分析与处理(1)
  6. 泛微移动端数据库 :H2数据库
  7. mysql 日期表:工作日、周末、节假日,星期
  8. python 拼图验证码
  9. Win10卸载edge浏览器与后悔重装
  10. 惠普笔记本苹果w10双系统_苹果电脑安装双系统教程:MacOS和Win10双系统安装教程...