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

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

3天内不再提示

串行外围设备接口总线的特点以及它的基本配置

嵌入式星球 来源:嵌入式星球 作者:嵌入式星球 2020-09-24 15:20 次阅读

几十年来使用的三种最常见的多线串行数据传输格式是I2CUART和SPI。本文着眼于串行外设接口(SPI)总线,该总线已摆脱了显式的标准化,因此在实现协议之前,请始终检查要使用的集成电路的数据表。

能力和特点

串行外围设备接口总线使用四个数据线在主设备和从设备之间提供全双工同步通信

基本主从配置

串行外设接口允许将数据位从主设备移出到从设备中,同时,还可以将位从从设备移出到主设备中。

动画1显示了数据从Microchip A移入Microchip B,又从Microchip B移入MicrochipA。

动画2显示了两个微芯片之间SPI事务的虚拟4通道示波器轨迹。由马克·休斯(Mark Hughes)用Mathematica创建

由于SPI尚未标准化,因此可能会遇到先传输最高有效位(MSb)或最低有效位(LSb)的情况。检查设备的数据表并相应地设置数据处理例程。如果您使用的是Arduino,则可以参考此页面以获取有关配置SPI端口信息

时钟极性和相位

时钟转换控制数据的移位和采样。SPI具有四种模式(0、1、2、3),分别对应四种可能的时钟配置。

在时钟周期的上升沿采样的位在时钟周期的下降沿移出,反之亦然。

当从选择线被驱动至逻辑低电平(从选择通常为低电平有效信号)时,每个事务开始。从选择线,数据线和时钟线之间的确切关系取决于如何配置时钟极性(CPOL)和时钟相位(CPHA)。

在时钟极性不变的情况下(即,当从器件选择转换为逻辑低电平时,时钟处于逻辑低电平):

模式0:配置时钟相位,以便在时钟脉冲的上升沿采样数据,并在时钟脉冲的下降沿移出数据。这对应于上图中的第一个蓝色时钟轨迹。注意,数据必须在时钟的第一个上升沿之前可用。

模式1:配置时钟相位,以便在时钟脉冲的下降沿采样数据,并在时钟脉冲的上升沿移出数据。这对应于上图中的第二条蓝色时钟轨迹。

在时钟极性反转的情况下(即,当从器件选择转换为逻辑低电平时,时钟处于逻辑高电平):

模式2:配置时钟相位,以便在时钟脉冲的下降沿采样数据,并在时钟脉冲的上升沿移出数据。这对应于上图中的第一个橙色时钟轨迹。注意,数据必须在时钟的第一个下降沿之前可用。

模式3:配置时钟相位,以便在时钟脉冲的上升沿采样数据,并在时钟脉冲的下降沿移出数据。这对应于上图中的第二个橙色时钟轨迹。

关键参数

CLK:串行时钟。由主设备控制。每个时钟周期都会移出一个新的数据位。

SSN:从机选择(“ N”将其标识为低电平有效信号)。由主设备控制。激活的从设备选择线指示主机正在向相应的从设备发送数据或从其请求数据。

MOSI:主输出⇒从输入。数据离开主设备并进入从设备。芯片A上的MOSI线连接到芯片B上的MOSI线。

MISO:主机输入⇐从机输出。数据离开从设备并进入主设备(或以菊花链配置的另一个从设备;请参阅下一节)。芯片A上的MISO线连接到芯片B上的MISO线。

CPOL:时钟极性。这支配时钟信号的初始逻辑状态。有关更多信息,请参考上一节。

CPHA:时钟相位。这支配了数据转换和时钟转换之间的关系。有关更多信息,请参考上一节。

从选择和菊花链

多从选择配置

在标准的SPI安排中,主设备可以通过启用设备(即,将相应设备的从选择线设置为逻辑低电平)向共享公共数据线的单个设备写入数据或向其请求数据。注意不要同时启用多个从站,因为返回到主站的数据将由于MISO线之间的驱动程序争用而损坏。某些应用程序不需要将数据返回给主服务器;在这种情况下,如果主机希望将相同的数据发送到多个从机,则可以同时寻址多个从机。

