0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

串行外围设备接口如何使用

454398 来源:wv 2019-09-27 09:41 次阅读

步骤1:总而言之,SPI是什么?

SPI是一种通信协议,最初是由Motorola开发的,在两个电子设备之间传输信息。这是一种全双工协议,这意味着两个设备能够同时彼此“交谈”。

这两个设备被指定为“主”设备和“从”设备。主设备是始终启动每个对话并控制对话进行速度的芯片。从设备仅在主设备请求时才同时发送和接收信息。

步骤2:如何进行SPI通信?

要使两个设备之间的通信正常进行,有四个使用的导线:通常标记为CS或SS(用于从机选择)的片选导线,主输出从输入数据线(MOSI),主输入从输出数据线(MISO)和串行时钟线( SCK)。

主设备将CS线拉低,以与另一侧的从设备指示它希望与其通信。因为这是一条单独的电线,被赋予了“低”电压信号,所以这意味着主机可以通过将其特定电线驱动为低电平来实际控制多个“从”设备。

MOSI和MISO数据行可以完成您可能已经猜到的事情;这两条线允许SPI为全双工。数据位以高电压或低电压信号的形式在两个设备之间沿一个方向或另一个方向传输,具体取决于我们正在查看的数据线。

SCK线控制速度传输MOSI和MISO线上的数据位。像CS线一样,SCK线也由主机控制,并以高和低周期驱动以创建“时钟脉冲”,以控制何时在这些线上传输数据。可以将SPI配置为在时钟变高或变低时传输数据。

第3步:您一直说数据的“位”

实际上是。 SPI被设计(并且是真正成为SPI所必需的)以字节大小的通信块工作,八位到一个字节。因此,对于每个数据传输,时钟和两条数据线上都会有8个时钟脉冲和8个数据传输。

但是,有些器件,例如ADI公司AD5628芯片在Digilent的PmodDA4上,它使用串行外设接口,但表示它们传输12位数据而不是8位数据。虽然这似乎是不可能的,因为您不能使用SPI协议来传输8位数据,然后仅传输4位数据,但是当我们深入研究该芯片的数据手册时,便找到了解决方案。滚动一点后,我们可以看到DAC的移位寄存器实际上是32位长(第22页)。可以很好地将其分为四个单独的8位传输。

步骤4:我们如何传输此数据?

与其他通信协议不同,SPI是它能够以多种方式传输数据,因此功能相当广泛。根据每个芯片想要接收数据的方式,可以先发送最高有效位(MSB)或先发送最低有效位(LSB)来发送信息。

但是真正的多功能性来自四种不同的SPI时钟模式,可供选择。这些模式可以调整时钟信号是从高电压值开始还是从低电压值开始,以及数据的位是随着时钟信号转变为高电平状态而传输还是随着时钟转变为低态状态而传输。上表概述了每种时钟模式的配置。同样,根据设备期望接收信息的方式来选择每种模式。

因此,如果我们希望两个设备通过SPI互相发送210值,则最高位首先,在时钟下降沿传输数据,首先让主机将芯片选择线拉低,然后使时钟信号拉高,让每个设备将适当的位“加载”到数据线上,然后让主机将时钟信号拉低,以便两个设备“收集”在线上的数据位。重复该过程,直到所有位均已传输,然后主机最终再次将芯片选择线拉高以结束通信。

步骤5:接收数据如何?

要正确接收数据所需执行的操作取决于接收数据的组件类型。如果您拥有主设备(通常是某种形式的微控制器),则将信息发送到另一设备,该设备不是微控制器,而只是一个只做一件事并且永远不会回应您的小芯片(例如在这种情况下产生模拟电压信号) (Analog Devices AD5628),那么作为用户创建电路的用户通常不需要执行任何操作。只需确保您以设备想要接收的格式将信息发送到设备即可。

如果您希望从设备接收反馈(或者正在将信息发送到所需的其他微控制器)进行编程以正确接收和解释传入的信息),您可能需要做两件事。如果您使用的SPI库支持全部接收(并返回)8位数据,例如chipKIT/Arduino的SPI库,那么您可以简单地将所有信息接收并存储到一个变量中

如果不使用SPI库,则必须收集各个信息位,然后将它们“网状”在一起。 (可能)最容易通过接收数组中的信息位来完成。

步骤6:需要考虑的其他事项

尽管看起来SPI是通过某种方式完成的并且可以始终如一地工作,但情况并非总是如此。尝试使用主设备与其从芯片进行通信时,线路的另一端可能没有从设备。作为主设备的电子芯片无法物理地知道它是否通过电线连接到其他芯片。

此外,SPI中可能使用的许多代码仅用于SPI库。一些配置(例如,是否应首先发送最高或最低有效位或何时应在时钟周期发送)仅由库处理。但是,也可以“手动”执行SPI协议。毕竟,SPI使用的所有信号就是这样。高低压信号。因此,只要将主机用于发送电压信号的引脚连接到“从”设备上的正确引脚,就可以通过“ SPI”完成通信,而无需实际使用指定的SPI引脚。

