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

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

3天内不再提示

通信教程的04_SPI接口说明及原理

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 作者:黄工的嵌入式技术 2020-02-05 12:29 次阅读

教程由作者strongerHuang于2019年09月原创发布。

标签:串口、 SPI、 通信

版权所有:禁止商用

申明:该文档仅供个人学习使用,转载请公众号联系作者授权。

1写在前面

SPI:Serial Peripheral Interface,是串行外设接口

SPI是由摩托罗拉于 1985 年前后开发,是一种适用于短距离、设备到设备通信的同步串行接口。

从那时起,这种接口就已成为许多半导体制造商,特别是微控制器MCU)和微处理器(MPU)采用的事实标准。

2SPI接口

SPI总线是一种4线总线,通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以。

MOSI:Master Output Slave Input,主设备数据输出,从设备数据输入;

MISO:Master Input Slave Output,主设备数据输入,从设备数据输出;

SCLK:Serial Clock,时钟信号,由主设备产生;

SS:Slave Select,从设备选择信号,由主设备控制;

上面的SS信号,也可以理解为CS信号,一般是低电平有效,所以也是NSS(非)信号;

CS:Chip Select,片选信号(从设备使能/选择信号),由主设备控制;

2.1 一主一从

最基本的SPI通信就是一主一从,比如:一个STM32作为主机,一个W25Q16(SPI Flash)作为从机。还有两个MCU之间进行SPI通信等。

上图例子是主机发送一个字节数据(0x53),从机应答一个字节数据(0x46)。

2.2 一主多从

SPI可以一主一从(一个主机,一个从机),但也可以一主多从。一主多从常见有两种连接方式。

A.常规

通常,每个从机都需要一条单独的SS线,要与指定的从机通信,将该从机的SS线设为低电平,并将其余的保持为高电平即可。

B.一条SS信号

某些应用只需要一条NSS即可(比如:移位寄存器),对于这种布局,数据从一个从设备移位到另一个从设备。

3SPI数据传输

SPI的通信比较简单,一个时钟传输一位数据(主机 -> 从机,或者从机 -> 主机)。

3.1 SPI时钟

理论上SPI的时钟频率可以做到很大,一般几MHz~几百MHz,拿常见的W25Q16来说,SPI最高支持80MHz。

SPI通信速率要结合实际情况,不能超过主机或从机支持的最大时钟频率。

3.2 SPI数据

SPI的数据分两个方向:

MOSI:主机 -> 从机

MISO:从机 -> 主机

SPI通信有一个“缺点”:没有指定的流控制,没有应答机制确认是否接收到数据。

可以理解为:不知道是什么时候主机发给从机,什么时候从机发给主机,到底该发多少字节数据等。

此时,需要通信的主机和从机达成约定,一般由主机进行控制读写的操作。

比如下面这个读写SPI Flash数据的操作:

前面1字节是指令,紧接着再3字节(24位)地址,都是由主机发送给从机。之后,主机读取数据(由从机发送出来)。

3.3 时钟极性和相位

除了设置时钟频率外,主机还必须配置与数据有关的时钟极性和相位。

CPOL确定时钟的极性,极性可以通过简单的逆变器进行转换。

CPHA确定相对于时钟脉冲的数据位的时序(即相位)。

一般集成有SPI外设的处理器,都有SPI相关的配置寄存器,拿STM32来说,参考手册里面有详细介绍SPI配置的信息

建议大家结合时序图理解,不能死记硬背。

5

说明

1.该文档仅供个人学习使用,版权所有,禁止商用。

2.本文由我一个人编辑并整理,难免存在一些错误。

3.本文收录于公众号『嵌入式专栏』,关注微信公众号回复【通信教程】即可查看全系列教程。

6最后

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

    关注

    18

    文章

    6024

    浏览量

    135950
  • SPI接口
    +关注

    关注

    0

    文章

    258

    浏览量

    34373
