SPI通信说明

这篇具有很好参考价值的文章主要介绍了SPI通信说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、SPI简介

本文详细介绍SPI的通信原理和特点,主要用途为学习。

SPI是一种高速、全双工、同步通信总线,所以可以在同一时间发送和接收数据,SPI没有定义速度限制,通常能达到甚至超过10M/bps。

SPI是有主从机设备的,主机只允许有一个,从机可以有多个。

SPI通信时需要用到四根线,单向传输时需要用到三根线,即单工模式。它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)和CS/SS(片选)

  • MISO( Master Input Slave Output):主设备输入从设备输出信号引脚。
  • MOSI(Master Output Slave Input):主设备输出从设备输入信号引脚。
  • SCLK(Serial Clock):时钟信号,由主设备产生。
  • CS/SS(Chip Select/Slave Select):从设备使能信号,由主设备控制,一主多从时,CS/SS是从芯片是否被主芯片选中的控制信号,只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。

以下为一个标准的SPI连接方式:spi一主多从怎么连接,单片机,fpga开发,嵌入式硬件

 此为一主多从的连接方式,连接方式知道了下面我们了解一下通信过程。

二、SPI通信过程

第一步,首先需要主机对片选信号端进行选择,通常是将CS/SS引脚拉低代表选择该从机进行通信,实际使用时需要阅读使用手册来确定是拉低还是拉高。

第二步,选择好要通信的芯片后就需要对其发送时钟信号了,SPI有四种工作模式,分别如下:

spi一主多从怎么连接,单片机,fpga开发,嵌入式硬件

我们根据想要通信的芯片的数据手册配置对应的时钟信号,在对应的时钟信号上升或下降沿向其输入我们想要存入的数据即可。

第三步,当我们的主机要向从机的缓冲区发送数据时,数据的长度可以是不固定的,数据将会跟随我们的时钟上升或下降沿一位一位的发出。

以93C46为例(一个常见的额EEPROM芯片),以下为向其发送数据时的标准格式:

spi一主多从怎么连接,单片机,fpga开发,嵌入式硬件

比如我们要向其0X0000001(7位)地址位发送0X00001111(8位)数据时就需要对其发送如下数据。

 spi一主多从怎么连接,单片机,fpga开发,嵌入式硬件

 该芯片片选端为高电平有效,时钟线空闲默认为低电平,且为上升沿读取数据,那么在实际传输数据时MOSI引脚和SCK引脚的电平匹配如下。

spi一主多从怎么连接,单片机,fpga开发,嵌入式硬件

 通过如上配置我们便将需要传输的数据发送到芯片的对应地址进行保存了。以上的通信过程仅为该芯片使用的通信配置,当使用其他芯片时需以芯片手册为准。

第四步,了解完写入数据我们还需要了解一下读取数据,即从机发送数据给主机。

还是以93C46为例,在主机读取其数据时也需要向其发送数据,数据内容如下。

spi一主多从怎么连接,单片机,fpga开发,嵌入式硬件

即我们需要将起始位、读写位、地址位给到从机,从机会将对应地址的数据通过MISO引脚传输过来,实际数据通信过程如下。

 spi一主多从怎么连接,单片机,fpga开发,嵌入式硬件

这样就完成了一个8位地址的读取。

三、SPI的优缺点

优点
无起始位和停止位,因此数据位可以连续传输而不会被中断(根据通信芯片的选择可能有所区别,但SPI通信本身没有硬性的起始位停止位规定);
没有像I2C这样复杂的从设备寻址系统;
数据传输速率比I2C更高(几乎快两倍);
分离的MISO和MOSI信号线,因此可以同时发送和接收数据;
极其灵活的数据传输,不限于8位,它可以是任意大小的字;
非常简单的硬件结构。从站不需要唯一地址(与I2C不同)。从机使用主机时钟,不需要精密时钟振荡器/晶振(与UART不同)。不需要收发器(与CAN不同)。
缺点
使用四根信号线(I2C和UART使用两根信号线);
无法确认是否已成功接收数据(I2C应答位拥有此功能);
没有任何形式的错误检查,如UART中的奇偶校验位;
只允许一个主设备;
没有硬件从机应答信号(主机可能在不知情的情况下无处发送);
没有定义硬件级别的错误检查协议;
与RS-232和CAN总线相比,只能支持非常短的距离;

参考链接:

一文搞懂SPI通信协议_spi协议_不脱发的程序猿的博客-CSDN博客深入理解SPi通讯协议,5分钟看懂!_哔哩哔哩_bilibili文章来源地址https://www.toymoban.com/news/detail-556272.html

