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

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

3天内不再提示

串行通信接口SPI接口介绍

jf_78858299 来源:长点芯 作者:阿杰 2023-04-04 15:15 次阅读

前言:

接口的存在是使得芯片的设计达到 模块化modularity ),就像在第一篇文章所讲到的,我们可以通过不同的IP组成一个功能完备的芯片(或称之为 SoC )。

芯片的接口可以分为两大类:片上通信接口片外通信接口 。以AMBA为代表的片上接口主要有灵活,效率高的优势,而片外接口的选择则更加广泛,根据不同的成本需求或是性能需求,能够选择的片外通信接口有IIC,SPI等。

今天讨论的SPI接口是一种十分常用的片外通信接口,经常作为芯片与片外存储器(多为 serial nand flash )的通信接口。同时,硬件物理接口也是应届生面试时被提问最多的问题之一。有意在毕业后从事计算机硬件行业的朋友们可以在准备应聘的时候多多储备这方面的知识。

SPI接口介绍

SPI是一种串行通信接口,全称是 Serial Peripheral Interface 。它是一种 full-duplex (全双工:支持发射端TX与接收端RX同时双向传输数据)接口。最基础的SPI接口由四根线组成:

  1. SCLK(Serial Clock)
  2. SS(Slave Select或CS:Chip Select)
  3. MOSI(Mater Out Slave In)
  4. MISO(Mater In Slave Out)

如下图。

图片

SPI接口pin

1. SCLK:

首先是这根时钟线,这也是将接口分为 Synchronous (同步接口)与 asynchronous (异步接口)的重要标志。由于异步接口发送与采集数据没有一个统一控制信号,所以没法确保发送端与接收端有相同的收发 data rate 这给现在许多使用同步设计方法的芯片带来的很多难题,所以这也是目前同步接口更受欢迎的原因。

图片

异步通信接口

图片

同步通信接口

不过当然了,异步接口也有它的好处。可以在数据的起始位和终止位来添加两个 flag (标记符)来控制数据的接收,而且需要在使用前确保两个模块收发数据的速率是相同的。

所以要是有了这个由 Master (一般是一个 microcontroller )发出的CLK给slave,slave端就知道什么时候接受数据了,可以是上升沿也可以是下降沿,一般由datasheet决定。时钟的频率也取决于slave能够正常工作的时钟频率范围,一般在80MHz左右。

2.SS/CS:

因为SPI接口有时候会连有多个Slave(一般不超过三个),所以随着slave的增加,master端就会需要越来越多的pin口。当Master与slave处于断链状态时,SS/CS一般是置成高位的,这样在master决定要给与哪个slave交互的时候就会把相应的SS/CS置低,称作 active low

3.MISO/MOSI:

剩下的几个接口都是SPI的数据线,在每个时钟周期内,master都会向slave发送1bit数据,slave也可以同时向master发送1bit数据。所以说假设某个SPI接口正工作在50MHz的时钟频率,那么它的数据传输速率可以达到50Mbps/100Mbps(随着数据线的增加SPI的数据传输速率还能增大更多)。相较于普通的IIC接口已经高出不少了。这也是为什么对于许多传感器来说会选择SPI接口。

图片

多位宽数据pin口的SPI通信接口

其实呢,SPI作为一个常用的外设接口,却不存在一个标准,因此没有用于验证给定产品的接口一致性的基准。。所以SPI可以说是一个 * de facto standard ( 在实践中被接受,但尚未经过任何正式程序以达成共识的标准,甚至可能没有公开可用的文档 )。* * *

A de facto standard :is one that has become accepted in practice but has not undergone any formal process to obtain consensus and may not even have publicly available documentation。

并且在SPI中没有任何通信流程控制单元,SPI的硬件实现有时候就是靠一个简单的 shift register ,时钟这个唯一的控制信号的稳定性至关重要。除此之外,如何确保数据的传输是否准确也十分重要,一般只能通过软件来检测。在一些 real-time embedded system (实时嵌入式系统)中,软件必须以比数据到达更快的速度处理接收到的数据。通过接收端的FIFO Buffer,可以缓解此问题。SPI接口中没有嵌入到错误检测和校正功能中。如果需要,必须在软件中实现错误检测/纠正。

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

    关注

    38

    文章

    7447

    浏览量

    163582
  • 接口
    +关注

    关注

    33

    文章

    8486

    浏览量

    150806
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1700

    浏览量

    91294
  • 通信接口
    +关注

    关注

    3

    文章

    234

    浏览量

    30960