收藏 人收藏

    评论

    相关推荐

    使用stm32的SPI5通信接口与DAC1282通信失败了怎么解决?

    使用stm32的SPI5通信接口与DAC1282通信失败,如何查看是否写入寄存器了,我写程序对reset接口来复位DAC为啥输出还是啥也没
    发表于 12-06 07:31

    spi master接口的fpga实现

    前言 当你器件的引脚贼少的时候,需要主机和从机通信spi就派上了用场,它可以一对多,但只是片选到的从机能和主机通信,其他的挂机。 spi:serial peripheral inte
    的头像 发表于 11-16 10:35 349次阅读
    <b class='flag-5'>spi</b> master<b class='flag-5'>接口</b>的fpga实现

    DS1302芯片与FPGA之间SPI通信原理

    本文通过以DS1302芯片为基础,介绍该芯片与FPGA之间SPI通信原理,详细描述硬件设计原理及FPGA SPI接口驱动设计。
    的头像 发表于 10-24 14:16 414次阅读
    DS1302芯片与FPGA之间<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>原理

    SPI接口静电放电防护方案

    SPI(Serial Peripheral Interface,串行外围设备接口),是Motorola公司提出的一种同步串行接口技术,是一种高速、全双工、同步通信总线,在芯片中只占用四
    的头像 发表于 09-20 15:31 375次阅读
    <b class='flag-5'>SPI</b><b class='flag-5'>接口</b>静电放电防护方案

    SPI通信协议的基本概念和工作模式

    SPI(Serial Peripheral Interface)通信协议,即串行外围设备接口,是一种高速、全双工、同步通信总线,由摩托罗拉公司提出并广泛应用。
    的头像 发表于 09-09 17:04 1346次阅读

    单片机SPI通信实现

    在深入探讨单片机(如基于STM32、AVR、PIC等)如何通过SPI(Serial Peripheral Interface)进行通信之前,我们先概述SPI通信的基本原理,随后以STM
    的头像 发表于 09-09 17:00 496次阅读

    M800/M80/E80/C80系列plc接口说明

    三菱数控系统plc接口说明
    发表于 09-09 10:13 8次下载

    请问可以用FX3作为SPI的Master,通过GPIF II接口实现SPI通信吗?

    你好,我有一块 CYUSBKIT-003 电路板,我正在研究它。 1.为了学习GPIF II接口的使用,我想用FX3的GPIF II实现SPI通信。请问可以用FX3作为SPI的Mast
    发表于 05-29 07:46

    想搞懂通信协议?先来看一篇SPI热热身

    SPI是串行外设接口(SerialPeripheralInterface)的缩写,它是一种同步串行通信接口,用于微控制器和外围设备(如传感器、SD卡、其他微控制器等)之间的
    的头像 发表于 05-12 08:10 1687次阅读
    想搞懂<b class='flag-5'>通信</b>协议?先来看一篇<b class='flag-5'>SPI</b>热热身

    鸿蒙原生应用元服务开发-WebGL网页图形库开发接口说明

    一、场景介绍 WebGL主要帮助开发者在前端开发中完成图形图像的相关处理,比如绘制彩色图形等。目前该功能仅支持使用兼容JS的类Web开发范式开发。 二、接口说明 表1 WebGL主要接口列表 本文参考引用HarmonyOS官方开发文档,基于API9。
    发表于 03-11 15:51

    超详细的SPI原理和通信模式

    SPI分为主、从两种模式,一个SPI通讯系统需要包含一个(且只能是一个)主设备,一个或多个从设备。提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave),SPI接口
    发表于 02-29 12:33 4515次阅读
    超详细的<b class='flag-5'>SPI</b>原理和<b class='flag-5'>通信</b>模式

    RL78/G23 SMS自动控制SPI(主)通信应用说明

    电子发烧友网站提供《RL78/G23 SMS自动控制SPI(主)通信应用说明.pdf》资料免费下载
    发表于 01-29 10:37 0次下载
    RL78/G23 SMS自动控制<b class='flag-5'>SPI</b>(主)<b class='flag-5'>通信</b>应用<b class='flag-5'>说明</b>

    能否用MCU访问非标准SPI接口

    当前许多精密模数转换器(ADC)具有串行外设接口(SPI)或某种串行接口,用以与包括微控制器单元(MCU)、DSP和FPGA在内的控制器进行通信。控制器写入或读取ADC内部寄存器并读取
    的头像 发表于 01-09 08:23 567次阅读
    能否用MCU访问非标准<b class='flag-5'>SPI</b><b class='flag-5'>接口</b>?

    请问怎么把bf609的SPI接口初始化以及怎么选通片选、进行通信

    您好!我刚入门,想通过bf609读取adxl345的加速度数据,我想通过bf609的SPI接口通信,想请问怎么把bf609的SPI接口初始化
    发表于 12-29 07:43

    i2c接口spi接口区别

    I2C(Inter-Integrated Circuit)和SPI(Serial Peripheral Interface)都是用于设备间通信的串行接口标准。它们在很多方面有着相似之处,但也有一些
    的头像 发表于 12-25 15:02 3998次阅读