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

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

3天内不再提示

SPI有几根线,SPI通信原理

h1654155282.3538 来源:亿佰特物联网实验室 作者:亿佰特物联网实验 2020-11-19 15:18 次阅读

一、SPI简介

SPI,即Serial Peripheral Interface的英文缩写。从字面意思看就是串行外部设备接口,是一种全双工、高速、同步的通信总线。

SPI最早是摩托罗拉公司开发的全双工同步串行总线,用于微控制器MCU)连接外部设备之间的同步串行通信,主要应用于Flash、数模转换器信号处理器控制器、EEPROM存储器等外设中。

SPI总线属于一主多从接口,和I2C不同的是,SPI 采用CS片选来控制主机与从机通信。现在的单片机几乎都支持SPI总线,其已经成为一种高速、同步、双工的通用标准,在IoT产品中得到广泛应用。

二、SPI有几根线?

SPI通常有4根线(四线制),可实现全双工通信

【SCK】: 串行时钟(Serial Clock)

【MOSI】:主发从收信号(Master Output, Slave Input)

【MISO】:主收从发信号(Master Input, Slave Output

【CS/CS】:片选信号(Slave Select)

SPI应用也有3根线(三线制),实现半双工通信。

三、SPI通信原理

SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,通过CPHA(时钟相位)、CPOL(时钟极性)来控制设备的通信模式。

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

CPHA=0,数据采样是在第1个边沿,数据发送在第2个边沿

CPHA=1,数据采样是在第2个边沿,数据发送在第1个边沿

CPOL=0,当SCLK=0时处于空闲态,有效状态就是SCLK处于高电平时

CPOL=1,当SCLK=1时处于空闲态,有效状态就是SCLK处于低电平时

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

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

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

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

另外,分享个时序图识图方法。交叉线:数据允许发生改变,但不一定要变。平行线:数据不允许发生改变,必须稳定发送。

再细说传输时序。SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK的下降沿上数据改变,上升沿一位数据被存入移位寄存器。SPI接口没有指定的流控制,没有应答机制确认是否接收到数据。

通过以上SPI总线常识的简单描述,我们大致可以了解到SPI具有高速、同步、全双工、总线结构、主从通信模式等优势,但也存在无指定流控制,也没有应答机制确认等短板。
责任编辑人:CC

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

    关注

    17

    文章

    1613

    浏览量

    89585
  • 通信原理
    +关注

    关注

    10

    文章

    124

    浏览量

    31592
  • SPI通信
    +关注

    关注

    0

    文章

    33

    浏览量

    11262
收藏 人收藏

    评论

    相关推荐

    SPI需要几根线

    2020秋招面试—嵌入式开发面试问题大疆华为大疆数据通信协议常见的SPI、I2C、UART等单线收发的通信协议,还有CAN、RS485等差分收发的协议。总结图有空再补。
    发表于 08-23 07:11

    SPI通信的主要作用哪些

    选线为SS,主要作用如下:(1)SS(片选线):用于选择从设备,成为片选信号线。当多个SPI从设备与SPI主机相连时,设备的其他三条总线并联到相同的
    发表于 02-17 07:09

    STM32如何模拟SPI通信协议

    需要至少4根线,分别是MISO、MOSI、SCLK和CS。与IIC通信相比,SPI使用的引脚多几根,但是SPI
    发表于 02-17 08:03

    什么是SPISPI通信过程​是怎样的

    协议,所以就来做一下笔记,记录自己学习过的知识。一、什么是SPISPI(Serial Peripheral Interface)是串行外设接口的缩写,SPI是一个高速的(相较于其他的通信
    发表于 02-17 06:52

    SPI通信线过长会对通信什么影响吗?

    SPI通信线过长会对通信什么影响吗
    发表于 10-11 07:27

    SPI通信原理 SPI的接线实例

    SPI,是英语 Serial Peripheral interface 的缩写,中文全称是串行外围设备接口。是 Motorola 所研发的一种串行通信协议。SPI接口主要应用在 EEPROM
    的头像 发表于 12-01 14:04 1.7w次阅读

    SPI基础,SPI是怎么样的?

    SPI是一种简单的接口,允许一个芯片与一个或多个其他芯片进行通信。 1,SPI是怎么样的? 让我们从一个简单的示例开始,其中只有两个芯片必须一起通信
    的头像 发表于 11-19 18:06 4449次阅读

    SPI通信

    SPI简介SPI是一种串行外围设备通信接口,高速全双工通信总线,主要用于通信速率较高的场合。SPI
    发表于 11-24 15:06 49次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>

    基于SPI通信方式的OLED显示

    本文目的是通过SPI通信方式进行OLED的显示,同时与之前学的I2C通信方式进行对比,在实践中学习SPI通信。目录(一)
    发表于 12-08 09:06 37次下载
    基于<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>方式的OLED显示

    SPI通信分析

    SPI通信分析许久不更,想你们了。SPI 模式的配置SPI通信配置STM官方的芯片手册中对于SPI
    发表于 12-22 19:12 2次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>分析

    SPI通信

    SPI简介SPI是一种串行外围设备通信接口,高速全双工通信总线,主要用于通信速率较高的场合。SPI
    发表于 12-22 19:13 2次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>

    SPI通信协议讲解

    SPI通信协议讲解SPI通信概念SPI通信SPI
    发表于 12-22 19:19 25次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>协议讲解

    通信协议:SPI

    需要至少4根线,分别是MISO、MOSI、SCLK和CS。与IIC通信相比,SPI使用的引脚多几根,但是SPI通信远远高与IIC,所以
    发表于 12-22 19:20 21次下载
    <b class='flag-5'>通信</b>协议:<b class='flag-5'>SPI</b>

    通信协议(SPI

    一、SPI简介SPI(Serial Peripheral Interface)是串行外设接口的缩写,SPI是高速的,**全双工**、**同步**的串行通信总线;
    发表于 12-22 19:33 5次下载
    <b class='flag-5'>通信</b>协议(<b class='flag-5'>SPI</b>)

    SD卡系列之spi模式---spi通信

    SD卡操作分为SPI模式与SDIO模式,这里选择SPI模式,DSP为SPI主机,SD卡为从机,本文对SD卡SPI通信进行说明,关于
    发表于 12-22 19:35 14次下载
    SD卡系列之<b class='flag-5'>spi</b>模式---<b class='flag-5'>spi</b><b class='flag-5'>通信</b>