串行外设接口 (SPI) 总线是一个工作在全双工模式下的同步串行数据链路。它可用于在单个主控制器和一个或多个从设备之间交换数据。其简单的实施方案只使用四条支持数据与控制的信号线(图 1):


图1:基本 SPI 总线

虽然表 1 中的引脚名称来自摩托罗拉开发的 SPI 标准,但具体集成电路的 SPI 端口名称往往与图 1 中所示的不同。

表1:SPI 引脚名称分配

SPI 数据速率一般在1到70MHz 的范围内,字长为从8位及12位到这两个值的倍数。

数据传输一般由数据交换构成。在主控制器向从设备发送数据时,从设备也向主控制器发送数据。因此主控制器的内部移位寄存器和从设备都采用环形设置(图 2)。

图2:双移位寄存器形成一个芯片间的环形缓存器

在数据交换之前,主控制器和从设备会将存储器数据加载至它们的内部移位寄存器。收到时钟信号后,主控制器先通过MOSI线路时钟输出其移位寄存器的MSB。同时从设备会读取位于SIMO的主控器第一位元,将其存储在存储器中,然后通过SOMI时钟输出其MSB。主控制器可读取位于MISO的从设备第一位元,并将其存储在存储器中,以便后续处理。整个过程将一直持续到所有位元完成交换,而主控器则可让时钟空闲并通过 /SS禁用从设备。

除设置时钟频率外,主控制器还可根据数据配置时钟极性和相位。这两个分别称为CPOL与CPHA的选项可实现时钟信号180度的相移以及半个时钟周期的数据延迟。图3是相应的定时图。

图3:时钟极性与相位的定时图

CPOL=0 时,时钟空闲在逻辑 0 位置上:

  • 如果CPHA=0,数据在SCK的上升沿读取,在下降沿变化。

  • 如果CPHA=1,数据在SCK的下降沿读取,在上升沿变化。

CPOL=1时,时钟在逻辑为高时空闲:

  • 如果 CPHA = 0,数据在SCK的下降沿读取,在上升沿变化。

  • 如果 CPHA = 1,数据在SCK的上升沿读取,在下降沿变化。

在SPI中,主控制器可与单个或多个从设备通信。如果是一个单从设备,从设备选择信号可连接至从设备的本地接地电位,实现永久接入。对使用多个从设备的应用,可使用两种配置:独立从设备与菊花链从设备(图 4)。

图 4:主控制器与独立从设备(左)及菊花链从设备通信(右)

要与从设备单独通信,主控制器必须提供多重从设备选择信号。该配置通常用于必须单独访问多个模数转换器(ADC)及数模转换器(DAC)的数据采集系统中。

菊花链从设备只需要主控制器提供一个从设备选择信号,因为这种配置要求所有从设备同时启用,以确保数据不间断地流经该链路中的所有移位寄存器。典型应用是工业I/O模块中的级联多通道输入串行器与输出驱动器。

德仪社区网友点评:

虽然我是初学者,但是仍然能看到作者写的很深入,SPI的基本组成啊,以及一些使用还有拓展到与从设备单独通信,菊花链,有些名词是在这里新学到的,这次学习了,并且我也会常来看看文章,多学习学习,希望在这个社区可以看到更多精彩的文章!

之前有看过SPI的介绍,看的有点迷糊,第二张图很形象,一下就能看出数据线上的数据流,高位在前,MISO与MOSI上同时有数据也就明白了,要是断开MOSI与MISO,那么8个时钟之后寄存器的数据是什么?全0还是全1?

断开MOSI与MISO,那么8个时钟之后寄存器的数据是什么?全0还是全1?

如果断开MOSI,也就是说master吐出的数据slave没有收到咯,那slave的MISO引脚置高那slave的寄存器里就都是1咯,否则相反;至于master对应的寄存器里的数据就要看MISO引脚如何连接的咯。

