首页 > 其他分享 >【通信传输协议】总线协议之SPI

【通信传输协议】总线协议之SPI

时间:2023-10-18 18:46:47浏览次数:49  
标签:协议 总线 通信 SPI 寄存器 串行 移位 时钟

一、SPI简介

串行外设接口 serial peripheral interfacce,是摩托罗拉公司最先推出的一种同步串行传输规范。

高速、全双工、同步的串行通信总线。

SPI有主从两种模式,通常由一主多从模块组成。

SPI通信需要至少4根线,单向传输时3根,MISO(主设备入)、MOSI(主设备出)、SCLK和CS/SS(片选)。

 

二、SPI通信原理及通信过程

SPI通信方式主要由一主一从和一主多从。其中一主多从通信方式又分为常规模式和菊花链模式。

  • 常规模式

常规模式比一主一从多了片选线,其他情况跟一主一从模式一致。

  • 菊花链模式

菊花链模式是由主机的MOSI连到第一台从机的MOSI,再由MISO-MOSI在设备间互联,由最后一台从机MISO到主机的MISO。

  • 通信原理

SPI主设备和从设备都有一个串行移位寄存器,Master通过向Slave的串行寄存器写入一个字节来发起一次传输。SPI只有主模式和从模式之分,没有读和写的说法,外设的写操作和读操作是同步完成的。

即:每次Master所谓的往Slave中“写入”数据时,Slave的移位寄存器会把最后一位“写”给Master,所以说读写操作是同步的。如果Master想要“读”Slave“时,就往Slave中随便传输一个数,Slave就会向Master发送移位寄存器中最后一位的数。

"SPI发送数据是从高位开始,UART发送数据是从低位开始。比如一个字节0x6B,0110_1011,SPI先发0,UART先发1。"

 

  • 通信过程
    • 1、主设备发起信号,将CS/SS拉低,启动通信;
    • 2、主设备通过发送时钟信号,告诉从设备进行写数据或者读数据操作(采样时机可能是时钟上升沿或下降沿),因为SPI有4种通信模式,它将立即读取数据线上的信号,从而收到1bit;
    • 3、主设备将要发送的数据写到发送数据缓存区(Memory),Memory经过移位寄存器(缓存长度不一定),移位寄存器通过MOSI信号将字节一位一位的移位传送给从机,同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。
    • 4、从机也将自己的串行移位寄存器中的内容通过MISO信号线返回给主机,同时通过MOSI信号线接收主机发送的数据,这样两个移位寄存器中的内容就被交换。

 SPI传输完一个字节后无需应答即可开始下一个字节的传送。

 

三、极性和相位

SPI通过串行时钟极性(CPOL)和相位(CPHA)的搭配来得到四种工作模式,也就是四种采样时机。

CPOL:表示SCLK空闲时的状态

       CPOL = 0,串行时钟空闲状态为低电平;

       CPOL = 1,串行时钟空闲状态为高电平;

CPHA:表示采样时刻

       CPHA = 0,串行时钟的第一个跳变沿(上升沿或下降沿)采集数据;

  CPHA = 1,串行时钟的第二个跳变沿(上升沿或下降沿)采集数据;

 

四、SPI和IIC的区别

相同点:

都是串行,同步总线;

均采用TTL电平,传输距离有限,不同于485可以最长传输1200m;

均采用主从方式工作。

 

不同点:

IIC半双工, SPI全双工;

IIC多主多从,所以需要应答机制,确定数据没有发错;SPI一主一从或多从,没有应答机制;IIC通过向总线广播从机地址来寻址,SPI通过向对应从机发送使能信号来寻址;

IIC时钟极性和相位固定,SPI时钟极性和相位可调。

 

标签:协议,总线,通信,SPI,寄存器,串行,移位,时钟
From: https://www.cnblogs.com/Ivan0506/p/17773048.html

