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

2023-05-16

关注+星标公众,不错过精彩内容

6c543b49819fb90366828285de96323d.jpeg

作者 | strongerHuang

微信公众号 | strongerHuang

最近看到有小伙伴在讨论: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,从设备选择信号,由主设备控制;

6820a457c85bc28c7998828de68f61f6.png

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

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

一主一从

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

ad24446d06e13ca3d5cf4be9131c24d7.png

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

一主多从

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

A.常规

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

02aea37c7f8274e22e0e6f85f7562731.png

B.一条SS信号

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

77864db23f1932817b843512f3797c32.png

SPI数据传输

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

SPI时钟

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

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

SPI数据

SPI的数据分两个方向:

MOSI:主机 -> 从机

MISO:从机 -> 主机

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

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

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

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

14a6d61b99e9ac6f01311b7d87f6b6bd.jpeg

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

时钟极性和相位

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

2dd4400be5f4a139356ee92ebd09a44a.jpeg

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

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

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

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

------------ END ------------

f981028bb7a7b650729a37620188bd64.gif

●专栏《嵌入式工具

●专栏《嵌入式开发》

●专栏《Keil教程》

●嵌入式专栏精选教程

关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

9587a6d6e07b76ce10ca991d898750ad.jpeg

741101420d5854af7b6332a688dd9501.png

点击“阅读原文”查看更多分享。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SPI可以像I2C挂多个设备吗? 的相关文章

  • openvswitch 通过ofproto/trace trace跟踪数据包匹配的流表

    目录 1 解决的问题需求 当vm互访不通时 xff0c 不知道是哪天流表出问题 xff0c 可以通过 ovs提供的工具模拟虚拟机实例发出的数据包来跟踪数据包经过的流表路径 2 使用方法 xff08 一 xff09 解决的问题需求 我们在使用
  • 关于ethercat开发的一些感想

    origin http blog csdn net embededvc article details 50364977 从去年到现在 xff0c 整整一年经历了从ethercat主站到伺服从站的实现过程 xff0c 包括全程负责从站的et
  • modem manager与network manager

    modem manager ModemManager is a DBus system bus activated service meaning it 39 s started automatically when a request a
  • 调试px4串口升级固件

    最近在调试px4的bootloader 实现uart 串口升级 硬件版本为pixhawk bootloader地址为https github com PX4 Bootloader git px4代码地址为https github com P
  • 文章风格: 一级标题使用蓝色字体,二级和三级使用黑色,重点部分使用红色或黄色标记,正文采用浅灰色

    我今天给自己立个规矩 xff0c 以后我自己写的技术类文章 xff0c 一级标题使用蓝色字体 xff0c 二级和三级使用黑色 xff0c 重点部分使用红色或黄色标记 xff0c 正文采用浅灰色 2012 05 03
  • Xlib Programming Manual

    最近看了王垠 写的那篇清华退学的文章 xff0c 看到了他研究linux的过程 xff0c 文中提到了x Windows 我也总想搞一搞这个东西 xff0c 但是不知从何入手 它推荐这本书Xlib Programming Manual xf
  • 第二章 PX4-Pixhawk-RCS启动文件解析

    origin http blog csdn net qq 18112493 article category 6851622 第二章 PX4 RCS 启动文件解析 RCS 的启动类似于 Linux 的 shell 文件 xff0c 如果不知
  • PX4源码开发人员文档(四)——创建后台程序(应用)

    origin http blog csdn net lkk05 article details 48659059 在 Unix 和其他多任务计算机操作系统中 xff0c 后台程序是指 xff0c 作为后台进程运行的计算机 xff0c 而不是
  • 为何选择nuttx

    裸机程序 xff0c 不能处理太复杂的逻辑 xff0c 系统越复杂 xff0c 越需要上os freertos 不支持posix api rtems是gpl版权 nuttx bsd版权 xff0c px4和apm开源飞控都使用nuttx 经
  • https://tieba.baidu.com/p/4311040961?red_tag=2683564864

    dddddd
  • 彻底理解Linux的各种终端类型以及概念

    origin http blog csdn net dog250 article details 78766716 这篇文章的动机有两个 xff0c 上周同事问我关于Linux终端的问题 xff0c 我简要解答后发现有些概念确实自己也说不清
  • 恢复ubuntu14.04默认的经典登录界面

    之前不小心安装了Xubuntu desktop xff0c 卸载后 xff0c 登录界面还是Xubuntu desktop的界面 xff0c 如图所示 xff1a 搞了很久都没能恢复到默认登录界面 xff0c 最后在国外网站找到了解决方法
  • 理工科专业精品书系列

    原文地址 xff1a https bbs et8 net bbs showthread php t 61 938724 本人本科专业飞机设计 不过后来越搞越杂 xff0c 飞机 xff0c 汽车 xff0c 船舶 xff0c 坦克 xff0
  • DHT11模块程序--51单片机

    不讲原理 xff0c 只表达自己的建议以及提供源程序程序 目录 前言 一 建议 二 代码 1 c文件 2 h文件 实验展示 前言 第一次拿到DHT11这个模块 xff0c 于是网上搜索了各种原理以及程序 xff0c 最终都没找到一个合适自己
  • Centos7 kvm环境安装指南

    宿主机要求 CPU支持虚拟化 xff08 大部分都支持 xff09 内存越大越好 xff08 8G以上 xff09 BIOS开启VT DCentos7及以上 xff0c yum update到最新 检查是否支持硬件虚拟化 查看CPU egr
  • 【嵌入式STM32环境搭建】Keil5安装和STM32工程模板搭建

    Keil5安装和STM32工程模板 Keil5安装 STM32入门教程 2022持续更新中 哔哩哔哩 bilibili 网盘提取码 xff1a 8kzh xff0c 链接里压缩包的解压密码 xff1a 32 STM32库函数版工程模板 搭建
  • Nvidia jetson nano硬件架构

    资料来源 官方文档中心 https developer nvidia com embedded downloads gt 选jetson gt Jetson Nano Product Design Guide 产品设计指导 入口 gt 1
  • protues仿真51单片机教程

    protues是一款常用的单片机仿真软件 在很多情况下 我们做一些简单的项目 手边没有单片机或者不想麻烦的情况下 可以借助protues来仿真测试程序 protues内集成了几款常用的51内核的单片机 我们可以很方便的拿来使用 不用再每次编
  • 紧急!公开招录50名工程师升名校研究生!基层人员均可报名提升!

    2023全国高等教育 硕士研究生报名须知 教育部 国家发改委 财政部联合印发 关于加快新时代研究生教育改革发展的意见 xff0c 表示要将 硕士研究生招生规模稳步扩大 并且 xff0c 教育部明确提出要扩大研究生招生规模 为积极落实国家研究
  • 嵌入式开发,数据手册为啥是重要的文档?

    关注 43 星标公众号 xff0c 不错过精彩内容 作者 strongerHuang 微信公众号 strongerHuang 做嵌入式开发 xff0c 特别是底层驱动相关的开发 xff0c 不管是软件还是硬件工程师 xff0c 能熟练阅读数

