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

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

3天内不再提示

硬件电路设计之SPI电路设计

CHANBAEK 来源:一杯苦Coffee 作者:一杯苦Coffee 2023-12-07 18:16 次阅读

1 简介

SPI(Serial Peripheral Interface) 是串行外设接口的简称,是微控制器MCU)与外围设备通信最常见的接口,常见的外围设备包含ADC/DAC传感器以及存储器等。

2 SPI的特点

  • SPI有哪些引脚?

SPI是一种同步全双工通信方式,我们一般采用四线SPI接口,具体包含以下这些信号

  • 时钟信号(SPI Clock,SCLK)
  • 片选信号(Chip Select,SC)
  • 主机输出,从机输入(Master Output Slave Inpit,MOSI或DO)
  • 主机输入,从机输出(Master Inpit Slave Output,MISO或DI)

图片

其中每个PIN脚都有其特定的功能,具体见下:

信号名称功能描述
时钟信号CLK主机用于产生时钟信号,主机和从机之间的数据同步。
片选信号CS用于选择从机,常低电平有效。
数据信号(MISO)从机将数据发送给主机。
数据信号(MOSI)主机将数据发送给从机。
  • SPI信号与I2C信号有哪些差异?

SPI接口与I2C接口有很明显的不同,具体体现在以下几个方面:

  • SPI时钟的频率比I2C时钟频率更高。
  • SPI采用四线制,I2C采用二线制。
  • SPI只能有一个主机,I2C可以有多个主机(总线仲裁机制)。
  • SPI信号数据传输过程?

SPI通信需要的时钟由主机(Master)产生,且主机通过片选信号来选择通信的设备(低电平有效,由主机主动拉低)。SPI能同时进行数据的发送(MOSI)与接收(MISO),且SPI允许用户灵活选择时钟的上升沿/下降沿进行数据的采样和移位。

3 时钟极性和时钟相位

  • 什么是时钟极性(CPOL)和时钟相位(CPHA)?

在SPI通信中。时钟极性和时钟相位是可以由用户进行设定的。

时钟极性(CPOL) :决定了时钟信号在空闲时的状态(高电平或者低电平)。

时钟相位(CPHA) :决定了是在上升沿或者下降沿进行采样和移位。

SPICPOLCOHA时钟极性(空闲)时间(采样/移位)
000低电平上升沿采样、下降沿移出
101低电平下升沿采样、上降沿移出
211高电平下升沿采样、上降沿移出
310高电平上升沿采样、下降沿移出
  • 时钟极性(CPOL)和时钟相位(CPHA)的图解

说明:

  • 绿色:表示数据传输的开始和结束。
  • 橙色:表示数据的采样。
  • 蓝色:表示数据的移位。
  • SPI模式0,CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。

图片

  • SPI模式1,CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出。

图片

  • SPI模式2,CPOL = 1,CPHA = 0:CLK空闲状态 = 高电平,数据在下降沿采样,并在上升沿移出。

图片

  • SPI模式3,CPOL = 1,CPHA = 1:CLK空闲状态 = 高电平,数据在上升沿采样,并在下降沿移出。

图片

4 SPI的级联

多个从机可与单个SPI主机一起使用。从机可以采用常规模式连接,或采用菊花链模式连接。

  • 常规模式

在常规模式下,主机需要为每个从机提供单独的片选信号。一旦主机使能(拉低)片选信号,MOSI/MISO线上的时钟和数据便可用 于所选的从机。如果使能多个片选信号,则MISO线上的数据会被破坏,因为主机无法识别哪个从机正在传输数据。从下图可以看出,随着从机数量的增加,来自主机的片选线的数量 也增加。这会快速增加主机需要提供的输入和输出数量,并限制可以使用的从机数量。可以使用其他技术来增加常规模式下的从机数量,例如使用多路复用器产生片选信号。

图片

  • 菊花链模式

在菊花链模式下,所有从机的片选信号连接在一起,数据从一个从机传播到下一个从机。在此配置中,所有从机同时接收同一SPI时钟。来自主机的数据直接送到第一个从机,该从机将数据提供给下一个从机,依此类推。

图片

使用该方法时,由于数据是从一个从机传播到下一个从机,所以传输数据所需的时钟周期数与菊花链中的从机位置成比例。例如在下图所示的8位系统中,为使第3个从机能够获得数据,需要24个时钟脉冲,而常规SPI模式下只需8个时钟脉冲。图8显示了时钟周期和通过菊花链的数据传播。并非所有SPI器件都支持菊花链模 式。请参阅产品数据手册以确认菊花链是否可用。