到了这里,关于SPI通信说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ansible Playbook快速部署一主多从MySQL集群

    部署目标: 1、快速部署一套一主两从的mysql集群 2、部署过程中支持交互式定义安装目录及监听端口号 部署清单目录结构: 主机清单: 定义了需要部署mysql的主机组、IP及设定mysql主机角色 声明变量: 声明变量的好处在于用户可以按需改这一个文件,而不需要挨个儿修改部

    2024年02月13日
    浏览(36)
  • k8s实战案例之基于StatefulSet控制器运行MySQL一主多从

    Pod调度运⾏时,如果应⽤不需要任何稳定的标示、有序的部署、删除和扩展,则应该使⽤⼀组⽆状态副本的控制器来部署应⽤,例如 Deployment 或 ReplicaSet更适合⽆状态服务需求,⽽StatefulSet适合管理所有有状态的服务,⽐如MySQL、MongoDB集群等。 StatefulSet本质上是Deployment的⼀种

    2024年02月09日
    浏览(37)
  • SPI通信说明

    本文详细介绍SPI的通信原理和特点,主要用途为学习。 SPI是一种高速、全双工、同步通信总线,所以可以在同一时间发送和接收数据,SPI没有定义速度限制,通常能达到甚至超过10M/bps。 SPI是有主从机设备的,主机只允许有一个,从机可以有多个。 SPI通信时需要用到四根线,

    2024年02月15日
    浏览(7)
  • SPI通信协议&SPI通信外设

    目录 SPI 介绍 硬件电路 移位示意图  软件SPI SPI时序基本单元  SPI时序​编辑 W25Q64  硬件电路 W25Q64框图 Flash操作注意事项 指令集  硬件SPI SPI框图  主模式全双工连续传输 非连续传输  推挽输出 ,高低电平都有很强的驱动能力,使得上升沿和下降沿都很迅速。   当ss为高电

    2024年02月10日
    浏览(48)
  • docker搭建mysql多主多从(集群),亲测有效!

    提示 :如果你只是想要搭建mysql主从看这篇文档就够了,很多地方参考了这篇文章:点击这里 原理图 : 主1(docker容器名为mysql-master) 主2(docker容器名为mysql-master_2) 从1(docker容器名为mysql-slave) 从2(docker容器名为mysql-slave-2) 四个容器都起动成功 解释 注意 :配置文件路径为do

    2024年02月04日
    浏览(38)
  • SPI通信协议及基于Arduino的SPI通信例程

    一、SPI通信协议介绍 SPI通信协议(Serial Peripheral Interface)是一种同步串行通信协议,由Motorola公司在1980年代初开发。SPI协议常用于单片机、嵌入式系统和外围设备之间的通信。 SPI协议使用四根线进行通信:时钟线(SCLK)、数据输入线(MOSI)、数据输出线(MISO)和从机选择

    2024年02月07日
    浏览(40)
  • SPI介绍与说明

    SPI详解 一、’ SPI总线介绍 SPI(Serial Peripheral Interface,串行外设接口)是由Motorola提出的一种全双工同步串行通信接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息,通信波特率可以高达5Mbps。SPI接口主要应用在EEPROM、FLASH、实时时钟、网络控制器、LCD显示驱动

    2024年02月02日
    浏览(9)
  • 【SPI】STM32 SPI 双机通信,SPI从机模式使用

    最近要用到STM32的SPI从机模式,从其他板子读SPI数据过来,踩了2天坑,记录一下过程。 (因为hal库提供了三种函数,我调试的过程是阻塞、中断、DMA依次来调试学习的, 这份代码为使用DMA方式的代码。 ) 软件 :keil5、STM32CubeMX 硬件 :两块STM32F103C8T6最小系统 实现功能 :两

    2024年02月17日
    浏览(51)
  • 基于Docker搭建多主多从K8s高可用集群

    主机规划 master - 最低两核心,否则集群初始化失败 主机名 IP地址 角色 操作系统 硬件配置 ansible 10.62.158.200 同步工具节点 CentOS 7 2 Core/4G Memory master01 10.62.158.201 管理节点01 CentOS 7 2 Core/4G Memory master02 10.62.158.202 管理节点02 CentOS 7 2 Core/4G Memory master03 10.62.158.203 管理节点03 CentOS

    2024年04月22日
    浏览(37)
  • Kubernetes(k8s)部署高可用多主多从的Redis集群

    首先你需要一个Kubernetes集群,如图我已经安装好了一个Kubernetes集群: 如果你还没有Kubernetes集群可参考我写的文章:https://blog.csdn.net/m0_51510236/article/details/130842122 你还需要一个可动态供应的存储类,我之前已经写过一篇关于安装NFS动态供给存储类的文章:https://blog.csdn.net/m

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包