随机推荐

  • 分享一款基于C语言实现的FIFO模块

    关注 43 星标公众号 xff0c 不错过精彩内容 作者 strongerHuang 微信公众号 strongerHuang FIFO在嵌入式应用的非常广泛 xff0c 可以说有数据收发的地方 xff0c 基本就有FIFO的存在 xff0c
  • 免费开源EDA软件KiCad 7.0.2 发布、Qt 6.2.8 LTS版本正式发布

    免费开源EDA软件KiCad 7 0 2 发布 Nordic推出第四代低功耗无线SoC Qt 6 2 8 LTS版本正式发布 xff08 点击链接 xff0c 阅读原文 xff09 更多视频 xff0c 可以到我视频号查看 xff1a 点击
  • hadoop中输入文件用LongWritable和IntWritable的区别

    xfeff xfeff 这里的LongWritable的key是线的偏移量 xff0c 表示该行在文件中的位置 xff0c 而不是行号 这里的IntWritable的key是行号
  • 嵌入式开发常用的几款虚拟机

    关注 43 星标公众号 xff0c 不错过精彩内容 作者 入门小站 说起虚拟机 xff0c 相信作为技术人员的小伙伴们不会感到陌生 虚拟机的使用场景非常多 xff0c 如搭建测试环境 在 Windows 系统中安装 Linux 或在 Mac
  • "软件开发生命周期"有几个阶段?

    关注 43 星标公众号 xff0c 不错过精彩内容 作者 情报小哥 ID 嵌入式情报局 很多初学软件编程的小伙伴 xff0c 只顾着 编程 xff0c 其他开发相关的一些 技能 很少关注 如果你想以后进入大公司 xff0c 除了写代码之后
  • GUI付费与免费的选择,看了价格你就知道了

    更多视频 xff0c 可以到我视频号查看 xff1a 点击 阅读原文 查看更多分享
  • 通信协议考虑的几点问题

    关注 43 星标公众号 xff0c 不错过精彩内容 素材来源 网络 来源 嵌入式大杂烩 嵌入式开发在很多场景下都需要进行通讯 xff0c 那么通讯协议就必不可少 xff0c 有代表性的通讯协议是如下三种 xff1a 从上表可以看到 xff0
  • 带你看看“了不起的”芯片!

    今天给大家分享一本新书 了不起的芯片 xff0c 文末再送大家5本 xff01 任何一本书的背后都有一段不为人知的曲折故事 xff0c 在此和大家分享一下本书作者写这本书的心路历程 01 为什么要写这本书 xff1f 这是一个人人都在谈论芯
  • Wireshark几个常用技巧

    关注 43 星标公众号 xff0c 不错过精彩内容 作者 假面生 素材来源 CSDN 经典的开源的网络抓包工具 Wireshark 相信大部分人 xff08 或者搞过网络 xff09 的人都知道它 xff0c 用过的人基本了解它的强大功能
  • 预约直播 | 2023年STM32峰会线上直播开启报名!

    点击上方 关注STM32 点击下方文章了解峰会详情 xff1a 速速报名 xff5c 与创新邂逅 xff0c 与生态交融 xff0c 来STM32峰会激发你的创造力 先睹为快 xff01 STM32 中国峰会精彩DEMO导引 文末有奖 约吗
  • 一视频带你了解Apache开源协议

    更多视频 xff0c 可以到我视频号查看 xff1a 点击 阅读原文 查看更多分享
  • 嵌入式程序上下文切换和解耦的工具

    关注 43 星标公众号 xff0c 不错过精彩内容 作者 NevermindZZT C语言是一种面向过程的语言 xff0c 做嵌入式项目的时候 xff0c 如果不变相面向对象 xff0c 项目到后期很难做好 xff0c 且不容易维护 今天就
  • 嵌入式开发成本太高

    关注 43 星标公众号 xff0c 不错过精彩内容 作者 strongerHuang 微信公众号 strongerHuang 最近一段时间 xff0c 给大家整理了一些嵌入式开发常用软件工具的价格 xff0c 有网友直呼 xff1a 嵌入式
  • 服务交付的项目:建立PM牢固的客户关系

    在竞争激烈的市场中 xff0c 基于服务的企业需要利用任何机会将自己与 xff08 通常非常相似的 xff09 竞争对手区分开来 虽然实施 系统细节和服务管理都很重要 xff0c 但也许区分您的业务的最佳方式是根据您的服务质量建立牢固的客户
  • ST发布新的工具链和软件包、Source Insight难得一更新

    MicroPython 诞生 10 周年 ST发布新的工具链和软件包 Source Insight难得一更新 xff08 点击链接 xff0c 阅读原文 xff09 更多视频 xff0c 可以到我视频号查看 xff1a 点击 阅读原文 查看
  • 蓝牙演进及其发展史

    关注 43 星标公众号 xff0c 不错过精彩内容 来源 ittbank 目前 xff08 2023年5月 xff09 xff0c 最新的蓝牙5 4标准已经出来了 xff0c 那么 xff0c 你知道蓝牙这些年都经历过什么吗 xff1f 下
  • 嵌入式固件升级防变砖的几种方法

    关注 43 星标公众号 xff0c 不错过精彩内容 来源 CSDN 汽车软件Boot程序的主要作用是刷新App程序 在一个具体客户项目中 xff0c Boot也是客户需求的一部分 xff0c 跟随项目也有软件开发计划 xff08 有的为了和
  • 单片机变量不被初始化的实现方法

    关注 43 星标公众号 xff0c 不错过精彩内容 作者 strongerHuang 微信公众号 strongerHuang 最近有读者问了一个这样的问题 xff1a 看门狗复位之后 xff0c 能不能保持复位之前的状态 xff1f 这种问
  • 新手学51还是STM32单片机?

    更多视频 xff0c 可以到我视频号查看 xff1a 点击 阅读原文 查看更多分享
  • SPI可以像I2C挂多个设备吗?

    关注 43 星标公众号 xff0c 不错过精彩内容 作者 strongerHuang 微信公众号 strongerHuang 最近看到有小伙伴在讨论 xff1a SPI可以像I2C挂多个设备吗 xff1f 简单来说 xff0c 就是一主多从