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

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

3天内不再提示

SPI可以像I2C挂多个设备吗?

strongerHuang 来源:strongerHuang 2023-05-14 10:10 次阅读

最近看到有小伙伴在讨论:SPI可以像I2C挂多个设备吗?

简单来说,就是一主多从。

其实,SPI是在I2C发展之后才起来的,自然在设计的时候,会考虑这个情况。

本文就给大家讲讲关于SPI接口的那些内容。

SPI 介绍

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

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

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

SPI 接口

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

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

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

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

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

ab543d24-f0aa-11ed-90ce-dac502259ad0.png

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

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

一主一从

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

ab65a3e8-f0aa-11ed-90ce-dac502259ad0.png

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

一主多从

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

A.常规

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

ab82beb0-f0aa-11ed-90ce-dac502259ad0.png

B.一条SS信号

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

ab95e742-f0aa-11ed-90ce-dac502259ad0.png

SPI数据传输

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

SPI时钟

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

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

SPI数据

SPI的数据分两个方向:

MOSI:主机 -> 从机

MISO:从机 -> 主机

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

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

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

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

abab0ca8-f0aa-11ed-90ce-dac502259ad0.jpg

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

时钟极性和相位

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

abc7cb5e-f0aa-11ed-90ce-dac502259ad0.jpg

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

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

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

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

审核编辑:汤梓红

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

    关注

    48

    文章

    7535

    浏览量

    151290
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17112

    浏览量

    350899
  • 接口
    +关注

    关注

    33

    文章

    8564

    浏览量

    150993
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1706

    浏览量

    91479
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1484

    浏览量

    123581

原文标题:SPI可以像I2C挂多个设备吗?

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SPI总线及I2C总线工作原理

    SPI总线及I2C总线工作原理,本内容详细介绍了SPI总线和I2C总线的工作原理和比较
    发表于 12-08 16:55 0次下载

    CAN、I2S、I2CSPI、SSP总线的介绍和比较

    CAN、I2S、I2CSPI、SSP总线的介绍和比较。
    发表于 07-14 16:20 53次下载

    spii2c总线有什么区别

    SPI是串行外设接口(Serial Peripheral Interface)的缩写。I2C总线是一个真正的多主机总线,总线上多个主机初始化传输,可以通过传输检测和仲裁来防止数据被破坏
    发表于 12-06 11:39 4.1w次阅读
    <b class='flag-5'>spi</b>与<b class='flag-5'>i2c</b>总线有什么区别

    浅谈I2C总线,I2C接口和SPI接口的作用相同

    SDA 和 SCL 都是双向的。SPI 总线有两根单独的线,分别用于两个方向的通信,而 I2C 总线不同,它使用同一根线来完成主机发送数据和接收从机响应。另外,与 SPI 总线具有多个
    的头像 发表于 03-21 10:24 2.5w次阅读
    浅谈<b class='flag-5'>I2C</b>总线,<b class='flag-5'>I2C</b>接口和<b class='flag-5'>SPI</b>接口的作用相同

    I2C总线是如何工作的

    I2C结合了SPI和UART的优点。使用I2C,您可以多个设备连接到单个主
    发表于 09-13 15:46 2282次阅读

    树莓派怎样连接多个I2C设备

     简单。 i2c是一辆公共汽车。总线的目的是与多个设备通信。将设备并行连接到同一i2c总线。您可以
    的头像 发表于 11-13 09:27 1.9w次阅读
    树莓派怎样连接<b class='flag-5'>多个</b><b class='flag-5'>I2C</b><b class='flag-5'>设备</b>

    I2C总线的工作原理以及优缺点解析

    如果您正在使用OLED显示器,气压传感器或陀螺仪/加速度计模块的项目,您可能会发现正在使用I2C总线。 I2C总线简介 I2C结合了SPI和UART的优点。使用
    发表于 11-28 09:13 1.5w次阅读
    <b class='flag-5'>I2C</b>总线的工作原理以及优缺点解析

    I2C系列的合集,可以系统学习I2C协议

    这篇文章给大家带来了I2C系列的合集,可以系统学习I2C协议。大家赶紧看看吧! 1、I2C总线:何时使用I2C缓冲器 本文讨论了使用
    的头像 发表于 09-23 15:28 3141次阅读

    详细介绍GPIO、I2CSPI通讯原理以及物理层原理

    6. I2C接口工作模式7. 硬件拉高拉低的过程8. 一对多9. 开发流程三. SPI1. 什么是SPI2. SPI优与缺点3.
    发表于 12-05 12:51 21次下载
    详细介绍GPIO、<b class='flag-5'>I2C</b>、<b class='flag-5'>SPI</b>通讯原理以及物理层原理

    I2C总线能多少设备

    I2C 总线能多少设备? 7-bit address :2 的 7 次方,能 128 个设备
    的头像 发表于 07-25 09:45 4052次阅读
    <b class='flag-5'>I2C</b>总线能<b class='flag-5'>挂</b>多少<b class='flag-5'>设备</b>

    I2CSPI的区别是什么 速率对比

    high 应用 重要数据 大量数据 流控 yes no 设备地址 yes no 常规用途 命令 数据   I2CSPI 的速率如下:   I2C模式 速度 标准 100KHz
    的头像 发表于 07-27 10:55 3667次阅读

    如何解决I2C器件死锁的问题?

    如何解决I2C器件死锁的问题? I2C总线是一种流行的串行通信协议,在许多嵌入式系统中使用。I2C可以连接多个从属
    的头像 发表于 09-12 11:18 2414次阅读

    I2C总线能多少设备 I2C架构

    I2C总线能多少设备? 理论上: 7-bit address :2 的 7 次方,能 128 个设备
    的头像 发表于 09-28 14:20 2912次阅读
    <b class='flag-5'>I2C</b>总线能<b class='flag-5'>挂</b>多少<b class='flag-5'>设备</b> <b class='flag-5'>I2C</b>架构

    UART、SPII2C比较 串口通信介绍

    ,较少用于远距离通信。 SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。 I2C的速度比SPI慢一点,协议比
    的头像 发表于 11-09 18:06 1385次阅读
    UART、<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>比较 串口通信介绍

    SPII2C通信协议:应用与区别

    /DAC芯片等场合。SPII2C在连接方式、传输速率和设备支持等方面有显著差异,但随着物联网和智能设备的发展,它们都将在嵌入式系统中发挥重要作用。
    的头像 发表于 04-22 16:45 1788次阅读