自然地,使用SPI库可能会更快(无论是键入速度还是实际速度),但是很高兴知道所有通信(无论是SPI还是其他方式)实际上都是电压信号。/p》

第7步:运行SPI:没有库

虽然理论很不错,但我个人也看到了有关某物的实际示例时,它会更有用看起来像在代码中。这将不需要使用预定义的SPI库,因为我认为查看SPI协议的各个部分何时发生会更有帮助。代码本身(在下面的文本文件中提供)基于Digilent的uC32,这是一个功能强大的Arduino兼容微控制器。

步骤8:运行SPI:使用库

您还可以将SPI与适当的库一起使用。这种方法(毫不奇怪)大大减少了您作为用户需要键入的代码量,但同时从本质上来说还是抽象的。除非您已经知道每个命令在内部执行的操作,否则没有简单的方法只能通过查看它们来弄清楚发生了什么。

步骤9:一些最终想法

正如我之前提到的,SPI是电子领域中使用最广泛的通信协议之一,但并没有给人以为使用 协议的印象。 ; I2CUARTUSB等许多其他协议,甚至简单的通用输入/输出(GPIO)引脚在通讯方面都有其优点和缺点。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1615

    浏览量

    89711
收藏 人收藏

    评论

    相关推荐

    串联外围设备接口通信原理是什么?

    串联外围设备接口(SPI)通信原理是基于哪些具体的通信协议或工作方式
    发表于 10-28 07:16

    CAN、I2S、I2C、SPI、SSP总线简介

    串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口,Mot
    发表于 09-27 06:58

    SPI总线协议及时序图详解

    SPI,是英语 Serial Peripheral Interface 的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片
    发表于 09-22 08:10

    SPI总线协议介绍

    串行外围设备接口(Serial Peripheral Interface,SPI)是一种高速、全双工、同步通信总线,常用于单片机和E2PROM、FLASH、实时时钟、数字信号处理器等器件之间的通信,它主要是主从方式通信,通常只有
    发表于 09-21 18:24 654次阅读
    SPI总线协议介绍

    ESP32-S3-PICO-1技术规格书

    8 MB 串行外围设备接口 (SPI) flash 和 1 个最高达 8 MB 的串行外设接口PSRAM。 ESP32-S3-PICO-1
    发表于 09-18 07:38

    ESP32-PICO-V3-ZERO技术规格书

    功能。该模组集成 1 个 4 MB 串行外围设备接口 (SPI) flash。 ESP32-PICO-V3-ZERO 的核心是 ESP32 芯片 *。ESP32 是集成 2.4 GHz Wi-Fi
    发表于 09-18 07:07

    SPI接口硬件设计介绍

    SPI(Serial Peripheral interface)串行外围设备接口。是微控制器和外围IC(如传感器、 ADC、 DAC、移位寄存器、 SRAM等)之间使用最广泛的
    发表于 09-15 15:45 680次阅读
    SPI<b class='flag-5'>接口</b>硬件设计介绍

    SPI总线的原理与Verilog设计实现

     SPI(Serial Peripheral Interface,串行外围设备接口),是Motorola公司提出的一种同步串行接口技术
    发表于 08-14 09:00 944次阅读
    SPI总线的原理与Verilog设计实现

    标准4线SPI四根线有哪些

    SPI hardware SPI:Serial Perripheral Interface,串行外围设备接口,由 Motorola 公司提出,是一种高速、全双工、同步通信总线。SPI 以主从方式工作
    的头像 发表于 07-27 10:26 4765次阅读
    标准4线SPI四根线有哪些

    常用串行EEPROM的编程应用(三)

    SPI总线(Serial Peripheral Interface串行外围设备接口总线)是三线式的串行总线,是由摩托罗拉公司所研发,使用三线进行数据传输,分别是SCK时钟引脚,SI数据
    发表于 07-20 18:17 1391次阅读
    常用<b class='flag-5'>串行</b>EEPROM的编程应用(三)

    SPI总线协议的基础知识

    SPI,是英语 Serial Peripheral Interface 的缩写顾名思义就是串行外围设备接口。SPI是一种高速的,全双工,同步的通信总线, 并且在芯片的管脚上只占用四根线。
    发表于 06-07 15:40 4345次阅读
    SPI总线协议的基础知识

    GD32开发实战指南(基础篇) 第22章 SPI

    SPI,是Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。是一种高速全双工的通信总线
    的头像 发表于 05-24 09:04 6926次阅读
    GD32开发实战指南(基础篇) 第22章 SPI

    SPI接口的基本原理

      串行外围设备接口(Serial Peripheral Interface,SPI),用来在微控制器和外围设备芯片之间提供一个低成本、易使用的接口
    发表于 05-19 14:45 1661次阅读
    SPI<b class='flag-5'>接口</b>的基本原理

    一文详解SPI通讯

    Serial Peripheral Interface:是Motorola公司推出的三线同步接口,串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC 等
    的头像 发表于 05-12 17:49 1w次阅读
    一文详解SPI通讯

    SPI通信总线简述

      Serial Peripheral Interface:是Motorola公司推出的三线同步接口,串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC 等
    的头像 发表于 05-06 11:29 2381次阅读
    SPI通信总线简述