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:接收数据如何?

要正确接收数据所需执行的操作取决于接收数据的组件类型。如果您拥有主设备(通常是某种形式的微控制器),则将信息发送到另一设备,该设备不是微控制器,而只是一个只做一件事并且永远不会回应您的小芯片(例如在这种情况下产生interwetten与威廉的赔率体系 电压信号) (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

    文章

    1706

    浏览量

    91578
收藏 人收藏

    评论

    相关推荐

    KeyStone架构串行外设接口(SPI)手册

    SPI(Serial Peripheral Interface)是一种高速、全双工、同步的串行通信协议,它允许微控制器与一个或多个外围设备进行通信。SPI通信通常使用四根线:SCK(时钟线
    发表于 12-16 10:33 0次下载

    单片机语音芯片中的SPI Flash探秘及其分类详解

    在单片机语音芯片的领域中,SPIflash,即串行外围设备接口闪存,扮演着举足轻重的角色。它是一种时钟同步的串行通讯接口,如单片机语音芯片与
    的头像 发表于 12-03 01:01 194次阅读
    单片机语音芯片中的SPI Flash探秘及其分类详解

    通信协议之SPI总线硬件篇

    SPI:Serial Peripheral Interface,串行外围设备接口。 是由摩托罗拉在20世纪80年代中期开发的同步串行总线接口
    的头像 发表于 11-25 17:56 501次阅读
    通信协议之SPI总线硬件篇

    SPI接口静电放电防护方案

    SPI(Serial Peripheral Interface,串行外围设备接口),是Motorola公司提出的一种同步串行接口威廉希尔官方网站 ,是一种
    的头像 发表于 09-20 15:31 379次阅读
    SPI<b class='flag-5'>接口</b>静电放电防护方案

    SPI通信协议的基本概念和工作模式

    SPI(Serial Peripheral Interface)通信协议,即串行外围设备接口,是一种高速、全双工、同步通信总线,由摩托罗拉公司提出并广泛应用。SPI以其高效的数据传输能力和简单的硬件
    的头像 发表于 09-09 17:04 1476次阅读

    SPI总线的定义和特点

    SPI总线(Serial Peripheral Interface),全称为串行外围设备接口,是由Motorola公司提出并定义的一种同步、串行、高速的通信总线。SPI总线以其独特的优
    的头像 发表于 09-03 14:05 840次阅读

    串行接口与并行接口的区别

    串行接口(Serial Interface)与并行接口(Parallel Interface)是计算机与外部设备之间进行数据传输的两种基本方式,它们在多个方面存在显著差异。以下将从数据
    的头像 发表于 08-25 17:08 3843次阅读

    串行接口的工作原理和结构

    串行接口(Serial Interface)的工作原理和结构是理解其在计算机与外部设备之间数据传输方式的重要基础。以下将详细阐述串行接口的工
    的头像 发表于 08-25 17:01 1703次阅读

    使用GMSL隧穿对远程汽车外设进行身份验证

    外围设备是经过授权的高质量组件非常重要。千兆多媒体串行链路(GMSL)串行-反序列化器(SerDes)对与DS28C40的结合是一种解决方案,用于连接嵌入在外围设备
    的头像 发表于 03-05 08:23 1221次阅读
    使用GMSL隧穿对远程汽车外设进行身份验证

    是否有可能使用CYSPP配置文件连接到外围设备

    我们的现有系统使用中央和外围设备,使用基于 Microchip RN4020 的中央和外围设备。 由于供应限制的原因,我们希望将英飞凌 CYBT-483056 SoC 用于 BLE central。 我们想知道是否有可能使用CYSPP配置文件连接到
    发表于 03-01 06:54

    用PSOC6 BLE当外围设备,两者传输数据时,psoc6概率性出现蓝牙挂死的原因?

    我们用PSOC6 BLE当外围设备,手机当中心设备, 两者传输数据时,psoc6概率性(1%的概率)出现蓝牙挂死。具体现象是 断开手机蓝牙后,无法收到ble广播,硬件上查到ble的晶振一直处于起振
    发表于 02-21 06:54

    什么是I2C接口?什么是I3C接口?I2C与I3C的区别

    I2C接口是一种串行通信协议,全称为Inter-Integrated Circuit,即集成电路间总线。它是一种双向、两线制(SCL和SDA)的串行通信接口,主要用于连接微控制器和其他
    的头像 发表于 02-17 14:39 6360次阅读
    什么是I2C<b class='flag-5'>接口</b>?什么是I3C<b class='flag-5'>接口</b>?I2C与I3C的区别

    usb-c接口是什么意思 pd接口和usb接口哪个更好

    以通过USB-C接口提供更高的功率输出,以满足各种设备的充电需求。 USB接口是一种通用的串行总线标准,它早期版本主要用于连接计算机与外围设备
    的头像 发表于 01-31 17:01 8197次阅读

    PSOC6如何通过I2C与外围设备通信?

    PSOC6 如何通过 I2C 与外围设备通信? 我不太明白这一系列芯片 CAN 如何向上或向下拉动?我根据例程编写了一个与I2C通信的外围设备,但它 CAN不起作用, ADXL345模块
    发表于 01-31 06:08

    TC39x如何在用户模式下访问外围设备

    你好, 我已经在 TC39x 中启用了用户模式 1,并希望在用户模式下允许访问一些外围设备和功能。 我主要想在用户模式下使用 cpu endinit(在启用和禁用看门狗的上下文中)。
    发表于 01-22 06:52