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

    文章

    6897

    浏览量

    148712
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16240

    浏览量

    345535
  • 接口
    +关注

    关注

    33

    文章

    7970

    浏览量

    149243
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1628

    浏览量

    90115
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1394

    浏览量

    121426

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

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

收藏 人收藏

    评论

    相关推荐

    SPII2C、UART三种串行总线协议的区别

    体系中,传输数据时都会带上目的设备设备地址,因此可以实现设备组网。如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SD
    发表于 11-02 09:48

    stm32的i2cSPI

    感觉SPI配置起来要比I2C配置起来要简单多了,I2C还没搞懂!!!!!
    发表于 03-23 16:12

    浅谈I2C总线

    I2C 接口和 SPI 接口的作用相同,但二者的使用方法有些不同。 I2C 总线用两根线来连接多支路总线中的多个设备。这种总线是双向、低
    发表于 11-30 11:50

    I2C主组件可用吗?

    我看到了SPI主机,SPI Slave,EZI2C从组件,但是,我找不到I2C主机。有没有一个用于读取多个
    发表于 05-30 08:49

    到底什么是I2C

    I2C协议实际上设计用于在单个总线上支持多个设备,而如串行外设接口(SPI)的其他协议的设计用于点对点单设备支持。双线
    发表于 07-23 04:45

    i2c通信协议

    。SDA数据线可以收发数据。i2c通信必须是MCU和i2c设备之间的双方通信。一条i2c总线上可以
    发表于 03-06 16:15

    I2C总线的工作原理、优缺点和应用

    I2C总线:I2C结合了SPI和UART的优点。使用I2C,您可以多个
    发表于 07-31 12:30

    I2C不迷茫--系列文章讲透I2C

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

    I2C总线是什么

    先简单的说明以下I2C总线, I2C 总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。处理器和芯片间的通信可以形象的比喻成两个人讲话:1、你说的别人得能听
    发表于 07-16 06:20

    了解I2C协议

    了解I2C协议,并能够使用I2C将数据写入和读出,I2C协议I2C协议和摩托罗拉公司的SPI协议一样,是一种通讯协议。串行外围
    发表于 08-11 08:35

    I2C总线驱动和设备驱动

    为400kbit/s常见iic设备eeprom触摸芯片温湿度传感器mpu6050(姿态传感器)…框架图I2C核心提供I2C总线驱动和设备驱动的注册方法、注销方法、
    发表于 12-13 06:18

    使用i2c设备的方法

    导言:最近在使用多个i2c设备时,读写出现冲突,我决定使用多个i2c接口,我把摄像头关闭后,使用3B+上的两个
    发表于 01-05 06:54

    I2C从机死怎么解决

    作者:熊小宇 路飞的电子设计宝藏 2020-09-26I2C大家并不陌生,本文转载自简书作者:熊小宇的博文,是讲I2C死分析的,路飞也整理了一些常用的协议规范,感兴趣的可以找我获取。
    发表于 02-14 06:34

    如何同时使用I2CSPI

    函数可以正常工作,但 I2C 不能。的使用示波器,发现当SPI初始化代码存在时,I2C引脚的电压电平根本没有波动。不能同时使用I2C
    发表于 12-13 07:42

    i2c总线上最多可以多少个器件?

    i2c总线上最多可以多少个器件
    发表于 11-01 07:57