相关文章

  • 802.11ax协议notes
    不论上行MUMIMO(HETBPPDU)还是下行MUMIMO(HEMUPPDU),HE-LTF符号数都是由所有用户的总流数决定的。因此对于AP,上行无异于一个大的SUMIMO;下行,协议建议每个STA用上所有用户的信道信息来减少干扰。  HE-LTF模式:单流导频模式、多流导频模式(masked)、无导频模式  HETB格式除......
  • 关于一款软硬一体的RTSP/Onvif协议视频平台EasyNVR安防视频监控平台的介绍
    EasyNVR是一种网络视频录像机(NetworkVideoRecorder),属于软硬一体的产品,支持RTSP/ONVIF协议接入,体积小巧,通电连网即可成功运行,部署操作简单,低功耗,支持7x24小时不间断运行,省去自建视频服务器的高额费用,专属视频服务,免除了与其他硬件的相互影响,可云端运维。作为一种专业的视频监......
  • 开源协议说明
    GPL协议:即通用性公开许可证(GeneralPublicLicense,简称GPL)。GPL同其它的自由软件许可证一样,许可社会公众享有:运行、复制软件的自由,发行传播软件的自由,获得软件源码的自由,改进软件并将自己作出的改进版本向社会发行传播的自由。 GPL还规定:只要这种修改文本在整体上或者其......
  • MESI缓存一致性协议以及Volatile
    MESI(Modified,Exclusive,Shared,Invalid)是一种缓存一致性协议,用于解决多处理器系统中,多个处理器对同一块内存的并发读写可能导致的数据不一致性问题。MESI协议维护了每个缓存行的四种状态:Modified(M):表示缓存行已被修改,并且是唯一的拷贝。当其他处理器需要读取该数据时,必须先......
  • Debian衍生桌面项目SpiralLinux12.231001发布
    SpiralLinux 是一个从Debian衍生出来的桌面项目,其重点是在所有主要桌面环境中实现简洁性和开箱即用的可用性。spiralLinux是为刚接触Linux世界的人们量身定制的发行版。这是GeckoLinux开发人员的创意,他更喜欢保持匿名。尽管他不愿透露姓名,但他的操作系统值得称赞,......
  • 简述调试仿真器协议(JTAG、SWD)及各类调试器(Jlink、Ulink、STlink)
    简述调试仿真器协议(JTAG、SWD)及各类调试器(Jlink、Ulink、STlink)林云林栖谷隐,不知所云17 赞同1 评论72 收藏入门嵌入式编程,总会对市面上种类繁多的调试器感到困惑。本文简单介绍一下现在主流的仿真器协议(JTAG、SWD)及各类调试器(Jlink、Ulink、STli......
  • SPI 接口 CAN协议控制器 MCP2515/DP2515国产替代芯片DPC15
    can控制器是CAN局域网控制器的简称,为解决现代汽车中众多测量控制部件之间的数据交换而开发的一种串行数据通信总线。CAN可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。can控制器最初是为汽车的监测、控制系统而......
  • Thread.Sleep() 和 Thread.SpinWait()
    Thread.Sleep()和Thread.SpinWait() 前言:应用程序应该让线程等待而不是切换。 一:Thread.Sleep(1000);Thread.Sleep()方法:是强制放弃CPU的时间片,然后重新和其他线程一起参与CPU的竞争。 二:Thread.SpinWait(1000);Thread.SpinWait()方法:只是让CPU去执行一段没有用的代......
  • TLS/SSL 协议 - ClientHello
    ClientHello在一次新的握手流程中,ClientHello消息总是第一条消息。这条消息将客户端的功能和首选项传送给服务器。客户端会在新建连接后,希望重新协商或者响应服务器发起的重新协商请求(由HelloRequest消息指示)时,发送这条消息。Wireshark抓取ClientHello消息:Version协议版......
  • 理解MQTT协议(v3.1.1)
    1.概述MQTT协议概述2.数据包详解ControlPackets即14种MQTT类型的消息的二进制定义,本人按对协议的个人理解分别详述如下:CONNECT连接请求CONNACK连接请求应答PUBLISH发布消息PUBACK发布应答PUBREC发布收到QoS2消息收到PUBREL发布释放QoS2消息收到PUBCOMP......