千字短文解决工程师们关于SPI的迷糊!的更多相关文章

  1. 一万五千字的Dissertation你真的会写了吗?

    在英国留学的同学们想要顺利毕业,就必须要过Dissertation这一关.而一篇Dissertation字数可能多大一万五千字,其写作难度之大让很多留学生疯狂吐槽.那么这么多字的Dissertatio ...

  2. 肝了75天,五万五千字,《Spring Boot 进阶》专栏文章整理成册,分享~

    前言 Spring Boot 这个专栏从早期的体系构建到写完,总共花费了七十五天,期间由于工作及个人原因停更了一段时间,没办法,工作实在太忙了. 很多人疑惑了,为什么源码介绍过了就结束了?高级的部分不 ...

  3. 【自编教材】16万8千字的HTML+CSS基础 适合从0到1-可收藏

    [图片链接有点小问题,这几天更新,敬请期待!] 目 录 第一章HTML基础 1.1 HTML简介和发展史 1.1.1 什么是HTML 1.1.2 HTML的发展历程 1.1.3 web标准 1.2 开 ...

  4. 面渣逆袭:二十二图、八千字、二十问,彻底搞定MyBatis!

    大家好,我是老三,面渣逆袭系列继续,这节我们的主角是MyBatis,作为当前国内最流行的ORM框架,是我们这些crud选手最趁手的工具,赶紧来看看面试都会问哪些问题吧. 基础 1.说说什么是MyBat ...

  5. PHP经典乱码“口”字与解决办法

    这几天看了看 Ajax 的基础知识,在练习一个简单的 请求和响应时,PHP 返回来的数据 在 IE 中开头总显示 一个 “锘” 字!上网 Baidu 了一下,发现这是由于 系统 处理 UTF-8 的方 ...

  6. word: 插入或修改文字时后面的字消失 解决办法

    在编辑Word文档中的文字时,我们有时需要插入或修改文字,可是在插入或修改时会发现改动处后面的文字会消失.比如插入或修改3个字,后面的文字随之也会消失3个,这时该怎么办呢? 点击-“文件”-“选项”- ...

  7. (5千字)由浅入深讲解动态规划(JS版)-钢条切割,最大公共子序列,最短编辑距离

    斐波拉契数列 首先我们来看看斐波拉契数列,这是一个大家都很熟悉的数列: // f = [1, 1, 2, 3, 5, 8] f(1) = 1; f(2) = 1; f(n) = f(n-1) + f( ...

  8. 【陪你系列】5 千字长文+ 30 张图解 | 陪你手撕 STL 空间配置器源码

    大家好,我是小贺. 点赞再看,养成习惯 文章每周持续更新,可以微信搜索「herongwei」第一时间阅读和催更,本文 GitHub https://github.com/rongweihe/MoreT ...

  9. 想知道Vue3与Vue2的区别?五千字教程助你快速上手Vue3!

    从Vue3发布以来,我就一直对其非常感兴趣,就一直想着将其投入公司的生产中,但是开始考虑到很多不确定性就暂时对一些很小的功能进行一些尝试:慢慢的发现组合式Api的形式非常适合开发(个人感觉),尤其是V ...

随机推荐

  1. 第163天:js面向对象-对象创建方式总结

    面向对象-对象创建方式总结 1. 创建对象的方式,json方式 推荐使用的场合: 作为函数的参数,临时只用一次的场景.比如设置函数原型对象. var obj = {}; //对象有自己的 属性 和 行 ...

  2. 从原理上搞定编码(二)-- Web编码

    周末宅在家里睡完觉就吃饭,吃完饭接着睡觉,这日子过的实在是没劲啊.明明还有计划中的事情没有做, 为什么就是不想去做呢,这样的生活持续下去,必然会成为一个彻头彻尾的loser.上一篇写的 初识编码 ,这 ...

  3. Python 模板 Jinja2

    Python 模板 Jinja2 模板 要了解Jinja2,就需要先理解模板的概念.模板在Python的web开发中广泛使用,它能够有效的将业务逻辑和页面逻辑分开,使代码可读性更强.更加容易理解和维护 ...

  4. day06 小数据池和编码

    一. 上次课内容回顾字典:由{}括起来. 每个元素用逗号隔开, key:value的形式存储数据key: 不可变的. 可哈希的.增删改查:1. 增加: 直接用新key来赋值. dict[key] = ...

  5. WIN7 右下角音量图标不见了

    1.呼叫出  任务管理器,结束掉 explorer.exe 进程 2.新建任务,浏览,找到 C:/windows/system32/systray.exe,确定加载 3.新建任务,输入explorer ...

  6. 【刷题】BZOJ 2780 [Spoj]8093 Sevenk Love Oimaster

    Description Oimaster and sevenk love each other. But recently,sevenk heard that a girl named ChuYuXu ...

  7. 洛谷P2125图书馆书架上的书 题解报告

    题目描述 图书馆有n个书架,第1个书架后面是第2个书架,第2个书架后面是第3个书架……第n-1个书架后面是第n个书架,第n个书架后面是第1个书架,第i个书架上有b[i]本书.现在,为了让图书馆更美观, ...

  8. 网络协议之mDNS20170217

    DNS(Domain Name System,域名系统)因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得 ...

  9. 手把手教你如何玩转Activiti工作流

    手把手教你如何玩转Activiti工作流 置顶 2018年01月30日 19:51:36 Cs_hnu_scw 阅读数:24023   版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

  10. 【OpenCV】SIFT原理与源码分析:关键点描述

    <SIFT原理与源码分析>系列文章索引:http://www.cnblogs.com/tianyalu/p/5467813.html 由前一篇<方向赋值>,为找到的关键点即SI ...