IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 通信协议整理之 SPI 通信 -> 正文阅读

[嵌入式]通信协议整理之 SPI 通信

通信协议整理之 SPI 通信

简介

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工同步通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。SPI接口主要应用在 EEPROM ,FLASH ,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器等外设之间。
SPI 通信的一个独特优势是数据可以不间断地传输。可以在连续流中发送或接收任意数量的位。在使用 IIC 和 UART 协议时,数据是以数据包的形式发送的,数据包中定义了开始和结束的位,因此数据在传输过程中会中断。
通过 SPI 进行通信的设备属于主从关系。因此,SPI 协议主设备( 主站 )同样可以控制多个从设备( 从站 )。
SPI 引脚定义:

  • MOSI(主输出/从输入):主站将数据发送到从站的线路。
  • MOSI(主输出/从输入):主站将数据发送到从站的线路。
  • SCLK(时钟):时钟信号的线路。
  • SS/CS(从机选择):主站选择线,用于选择要将数据发送到哪个从机。

SPI 是串行通讯协议,数据是一位一位传输的,由 SCLK 提供时钟脉冲, MOSI , MISO 则基于此脉冲完成数据传输及同步的。例如数据输出通过 MOSI 引脚,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取,以此完成一位数据传输,输入也同理。

值得注意的是, SCLK 信号线仅由主设备控制,从设备不能控制信号线。因此,在一个基于 SPI 协议的通信系统中,至少得有一个主设备。

这样的传输方式有一个优点,与普通的串行通讯不同,SPI允许数据一位一位的传送,而不需要一次传输至少八位数据(一个字节),SPI 甚至允许暂停,因为 SCLK 时钟线仅由主控设备控制,主设备通过对 SCLK 时钟线的控制可以完成对通讯的控制,比如当没有时钟跳变时,从设备不采集或传送数据,反之则采集数据。SPI 还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。

工作原理

从上述可知,SPI 协议的通信是由时钟信号控制的,时钟信号负责将主设备的数据位输出与从设备的位采样同步。每个时钟周期传输一位数据,因此数据传输的速度取决于信号的频率。
SPI 中的时钟信号可以使用时钟极性和时钟相位属性进行修改。这两个属性协同工作,以定义何时输出以及何时进行采样。这就涉及 SPI 通信的时序,详解如下:

  • CPOL :时钟极性选择,为 0 时 SPI 总线空闲为低电平;为 1 时 SPI 总线空闲为高电平。
  • CPHA :时钟相位选择,为 0 时在 SCLK 第一个跳变沿采样;为 1 时在 SCLK 第二个跳变沿采样。
    由此组合,可以得到 SPI 的四种工作模式:
SPI 模式CPOLCPHA空闲状态下的时钟极性用于采样和/或移位数据的时钟相位
100逻辑低电平数据在上升沿采样,在下降沿移出
201逻辑低电平数据在下降沿采样,在上升沿移出
310逻辑高电平数据在上升沿采样,在下降沿移出
411逻辑高电平数据在下降沿采样,在上升沿移出

通信连接方式

SPI 主设备要与某个从设备通信时,可以将从设备的 CS/SS 线路设置为低电平。反之,在空闲下,从设备选择线保持在高电平。主设备可以有多个从设备选择引脚,即 CS/SS 引脚,且允许多个从设备并联接线。如果主设备只有一个 CS/SS 引脚,则可以通过菊花链的形式将多个从设备连接到主站。
具体方法如下:
1
2

补充

硬件 SPI 和模拟 SPI

与 IIC 通信类似, SPI 通信也可用 IO 口模拟 SPI 协议时序来实现通信。
硬件 SPI 速度快,且可以使用 DMA 来进行加速。
软件 SPI 接口相对灵活,但时序较复杂,代码量较多。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:52:42  更:2022-04-22 18:55:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:35:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码