通信协议(二)——SPI协议

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

1、基础知识

1.1 概念

SPI(Serial Peripheral Interface,串行外围设备接口),是Motorola公司提出的一种同步串行接口技术,是一种高速、全双工、同步通信总线,在芯片中只占用四根管脚用来控制及数据传输,广泛用于EEPROM、Flash、RTC(实时时钟)、ADC(数模转换器)、DSP(数字信号处理器)以及数字信号解码器上。SPI通信的速度很容易达到好几兆bps,所以可以用SPI总线传输一些未压缩的音频以及压缩的视频。

特点:
       SPI设备之间通信必须由主设备控制从设备,主设备可通过片选实现控制多个从设备,从设备不能产生或控制时钟,只可主设备提供。

        SPI是采用同步方式传输数据的。

        SPI设备之间数据传输又称为数据交换,不管是读数据还是写数据都需要发送数据到从设备为其提供时钟,才能正常进行,在有些设备读取数据时可能需要先写入数据,此时一定要记得将写入时从设备响应的数据也读出来,后面才可读出对应需要的数据。

优点:
        支持全双工操作,操作简单,数据传输速率较高。
缺点:
        需要占用主机较多的口线,只支持单个主机,没有应答机制确认是否接收到数据,相对于IIC缺点来说是一个大的缺点。

1.2 SPI物理层

        采用主从模式(Master-Slave)的控制方式,支持单Master多Slave。

        SPI规定了两个SPI设备之间通信必须由主设备Master来控制从设备Slave。也就是说,如果FPGA是主机的情况下,不管是FPGA给芯片发送数据还是从芯片中接收数据,写Verilog逻辑的时候片选信号CS与串行时钟信号SCK必须由FPGA来产生。同时一个Master可以设置多个片选(Chip Select)来控制多个Slave。SPI协议还规定Slave设备的clock由Master通过SCK管脚提供给Slave,Slave本身不能产生或控制clock,没有clock则Slave不能正常工作。

通信协议(二)——SPI协议

 注:一主一从

        SCK(Serial Clock):SCK是串行时钟线,作用是Master向Slave传输时钟信号,控制数据交换的时机和速率,它由通讯主机产生,决定了通讯的速率,不同的设备支持的最高时钟频率不一样,两个设备之间通讯时,通讯速率受限于低速设备。

        MOSI(Master Out Slave in):在SPI Master上也被称为Tx-channel,作用是SPI主机给SPI从机发送数据,主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,即这条线上数据的方向为主机到从机。

        MISO(Master In Slave Out):在SPI Master上也被称为Rx-channel,作用是SPI主机接收SPI从机传输过来的数据,主机从这条信号线读入数据,从机的数据由这条信号线输出到主机,即在这条线上数据的方向为从机到主机。

        CS/SS(Chip Select/Slave Select):从设备选择信号线,常称为片选信号线,也称为 NSS、SS。SPI 协议中没有设备地址,它使用 cs 信号线来寻址,当主机要选择从设备时,把该从设备的 cs 信号线设置为低电平,该从设备即被选中,即片选有效,接着主机开始与被选中的从设备进行 SPI 通讯。所以SPI通讯以 cs 线置低电平为开始信号,以 cs 线被拉高作为结束信号。

通信协议(二)——SPI协议

 注:一主多从

        SPI 协议使用 3 条总线及N条片选线,3 条总线分别为 SCLK、MOSI、MISO,片选线为CS,其中3条总线是多个从设备共用的,CS是每一个从机有一条。

1.3 SPI协议层

        SPI总线在传输数据的同时也传输了时钟信号,所以SPI协议是一种同步(Synchronous)传输协议。Master会根据将要交换的数据产生相应的时钟脉冲,组成时钟信号,时钟信号通过时钟极性(CPOL)和时钟相位(CPHA)控制两个SPI设备何时交换数据以及何时对接收数据进行采样,保证数据在两个设备之间是同步传输的。

通信协议(二)——SPI协议

        SPI总线传输一共有4中模式,这4种模式分别由时钟极性(CPOL,Clock Polarity)和时钟相位(CPHA,Clock Phase)来定义,其中CPOL参数规定了SCK时钟信号空闲状态的电平,CPHA规定了数据是在SCK时钟的上升沿被采样还是下降沿被采样。

        时钟极性 CPOL: 表示SPI 通讯设备处于空闲状态时,SCK信号线的电平信号(即 SPI 通讯开始前、CS 线为高电平时 SCLK的状态)。CPOL=0时, SCK在空闲状态时为低电平,CPOL=1 时,则相反。
        时钟相位 CPHA:表示数据采样的时刻,当 CPHA=0 时,MOSI 或 MISO 数据线上的信号将会在 SCLK 时钟线的“奇数边沿”被采样。当 CPHA=1 时,数据线在 SCLK 的“偶数边沿”采样。

        模式0:CPOL= 0,CPHA=0。SCK串行时钟线空闲是为低电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换
  模式1:CPOL= 0,CPHA=1。SCK串行时钟线空闲是为低电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换
  模式2:CPOL= 1,CPHA=0。SCK串行时钟线空闲是为高电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换
  模式3:CPOL= 1,CPHA=1。SCK串行时钟线空闲是为高电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换

SPI工作模式 CPOL CPHA 空闲时的SCLK电平 采样时刻
0 0 0 低电平 奇数边沿
1 0 1 低电平 偶数边沿
2 1 0 高电平 奇数边沿
3 1 1 高电平 偶数边沿

