SPI通信协议(SPI总线)学习

1、什么是SPI?

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

2、SPI优点
支持全双工通信
通信简单
数据传输速率块

3、缺点
没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据
可靠性上有一定的缺陷。

4、特点
1):高速、同步、全双工、非差分、总线式
2):主从机通信模式

5、协议通信时序详解
1):SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多
个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共
有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。
(1)SDO/MOSI – 主设备数据输出,从设备数据输入;
(2)SDI/MISO – 主设备数据输入,从设备数据输出;
(3)SCLK – 时钟信号,由主设备产生;
(4)CS/SS – 从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设
备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需
要将从设备对应的片选引脚电平拉低或者是拉高。

2):需要说明的是,我们SPI通信有4种不同的模式,不同的从设备可能在出厂是就是配
置为某种模式,这是不能改变的;但我们的通信双方必须是工作在同一模式下,所以我们
可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和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协议能够通过控制时钟信号线,当没有数据交流的时候我们的时钟线要么是
保持高电平要么是保持低电平。

6、内部工作机制

 SSPSR 是 SPI 设备内部的移位寄存器(Shift Register). 它的主要作用是根据 SPI
时钟信号状态, 往 SSPBUF 里移入或者移出数据, 每次移动的数据大小由 Bus-Width 以
及 Channel-Width 所决定.

(0)

相关推荐

  • SPI协议,MCP2515裸机驱动详解,收藏吧用得着

    SPI概述 Serial Peripheral interface 通用串行外围设备接口 是Motorola首先在其MC68HCXX系列处理器上定义的.SPI接口主要应用在 EEPROM,FLASH, ...

  • 嵌入式开发中常用的几种通信接口总结

    在嵌入式系统中,板上通信接口是指用于将各种集成电路与其他外围设备交互连接的通信通路或总线. 以下内容为常用板上通信接口:包括I2C.SPI.UART.1-Wire: I2C总线 I2C总线是一种同步. ...

  • UC头条:嵌入式面试知识点总结

    我最近在找工作呀,哪位大佬有合适的工作机会,可以推荐一下呀. 坐标北京,嵌入式软件工程师. 一.MCU对比 问题: 问题一:STM32F1和F4的区别? 解答: 参看:STM32开发–STM32初识 ...

  • 编过SPI的程序吗?时钟相位和时钟极性是什么?

    什么是SPI通讯总线 SPI总线的英文全称为S"Serial Periphral Interface",意思是串行外设接口,由于通讯距离比较短,适用于芯片级别的短距离通讯.SPI的 ...

  • 详解SPI协议

    SPI是Serial Peripheral Interface的简称,是由Motorola公司推出的一种高速.全双工的总线协议,可以实现一对一.一对多芯片通信. SPI接口信号 SPI由SCLK.CS ...

  • 怎么看懂时序图?spi协议4种模式时序剖析案例!

    全文约1252字,阅读大约需要5分钟 我做产品的时候,最怕就是做IIC和SPI的通信.   这两种协议时序哪怕是延时时间有误差,都有可能导致通信不上.   出现问题的时候,如果没设备也很难排查问题到底 ...

  • ESP8266 Arduino Core.SPI函数列表

    这个是我们在Arduino内部可以使用的所有的SPI函数 封装的类,你使用之前的初始化,引脚变动什么的 https://www.arduino.cc/en/Reference/SPI 1.begin( ...

  • SPI

    折叠 编辑本段 基本协议 折叠 SPI协议概括 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时).也是所有基于SPI ...

  • CAN总线学习笔记(1)- CAN基础知识

    本专辑是依照瑞萨公司<CAN入门书>的组织思路来学习CAN通信的相关知识,并结合网上相关资料以及学习过程中的领悟整理成的笔记.希望对初学者有所帮助. 01 CAN的一些基本概念 1.1 什 ...

  • CAN总线学习笔记(2)- CAN协议数据帧、遥控帧、错误帧

    本专辑是依照瑞萨公司<CAN入门书>的组织思路来学习CAN通信的相关知识,并结合网上相关资料以及学习过程中的领悟整理成的笔记.希望对初学者有所帮助. 01 CAN 协议中的帧 在了解CAN ...

  • iMX8MQ如何在SPI总线上添加设备-飞凌嵌入式干货分享

    SPI接口设备是一款使用率较高的设备,在用户使用OKMX8MQ-C时可能需要添加新的SPI设备,或者将现有的SPI设备从当前的总线上更换到别的总线上,或更换片选. 对于SPI驱动不熟悉的人可能不是很了 ...

  • 单总线(OneWire) 双总线(I2C) 三四总线(SPI)的思考

    就像盘古开天辟地,女娲造人一样,都是一步一步来,也都是故事 起初 一切都很简单 一个使能线用于控制总线的开启关闭,一个时钟用于同步主从分机,一个进数据,一个出数据 这就是四总线SPI ENABLE C ...

  • 【0基础学硬件】超全面SPI总线介绍

    电子芯期天 公众号 1.什么是SPI? SPI是串行外设接口(Serial Peripheral Interface)的缩写,是 Motorola 公司推出的一种同步串行接口技术,是一种高速.全双工. ...

  • 【硬件】硬件基础小知识 之 SPI总线 (简洁要点)

    【硬件】硬件基础小知识 之 SPI总线 (简洁要点)

  • STM32系统学习——SPI(读写串行 FLASH)

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

  • 干货 | 一文了解SPI总线工作原理、优缺点和应用案例

    将微控制器连接到传感器,显示器或其他模块时,您是否考虑过两个设备之间如何通信?他们到底在说什么?他们如何能够相互理解? 电子设备之间的通信就像人类之间的通信,双方都需要说同一种语言.在电子学中,这些语 ...

  • 【MSP430趣谈】MSP430第十讲之SPI总线驱动OLED

    上次我们说到了430的UART的使用方法,当我们一步一步开始探索的时候会发现它的实际应用是十分复杂的,但是经过我们的慢慢的看下来,我们看到TI给了很多官方的参数供给我们进行选择,所以这里给我们带来了很 ...