图片

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

    关注

    48

    文章

    6809

    浏览量

    147637
  • 电路设计
    +关注

    关注

    6565

    文章

    2317

    浏览量

    195422
  • 接口
    +关注

    关注

    33

    文章

    7639

    浏览量

    148494
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1615

    浏览量

    89600
  • 串行外设接口

    关注

    0

    文章

    14

    浏览量

    3976
收藏 人收藏

    评论

    相关推荐

    数模混合电路设计的难点

    数模混合电路设计的难点 数模混合电路的设计,一直是困扰硬件电路设计师提高性能的瓶颈。众所
    发表于 10-05 09:46 2531次阅读

    怎么成为硬件电路设计高手?

    ▼关注公众号: 工程师看海▼   在现代科技快速发展的时代,电子设备无处不在,而硬件电路设计是实现这些设备功能的基础。无论是智能手机、电脑、家用电器,还是工业控制系统,都需要经过精密的电路设计来实现
    的头像 发表于 07-28 13:10 3462次阅读
    怎么成为<b class='flag-5'>硬件</b><b class='flag-5'>电路设计</b>高手?

    硬件电路设计之晶体与晶振电路设计

      晶体与晶振在电路设计中的应用十分广泛,对于数字电路,一个稳定的时钟信号,是系统稳定的前提。
    的头像 发表于 11-22 10:44 717次阅读
    <b class='flag-5'>硬件</b><b class='flag-5'>电路设计</b>之晶体与晶振<b class='flag-5'>电路设计</b>

    硬件电路设计之DDR电路设计(1)

    电路设计中常见的DDR属于SDRAM,中文名称是同步动态随机存储器。
    的头像 发表于 11-24 17:28 1479次阅读
    <b class='flag-5'>硬件</b><b class='flag-5'>电路设计</b>之DDR<b class='flag-5'>电路设计</b>(1)

    硬件电路设计

    十五年硬件电路设计精华
    发表于 11-08 17:26

    关于硬件电路设计

    我本人对硬件电路设计相对感兴趣,如orcad,altiumdesigner等软件也能熟练运用,但是不知道怎么才能进一步的学习,该学习哪些知识?哪位过来人能指点一下,谢谢。
    发表于 07-12 14:06

    硬件电路设计流程系列

    一、硬件电路设计流程系列--硬件电路设计规范 二、硬件电路设计流程系列--方案设计(1) :主芯
    发表于 10-17 17:16

    核心板硬件电路设计

    核心板接口说明核心板硬件电路设计USB Host电路设计
    发表于 02-01 06:22

    硬件电路设计的思路分享

    在学习电路设计的时候,不知道你是否有这样的困扰:明明自己学了很多硬件电路理论,也做过了一些基础操作实践,但还是无法设计出自己理想的电路。归根结底,我们缺少的是
    发表于 11-11 08:40

    硬件电路设计与实践

    硬件电路设计与实践,非常实用的教材 有需要的朋友下来看看
    发表于 12-08 14:48 0次下载

    硬件电路设计具体详解

    硬件电路设计具体详解。
    发表于 04-05 11:51 28次下载

    MCU电路设计经验

    MCU电路设计经验,在做硬件电路的时候,可以做一个参考
    发表于 06-17 14:59 20次下载

    硬件电路设计流程--原理图设计

    电路教程相关知识的资料,关于硬件电路设计流程--原理图设计
    发表于 10-10 14:34 0次下载

    新手如何学习FPGA外围硬件电路设计

    在论坛里有人发帖子,问关于FPGA的硬件电路问题,我想涉及到这个问题的基本都是硬件工程师或者在读学生,所以我介绍一下我是怎么学习FPGA的硬件电路设
    发表于 02-11 12:55 2.6w次阅读

    硬件电路设计的基本流程、作用和注意事项

    硬件电路设计是一种设计电子设备硬件电路的过程,涉及多种电子元件的选型、连接方式、布局设计等工作。电子产品的功能都是靠硬件
    的头像 发表于 06-30 13:56 1263次阅读
    <b class='flag-5'>硬件</b><b class='flag-5'>电路设计</b>的基本流程、作用和注意事项