通信协议(二)——SPI协议

 SPI通信过程:通信协议(二)——SPI协议

        SPI总线协议是一种全双工的串行通信协议,数据传输时高位在前,低位在后。SPI协议规定一个SPI设备不能在数据通信过程中仅仅充当一个发送者(Transmitter)或者接受者(Receiver)。在片选信号CS为0的情况下,每个clock周期内,SPI设备都会发送并接收1 bit数据,相当于有1 bit数据被交换了。数据传输高位在前,低位在后(MSB first)。SPI主从结构内部数据传输示意图如下图所示:

通信协议(二)——SPI协议

        在对SPI核操作的控制寄存器进行设置之后即可启动数据传输。数据传输的启动是通过向数据寄存器SPDR中写入数据。对数据寄存器执行写操作实际上是往一个4项写队列中添加数据项。每次写操作即往队列中写入一个字节的数据。当SPI核被使能时,并且写缓冲区不为空,SPI核就是会自动往发送写队列中最旧的数据项。接收数据与发送数据同时进行;每当发送一个字节的数据,同时总会收到一个字节的数据。如果想要的接收一个字节的数据,需要往写缓冲区写入一个字节的冗余数据,这样做是为了让SPI核启动数据传输,在发送冗余数据的同时接收想要的数据,每完成接收一个字节的数据,这个字节会被移入读缓冲区。读缓冲区和写缓冲区是对立的,是一个独立的4项队列。对数据寄存器执行读操作,便会得到读队列中的数据项。文章来源地址https://www.toymoban.com/news/detail-402861.html

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

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

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

相关文章

  • 5G | 无线通信基础知识

    eMBB:增强性移动带宽 uRLLC:超高可靠低时延 mMTC:大规模机器通信 1 10 100 1ms时延、10Gbps数据速率、100万每平方公里连接数 增强覆盖:提升手机功率和上下行频谱共享 提高效率:Massive MIMO、调制编码、多址、双工、全双工 降低时延:优化无线覆盖 优点:分集增益、复用增益

    2024年02月09日
    浏览(48)
  • 音频基础知识(一) 音频基础概念 | 采样 | 量化 | 编码 | 常见音频格式

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【音视频基础知识】 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪   声音的三要素:频率、振幅、波形。 1、频率   声波的频率,也就是

    2024年03月22日
    浏览(46)
  • USB的基本概念和基础知识 01

    本文主要介绍USB的基本概念和基础知识 USB USB 中文网 有很多资料, 很实用哦. USB 是通用串行总线 (Universal Serial Bus) 的缩写. 版本 理论最高速度 USB 1.0 Low Speed 1.5Mb/s 或 0.1875MB/s USB 1.0 Full Speed 12Mb/s 或 1.5MB/s USB 1.1 (即 USB 1.0 Full Speed) 12Mb/s 或 1.5MB/s USB 2.0 Full Speed(即USB 1.1) 12Mb/s 或

    2024年02月11日
    浏览(40)
  • modbus 协议基础知识

    协议种类 Modbus-RTU+Modbus-ASCII Modbus-TCP Modbus-Plus 通讯过程: Modbus是主从方式通信,也就是说,不能同步进行通信,总线上每次只有一个数据进行传输,即主机发送,从机应答,主机不发送,总线上就没有数据通信 协议是基于异步串行通信上,一般的介质有:RS-232,RS485,RS-422上,这也是工业上使

    2024年02月06日
    浏览(96)
  • 【创作赢红包】ElasticSerach基础概念知识梳理

    目录 ES概念介绍 1、ES核心概念组成 2、ES数据类型介绍 2.1 字符串型 2.2 数值型 2.3 布尔型 boolean 2.4 二进制类型 binary 2.5 范围类型 2.6 日期型 date 2.7 复杂数据类型 3、特点 4、应用场景举例 Ela ticsearch,简称为ES, ES是一个开源的高扩展的分布式全文搜索引擎,是整个Elastic Stack技

    2023年04月26日
    浏览(56)
  • ARP协议之基础知识

    ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。其作用是在 以太网环境 中,数据的传输所依懒的是MAC地址而非IP地址,而将已知 IP地址转换为MAC地址 的工作是由ARP协议来完成的。 主机在发送信息前,通过ARP协议获取目标IP地址对应的MAC地址,方可正确发送数据

    2023年04月18日
    浏览(36)
  • 【数据库】MySQL概念性基础知识期末复习

    第一章 3 二维表结构……数据模型—— 关系数据模型 5 描述全部数据整体逻辑结构—— 模式 6 逻辑数据独立性—— 模式变,外模式和应用程序不变 7 物理数据独立性—— 内模式变,外模式和应用程序不变 9 R-(R-S)—— R∩S 10 从两个关系笛卡尔积中选取他们属性间满足一定条

    2024年02月02日
    浏览(117)
  • 网络基础知识:了解网络协议的组成和常见的网络协议

    网络基础知识,了解网络协议的组成和常见的网络协议 1、协议及协议栈的基本概念 1.1、什么是协议 协议是网络中计算机或设备之间进行通信的一系列规则的集合。常用协议有IP、TCP、HTTP、POP3、SMTP等。 1.2、什么是协议栈 在网络中,为了完成通信,必须使用多层上的多种协

    2024年02月07日
    浏览(67)
  • AUTOSAR知识点 之 XCP (二):XCP基础概念

    目录 1、概述 2、概念解读 2.1、MCD-X(X= 123) 2.2、CTO与DTO 2.3、Polling模式

    2024年02月08日
    浏览(35)
  • 【ASP.NET Core 基础知识】--路由和请求处理--路由概念(二)

    一、路由参数传递方式 1.1 查询字符串参数 在路由中,查询字符串参数是一种常见的方式传递信息。这种方式通过URL中的查询字符串(?key1=value1key2=value2)将参数附加到请求中。在ASP.NET Core中,可以通过以下方式在控制器动作方法中接收查询字符串参数: 在上述例子中,查询

    2024年01月21日
    浏览(86)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包