今天我们来一起聊聊谈谈SPI (Serial Peripheral Interface,串行外设接口);


什么是SPI

SPI (Serial Peripheral Interface,串行外设接口)是Motorola 公司推出的一
种同步串行接口技术,是一种高速的,全双工,同步的通信总线;

它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。

(1)SDI – SerialData In,串行数据输入;
(2)SDO – SerialDataOut,串行数据输出;
(3)SCLK – Serial Clock,时钟信号,由主设备产生;
(4)CS – Chip Select,从设备使能信号,由主设备控制。

两种模式的图示

在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。
在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。


使用指南和简单应用

使用到了SPI的4根信号线和电源便可

SPI有四种操作模式——模式0、模式1、模式2和模式3,它们的区别是定义了在时钟脉冲的哪条边沿转换(toggles)输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值(就是时钟信号无效时是高还是低)。每种模式由一对参数刻画,它们称为时钟极(clock polarity)CPOL与时钟期(clock phase)CPHA。

Mode0:CPOL=0,CPHA=0
Mode1:CPOL=0,CPHA=1
Mode2:CPOL=1,CPHA=0
Mode3:CPOL=1,CPHA=1

转载一段认为比较好的解释

时钟极性CPOL是用来配置SCLK的电平出于哪种状态时是空闲态或者有效态,时钟相位CPHA是用来配置数据采样是在第几个边沿:

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

例如:
CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。

CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。

CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。

CPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据发送是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。

需要注意的是:我们的主设备能够控制时钟,因为我们的SPI通信并不像UART或者IIC通信那样有专门的通信周期,有专门的通信起始信号,有专门的通信结束信号;所以我们的SPI协议能够通过控制时钟信号线,当没有数据交流的时候我们的时钟线要么是保持高电平要么是保持低电平

谈谈SPI (Serial Peripheral Interface,串行外设接口)相关推荐

  1. 同步和串行的区别_谈谈SPI (Serial Peripheral Interface,串行外设接口)

    什么是SPI SPI (Serial Peripheral Interface,串行外设接口)是Motorola 公司推出的一 种同步串行接口技术,是一种高速的,全双工,同步的通信总线: 它以主从方式 ...

  2. 嵌入式硬件协议: SPI串行外设接口 Serial Peripheral Interface

    简介 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是 一种高速全双工的通信总线.它被广泛地使用在ADC.LCD 等设备与M ...

  3. 微雪树莓派PICO笔记——7. SPI(串行外设接口)

    文章目录 SPI简介 硬件连接 通讯协议详解 RP2040 SPI 主要参数 RP2040 SPI 逻辑框图 machine.SPI类函数详解 例程地址 代码示例 代码实现 SPI简介 SPI全称为串 ...

  4. arduino教程-9. 串行外设接口(spi)

    文章目录 相关资料 1. spi针脚 Arduino 串行外设接口 串行外设接口简介 板的SPI引脚 SPI.h 库 SPI.h官方示例 SPI为主机 例子 SPI为从机 例子 相关资料 SPI li ...

  5. DSP SPI串行外设接口

    1.SPI介绍 1.1 SPI简介 SPI的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器 ...

  6. F28335第十一篇——串行外设接口(SPI)

    摘要 本文大致介绍了F28335中SPI工作原理和大致寄存器.还有很多细节知识没有列出,需要详细了解的同学,可以参考TI官方文档(TI官网免费下载),或者可以看书籍.重点推荐符晓编写的<TMS3 ...

  7. 串行外设接口(Serial Peripheral Interface, SPI)逻辑设计部分 - spi_master

    目录 1. baud_clk_gen 1.1. 代码 2. spi_master 2.1. IDLE:等待写入 2.2. WAIT_CS:等待选通 2.3. TRANS:传输 (CPOL ^ CPHA ...

  8. 串行外设接口(Serial Peripheral Interface, SPI)逻辑设计部分 - spi_slave

    目录 1. (csn == 1'b1) 时 1.1. spi_slave 完成 Master读写握手 的最短时间 1.2. spi_slave 完成 Slave读写握手 的最短时间 2. (csn = ...

  9. platform框架--Linux MISC杂项框架--Linux INPUT子系统框架--串行集成电路总线I2C设备驱动框架--串行外设接口SPI 设备驱动框架---通用异步收发器UART驱动框架

    platform框架 input. pinctrl. gpio 子系统都是 Linux 内核针对某一类设备而创建的框架, input子系统是管理输入的子系统 pinctrl 子系统重点是设置 PIN( ...

最新文章

  1. JAVA-Socket通信笔记
  2. oracle主键增长方式,oracle 自增长主键
  3. JZOJ 5982. 【WC2019模拟12.27】路径排序
  4. webParts与Web部件
  5. DIY人脸跟踪电风扇送女朋友(3)
  6. C# GDI+ 实现图片分隔
  7. 速卖通手机端怎样加入html,如何正确使用速卖通手机版的关联营销模板
  8. Fibbonacci Number(杭电2070)
  9. WebGIS开发之用openlayers加载离线百度地图
  10. 《Java语言程序设计》(基础篇原书第10版)第十二章复习题答案
  11. idm种子资源下不动 idm种子怎么下载详细教程
  12. c语言逻辑推理题大全,C语言逻辑推理例题(附答案)
  13. ARM-QT5.14.2 触摸屏配置(电容屏/电阻屏)
  14. 安卓稳定性测试必备工具Monkey详解
  15. 又涨了?2021年6月程序员平均薪资15052元!高薪还能持续多久?
  16. win7计算机远程桌面连接,Win 7连向Win7系统远程桌面连接设置
  17. 新星计划·第三季 | 更好的总结、创作
  18. Scikit-Learn 中文文档】数据集加载工具 - 用户指南 | ApacheCN
  19. (ROS)Moveit编程示例
  20. 一种基于智能卡登录Windows系统的实现方式

热门文章

  1. MODBUS调试工具(modscan32)使用说明
  2. swi 指令能用在C语言吗,SWI指令---软件中断实例详解
  3. python opencv读mp4视频
  4. 美国计算机本科排名jjl,美国本科计算机专业排名(中)
  5. 谈谈温度、压力、同位素设定对量子化学计算结果产生的影响
  6. python 如何绘制ppt折线图
  7. 原创:史上最全最通俗易懂的,索引最左前缀匹配原则(认真脸)
  8. BeanFacotry 和ApplicationContext联系和区别
  9. spring-依赖注入(DI)
  10. Android Studio连接安卓手机驱动