收藏 人收藏

    评论

    相关推荐

    基于PC/104 总线与CPLD 的SPI 接口设计

    本文根据SPI 同步串行接口通信协议,介绍了在CPLD 中利用VHDL 语言实现PC/104 总线扩展
    发表于 05-30 09:28 41次下载

    SPI接口读写串行EEPROM

    SPI接口读写串行EEPROM:93C46为采用3线串行同步总线SPI接口方式的EEPROM,其
    发表于 09-19 11:39 89次下载

    理解ATE SPI (串行外设接口)

    理解ATE SPI (串行外设接口) 大多数Maxim® ATE设计都采用了一个串行接口,以便从外部控制器件。这种
    发表于 01-26 16:34 2590次阅读
    理解ATE <b class='flag-5'>SPI</b> (<b class='flag-5'>串行</b>外设<b class='flag-5'>接口</b>)

    串行接口SPI接口应用设计

    使用的同步串行三线SPI 接口,可以方便的连接采用SPI 通信协议的外围或另一片AVR 单片机,实现在短距离内的高速同步
    发表于 11-07 17:28 80次下载

    AVR单片机串行接口SPI接口应用设计

    使用的同步串行三线SPI接口,可以方便的连接采用SPI通信协议的外围或另一片AVR单片机,实现在短距离内的高速同步
    发表于 11-09 17:37 3871次阅读

    一文读懂SPI串行外设接口

    SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。正是由于有了
    发表于 04-27 15:19 1w次阅读

    基于MSP430F2的SPI串行同步通信

    通用串行通信接口(USCI)采用一个硬件模块支持多种串行通信方式。本文档内容介绍同步外围
    发表于 09-21 15:34 2次下载
    基于MSP430F2的<b class='flag-5'>SPI</b><b class='flag-5'>串行</b>同步<b class='flag-5'>通信</b>

    串行外设接口SPI通信协议的应用

    SPI串行外设接口(SerialPeripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片
    发表于 01-09 14:58 1842次阅读
    <b class='flag-5'>串行</b>外设<b class='flag-5'>接口</b><b class='flag-5'>SPI</b><b class='flag-5'>通信</b>协议的应用

    嵌入式硬件通信接口协议中的串行通信接口-SPI

    本节继续讲嵌入式硬件通信接口协议中的另外一个串行通信接口-SPI。相比于UART串口协议,
    发表于 02-05 11:35 1624次阅读
    嵌入式硬件<b class='flag-5'>通信</b><b class='flag-5'>接口</b>协议中的<b class='flag-5'>串行</b><b class='flag-5'>通信</b><b class='flag-5'>接口</b>-<b class='flag-5'>SPI</b>

    Firefly-RK328-SPI接口介绍

    SPI是一种高速的,全双工,同步串行通信接口,用于连接微控制器、传感器、存储设备等,本文以指纹识别模块为例简单介绍
    的头像 发表于 11-25 10:26 1940次阅读
    Firefly-RK328-<b class='flag-5'>SPI</b><b class='flag-5'>接口</b><b class='flag-5'>介绍</b>

    Firefly-RK3128--SPI接口介绍

    SPI是一种高速的,全双工,同步串行通信接口,用于连接微控制器、传感器、存储设备等,本文以指纹识别模块为例简单介绍
    的头像 发表于 11-28 16:32 2899次阅读
    Firefly-RK3128--<b class='flag-5'>SPI</b><b class='flag-5'>接口</b><b class='flag-5'>介绍</b>

    通信接口的作用_常用的串行通信接口有哪些

    本文首先介绍通信接口的作用,其次阐述了通信接口的种类,最后介绍了常用的
    发表于 03-28 10:33 1.7w次阅读

    基于SPI串行总线接口的Verilog实现

    与各种外围接口器件以串行方式进行通信、交换信息。本文简述了SPI总线的特点,介绍了其4条信号线,SPI
    的头像 发表于 05-29 10:16 5047次阅读
    基于<b class='flag-5'>SPI</b><b class='flag-5'>串行</b>总线<b class='flag-5'>接口</b>的Verilog实现

    SPI 串行外设接口

    **SPI简介:**串行外设接口(Serial Peripheral Interface Bus)SPI是一种用于芯片通信的同步
    发表于 12-20 19:31 9次下载
    <b class='flag-5'>SPI</b> <b class='flag-5'>串行</b>外设<b class='flag-5'>接口</b>

    SPI串行外设接口设计实现

    SPI 全称为 Serial Peripheral Interface,译为串行外设接口。它是 Motorola 公司推出的一种相对高速的同步、全双工的通信总线协议。
    发表于 05-29 15:40 1445次阅读
    <b class='flag-5'>SPI</b><b class='flag-5'>串行</b>外设<b class='flag-5'>接口</b>设计实现