0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SPI总线协议概述

嵌入式那些事 来源:嵌入式那些事 2023-10-26 15:26 次阅读

1.SPI总线概述

SPI是串行外设接口(Serial Peripheral Interface)的缩写。是Motorola公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。主要应用在EEPROM,FLASH,实时时钟AD转换器数字信号处理器和数字信号解码器等设备与MCU之间进行通信。

SPI具有通信简单,支持全双工通信,数据传输速度快的优点。但是由于SPI没有指定的流控制,没有应答机制确认数据是否发送或接收成功,所以SPI总线跟IIC总线比较的话,SPI总线在数据可靠性上有一定的缺陷。

2.SPI信号线

SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备。SPI使用3条通讯总线和1条片选线。

(1).MOSI

主设备数据输出,从设备数据输入。

(2).MISO

主设备数据输入,从设备数据输出。

(3).SCLK(或叫SCK)

时钟信号线,用于通讯同步,该信号由主机产生和控制。

(4).CS

片选线,从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时就需要设置从设备对应的片选引脚,来使能从设备。

SPI通讯设备之间的连接方式,如下图所示:

图片

3.SPI总线的4种通讯模式

SPI通信有4种不同的通讯模式,不同的从设备可能在出厂时就配置为某种模式,这是不能改变的;但我们的通信双方必须是工作在同一模式下,所以我们可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式。

MOSI和MISO线在SCK的每个时钟周期传输一位数据,开发者可以自行设置MSB或LSB先行,不过需要保证两个通讯设备都使用同样的协定。

时钟极性CPOL是用来配置SCK空闲状态的电平,时钟相位CPHA是用来配置数据采样是在第几个边沿。

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

CPOL和CPHA进行组合配置之后产生四种时序关系,也就是四种通讯模式。四种通讯模式文字描述如下:

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

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

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

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

图片

下面的表格是对上述描述的SPI四种通讯模式的总结:

SPI模式 CPOL CPHA SCK空闲时电平 数据采样 数据发送
0 0 0 低电平 第1个边沿 第2个边沿
1 0 1 低电平 第2个边沿 第1个边沿
2 1 0 高电平 第1个边沿 第2个边沿
3 1 1 高电平 第2个边沿 第1个边沿

模式0和模式3的差异主要是,模式0的SCK空闲电平是低电平,模式3的SCK空闲电平是高电平。因为模式0的SCK空闲电平是低电平,数据采样发生在SCK的第1个边沿,也就是SCK的上升沿,数据发送发生在SCK的第2个边沿,也就是SCK的下降沿。同样的因为模式3的SCK空闲电平是高电平,数据采样发生在SCK的第2个边沿,也就是SCK的上升沿,数据发送发生在SCK的第1个边沿,也就是SCK的下降沿。

从上面一段文字,可以对模式0和模式3进行一个总结:模式0和模式3的主要差异是SCK空闲电平的状态不一样,模式0的SCK空闲电平是低电平,模式3的SCK空闲电平是高电平;模式0和模式3都在SCK的上升沿进行数据采样,在SCK的下降沿进行数据发送。

同样的,可以对模式1和模式2进行一个总结:模式1和模式2的主要差异是SCK空闲电平的状态不一样,模式1的SCK空闲电平是低电平,模式2的SCK空闲电平是高电平;模式1和模式2都在SCK的下降沿进行数据采样,在SCK的上升沿进行数据发送。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • EEPROM
    +关注

    关注

    9

    文章

    927

    浏览量

    80314
  • 信号处理器
    +关注

    关注

    1

    文章

    239

    浏览量

    25030
  • AD转换器
    +关注

    关注

    4

    文章

    244

    浏览量

    40978
  • SPI接口
    +关注

    关注

    0

    文章

    251

    浏览量

    33934
  • IIC总线
    +关注

    关注

    1

    文章

    65

    浏览量

    20152

原文标题:SPI总线协议-一篇文章带你了解

文章出处:【微信号:嵌入式那些事,微信公众号:嵌入式那些事】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SPI总线协议和I2C总线协议

      SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片
    发表于 08-09 15:54 2277次阅读
    <b class='flag-5'>SPI</b><b class='flag-5'>总线</b><b class='flag-5'>协议</b>和I2C<b class='flag-5'>总线</b><b class='flag-5'>协议</b>

    SPI总线协议介绍

    SPI总线协议介绍
    发表于 08-18 21:26

    SPI总线协议

    SPI总线协议参考
    发表于 04-10 23:17

    SPI总线协议

    一、概述. SPI, SerialPerripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接
    发表于 08-30 16:27

    SPI总线概述

    文章转自 http://www.51hei.com/mcu/4011.htmlSPI总线概述 SPI全称是串行外设接口(Serial Peripheral Interface),是由
    发表于 10-19 09:42

    SPI总线协议介绍

    SPI总线协议介绍(接口定义,传输时序)
    发表于 03-03 07:45

    SPI总线协议介绍及硬件设计资料分享

    typora-copy-images-to: typora_picture基于FPGA与MCU通信的SPI协议设计1. SPI总线协议介绍及
    发表于 11-10 07:06

    SPI总线协议简介

    1. SPI简介SPI,是英语Serial Peripheral interface(串行外围接口)的缩写,顾名思义就是串行外围设备接口协议。是摩托罗拉公司首先在其MC68HCXX系列处理器上定义
    发表于 12-13 07:37

    SPI协议概述

    一.SPI概述SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信
    发表于 02-17 07:01

    SPI总线简介与参考实例

    spi协议介绍,通过文档形式说明spi总线时序
    发表于 11-19 15:12 55次下载

    带有N的SPI总线详细资料概述

    本文档概述SPI(串行外围接口)总线,该总线通常用于集成电路或传感器之间的通信。本教程讨论了总线的底层基础,包括数据传输、仲裁,以及寻址。
    发表于 03-10 08:00 0次下载
    带有N的<b class='flag-5'>SPI</b><b class='flag-5'>总线</b>详细资料<b class='flag-5'>概述</b>

    SPI总线驱动的C语言源代码详细概述

    本文档的主要内容详细介绍的是SPI总线驱动的C语言源代码详细概述
    的头像 发表于 09-26 11:36 4647次阅读

    SPI协议

    目录SPI协议简介SPI物理层SPI协议SPI协议
    发表于 12-22 19:17 30次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>协议</b>

    SPI总线协议及详解

    引用:https://www.cnblogs.com/adylee/p/5399742.html一.SPI概述SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是
    发表于 12-22 19:18 17次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>总线</b><b class='flag-5'>协议</b>及详解

    浅谈SPI总线通信接口及其协议

    上篇内容我们介绍了IIC总线通信接口及其协议,这一篇文章我们介绍另一种项目开发中非常常见的通信接口——SPI总线
    的头像 发表于 03-22 16:11 1193次阅读
    浅谈<b class='flag-5'>SPI</b><b class='flag-5'>总线</b>通信接口及其<b class='flag-5'>协议</b>