1、什么是SPI

SPI,是英语 Serial Peripheral Interface 的缩写,顾名思义就是串行外围设备接口

优点:

SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

2、SPI时序详解

SPI 是一个环形总线结构,由SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选) 构成,其时序其实很简单,主要是在 sck 的控制下,两个双向移位寄存器进行数据交换。

四根线都是什么?

SDO/MOSI – 主设备数据输出,从设备数据输入;
SDI/MISO – 主设备数据输入,从设备数据输出;
SCLK – 时钟信号,由主设备产生;
CS/SS – 从设备使能信号,由主设备控制。

数据是怎么传输的?

上升沿发送、下降沿接收、高位先发送。
上升沿到来的时候, sdo 上的电平将被发送到从设备的寄存器中。
下降沿到来的时候, sdi 上的电平将被接收到主设备的寄存器中。
假设主机和从机初始化就绪:并且主机的 sbuff=0xaa (10101010),从机的 sbuff=0x55 (01010101),下面将分步对 spi 的 8 个时钟周期的数据情况演示一遍(假设上升沿发送数据)。

这样就完成了两个寄存器 8 位的交换,上面的 0--1 表示上升沿、 1--0 表示下降沿, sdi、 sdo 相对于主机而言的。根据以上分析,一个完整的传送周期是 16 位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的名准备数据,主机在下一个 8 位时钟周期才把数据读回来。
工作方式

SPI 总线有四种工作方式(SP0, SP1, SP2, SP3),其中使用的最为广泛的是 SPI0 和 SPI3 方式。
通过CPOL(时钟极性)和CPHA(时钟相位)来 
控制我们主设备的通信模式,具体如下
Mode0:CPOL=0,CPHA=0
Mode1:CPOL=0,CPHA=1
Mode2:CPOL=1,CPHA=0
Mode3:CPOL=1,CPHA=1

什么意思?

CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时
CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时
CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿
CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿

举例

CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在上升沿,数据发送是在下降沿。

CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在下降沿,数据发送是在上升沿。

CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在下降沿,数据发送是在上升沿。

CPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据采集是在上升沿,数据发送是在下降沿。

SPI通信协议简要介绍相关推荐

  1. MIPI_DSI协议简要介绍

    原文链接:MIPI_DSI协议简要介绍 MIPI-DSI是一种应用于显示技术的串行接口,兼容DPI(显示像素接口,Display Pixel Interface).DBI(显示总线接口,Display ...

  2. 【嵌入式】STM32基于SPI通信协议OLED屏显示

    STM32基于SPI通信协议OLED屏显示 一.SPI协议和OLED介绍 1.SPI协议介绍 物理层 协议层 2.OLED显示屏介绍 二.显示个人学号姓名实验 1.题目要求 2.代码部分 1.完整代码 ...

  3. 嵌入式开发基础—SPI通信协议解析

    嵌入式开发基础-SPI通信协议解析 1 通信方式(主从通信) 1.1 什么是主从通信 1.2 主从通信如何实现 1.2.1 相关控制引脚介绍 1.2.2 如何通过控制引脚实现主从通信 2 通信数据交换 ...

  4. 计算机串口接spi,SPI串口模块-SPI接口详细介绍

    SPI串口模块-SPI接口详细介绍 1. SPI串口模块-概述 SPI = Serial Peripheral Interface,是串行外围设备接口,是一种高速,全双工,同步的通信总线.常规只占用四 ...

  5. Hadoop学习笔记一 简要介绍

    Hadoop学习笔记一 简要介绍 这里先大致介绍一下Hadoop.     本文大部分内容都是从官网Hadoop上来的.其中有一篇介绍HDFS的pdf文档,里面对Hadoop介绍的比较全面了.我的这一 ...

  6. 数据结构的简要介绍:图形如何工作

    by Michael Olorunnisola 通过Michael Olorunnisola 数据结构的简要介绍:图形如何工作 (A Gentle Introduction to Data Struc ...

  7. R语言效用分析 ( 效能分析、Power analysis)、除了pwr包之外还有其它包、例如、基因研究中的效能分析、MBESS包可用于各种形式的效能分析和最少样本量确定、其他效用分析包的简要介绍

    R语言效用分析 ( 效能分析.Power analysis).除了pwr包之外还有其它包.例如.基因研究中的效能分析(power analysis).MBESS包可用于各种形式的效能分析(power ...

  8. 简要介绍一下贝叶斯定理( Bayes‘ theorem)

    简要介绍一下贝叶斯定理( Bayes' theorem) 在引出贝叶斯定理之前,先学习几个定义: 条件概率(又称后验概率)就是事件A在另外一个事件B已经发生条件下的发生概率.条件概率表示为P(A|B) ...

  9. 各种编程语言功能综合简要介绍(C,C++,JAVA,PHP,PYTHON,易语言)

    各种编程语言功能综合简要介绍(C,C++,JAVA,PHP,PYTHON,易语言) 总结 a.一个语言或者一个东西能火是和这种语言进入某一子行业的契机有关.也就是说这个语言有没有解决社会急需的问题. ...

  10. [翻译]敏捷软件开发 一 之简要介绍

    敏捷软件开发一之简要介绍       原则.模式与实践是重要的,但是这三个要素都要由人来使得它们协同工作.正如Alistair Cockburn所说:"一个成功的项目,过程与技术永远都是排第 ...

最新文章

  1. Daivik VM 和 JVM 的比较
  2. 1040 Longest Symmetric String 需再做
  3. 未来CPU内核将更简单!
  4. 二进制转16进制转文本[BJDCTF 2nd]cat_flag
  5. SAP Fiori图标(icon)设计原理:一个可以查看 SAP UI5 所有可用图标的工具
  6. JavaScript与HTML交互——事件
  7. streamset 数据合并_StreamSet之数据流从JDBC到Hbase
  8. 记录一个美丽的小县城
  9. Mybatis 动态表名,插入数据
  10. python实现刷博器(适用于新浪、搜狐)
  11. 通过静态发现方式部署 Etcd 集群
  12. DBC2000是什么?DBC2000数据库文件详解
  13. JS中clientHeight、scrollHeight、offsetHeight、scrollTop、offsetTop的定义
  14. Ubuntu校园iNode客户端超简单安装
  15. 《惢客创业日记》2020.10.23(周五)长出了一口气
  16. 圆内接等边三角形的画法_几何画板绘制圆的内接正三角形的操作教程
  17. oracle 10g、11g、 12c、19c有什么区别
  18. CCNet: Criss-Cross Attention for Semantic Segmentation
  19. c#尝试写入或者读取受保护的内存_C# 尝试读取或写入受保护的内存。这通常指示其他内存已损坏 | 学步园...
  20. 幸福婚庆策划网管理系统

热门文章

  1. JAVA打印数组的四种方法
  2. GitHub桌面版 Github Desktop 下载
  3. mysql类exadata功能_EXADATA智能扫描
  4. 静态代理和动态代理详解
  5. 语音识别算法原理文档整理(二)
  6. “会用LabVIEW,但是却没有听说TestStand,好像有点说不过去吧!(上)
  7. python实现wgs84坐标系和ECEF坐标系的互换
  8. JDK1.8中HashMap如何应对hash冲突?
  9. 深度神经网络与大数据分析技术之间,有什么相互作用?
  10. 网易推理拼图验证码识别