在多从站选择配置中,每个从站都需要来自主站的唯一从站选择线。如果主站没有足够的I / O引脚来满足所需数量的从站,则可以通过合并解码器/多路分解器来实现I / O扩展,例如74HC(T)238(PDF)(3至8行)解码器/解复用器)。

菊花链配置

在此配置中,数据从一台设备移动到另一台设备。最终的从设备可以将数据返回给主设备。

在菊花链配置中,所有从机共享一条公共的从机选择线。数据从主机转移到第一个从机,然后从第一个从机转移到第二个,依此类推。数据沿线级联直至该系列中的最后一个从机,然后可以使用其MISO线将数据发送到主设备。

这种配置非常适合节日期间流行的可单独寻址的LED灯串。

结论

串行外设接口已经存在了数十年,没有理由期望它会很快消失。虽然I2C和UART可能会更受欢迎,但SPI是一种通用且直接的串行通信接口,非常适合某些应用。

fqj

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

    关注

    17

    文章

    1706

    浏览量

    91551
  • 串行数据传输

    关注

    0

    文章

    4

    浏览量

    6827
收藏 人收藏

    评论

    相关推荐

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

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

    嵌入式的常用总线介绍

    硬件电路设计、简化系统结构,常用一组线路,配置以适当的接口电路,与各部件和外围设备连接,这组共用的连接线路被称为总线
    的头像 发表于 11-11 09:52 349次阅读

    如何使用可配置逻辑块 (CLB) 实施定制串行接口

    电子发烧友网站提供《如何使用可配置逻辑块 (CLB) 实施定制串行接口.pdf》资料免费下载
    发表于 09-09 10:07 0次下载
    如何使用可<b class='flag-5'>配置</b>逻辑块 (CLB) 实施定制<b class='flag-5'>串行</b><b class='flag-5'>接口</b>

    CAN总线接口类型

    CAN总线(Controller Area Network)是一种基于广播的串行通信协议,广泛用于连接分布式系统中的各个设备,实现它们之间的数据交换和控制。CAN总线
    的头像 发表于 09-03 14:13 1804次阅读

    SPI总线的定义和特点

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

    电脑通用串行总线控制器怎么接

    电脑通用串行总线控制器(Universal Serial Bus Controller,简称USB Controller)是一种用于连接和控制USB设备的硬件设备通常集成在电脑主板
    的头像 发表于 08-29 15:51 777次阅读

    通用串行总线控制器和通用串行总线设备的区别

    通用串行总线(Universal Serial Bus,简称USB)是一种广泛使用的串行通信协议,用于计算机和其他设备之间的数据传输。USB技术自1996年推出以来,已经经历了多个版本的更新,包括
    的头像 发表于 08-29 15:40 1814次阅读

    通用串行总线控制器影响什么设备

    通用串行总线控制器(USB控制器)在计算机系统中扮演着至关重要的角色,主要影响和管理与USB接口相关的设备。以下是通用串行总线控制器影响的
    的头像 发表于 08-29 15:38 528次阅读

    高速串行总线有哪些

    在信息技术的飞速发展中,总线技术作为连接各种电子设备的重要纽带,其性能和可靠性对于整个系统的运行效率具有决定性的影响。高速串行总线技术,以其高速度、低延迟、低干扰等优势,成为现代电子系
    的头像 发表于 05-16 17:02 1421次阅读

    南京沁恒微USB总线转接芯片 CH341

    CH341是一个USB总线的转接芯片,通过USB总线提供异步串口、打印口、并口以及常用的2线和4线等同步串行接口。 在异步串口方式下,CH3
    发表于 05-16 13:55

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

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

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

    I2C接口是一种串行通信协议,全称为Inter-Integrated Circuit,即集成电路间总线。它是一种双向、两线制(SCL和SDA)的串行通信
    的头像 发表于 02-17 14:39 6327次阅读
    什么是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 8172次阅读

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

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

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

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