数字接口系列文章:SPI 总线

SPI总线

SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。

图8-27 SPI总线的系统

图 2 两个移位寄存器形成一个内部芯片环形缓冲器

CPOL = 0 时,时钟在逻辑 0 处空闲:

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

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

CPOL = 1时,时钟在逻辑高电平处空闲:

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

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

图 4 主节点与独立从节点(左)以及菊花链式从节点(右)进行通信

1、SPI总线主要特点

· 全双工;

· 可以当作主机或从机工作;

· 提供频率可编程时钟;

· 发送结束中断标志;

· 写冲突保护;

2、接口定义

该总线通信基于主-从配置。它有以下4个信号:

MOSI:Master Out Slave In主出/从入

MISO:Master In Slave Out 主入/从出

SCK:Serial Clock 串行时钟

SS:Slave Select 从属选择

芯片上“从属选择”(slave-select)的引脚数决定了可连到总线上的器件数量。

3、SPI时序分析

在SPI传输中,数据是同步进行发送和接收的。数据传输的时钟基于来自主处理器的时钟脉冲,摩托罗拉没有定义任何通用SPI的时钟规范。然而,最常用的时钟设置基于时钟极性(CPOL)和时钟相位(CPHA)两个参数,CPOL定义SPI串行时钟的活动状态,而CPHA定义相对于SO-数据位的时钟相位。CPOL和CPHA的设置决定了数据取样的时钟沿。如图1所示,根据CPOL和CPHA的不同,有四种不同的工作模式。

图1 SPI时序分析

其中,CPOL是用来决定SCK时钟信号空闲时的电平。CPOL=0,空闲电平为低电平,CPOL=1时,空闲电平为高电平。CPHA用来决定采样时刻的,CPHA=0,在每个周期的第一个时钟沿采样。CPHA=1,在每个周期的第二个时钟沿采样。

CPHA = 0表示在每个周期的第一个时钟沿采样,对应存在delay;

CPHA = 1表示在每个周期的第二个时钟沿采样,对应无delay。

数字接口系列文章:SPI 总线相关推荐

  1. 单片机软件模拟SPI接口—加深理解SPI总线协议

    单片机软件模拟SPI接口-加深理解SPI总线协议   SPI(Serial Peripheral Interfacer 串行外设接口)是摩托罗拉公司推出的一种同步串行通讯接口,用于微处理器臌控制器和外 ...

  2. LINUX SPI设备驱动模型分析之二 SPI总线模块分析

    上一篇文章我们简要介绍了SPI驱动模块,本章我们详细说明一下spi总线.设备.驱动模块的注册.注销以及这几个模块之间的关联. SPI总线的注册 spi模块也是基于LINUX设备-总线-驱动模型进行开发 ...

  3. SPI协议、MCP2515裸机驱动详解----主流SPI总线接口原理

    最近看到一个介绍SPI接口原理的帖子,看完觉得甚好.特来分析给大家一起学习. SPI概述 Serial Peripheral interface 通用串行外围设备接口 是Motorola首先在其MC6 ...

  4. Linux SPI总线和设备驱动架构之二:SPI通用接口层

    通过上一篇文章的介绍,我们知道,SPI通用接口层用于把具体SPI设备的协议驱动和SPI控制器驱动联接在一起,通用接口层除了为协议驱动和控制器驱动提供一系列的标准接口API,同时还为这些接口API定义了 ...

  5. AXI_01 《AXI总线系列文章》由来

    笔者从学习ZYNQ开始接触AXI总线,绝大多数学习ZYNQ的资料中都是从定义一个简单的自定义IP核开始的,设计一个通过PS端ARM,写一段C代码通过AXI总线读写自定义IP核的寄存器,来完成LED流水 ...

  6. Python接口自动化测试系列文章汇总

    2020 05 20 今天距2021年225天 这是ITester软件测试小栈第125次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 07:30准时推 ...

  7. Arduino 解读系列(1)数字接口/模拟接口

    原文地址:https://www.jianshu.com/p/839e8f58335c       最近接触到一款入门级嵌入式产品------ Arduino,非常容易上手且很有趣,可以很方便的搭建出 ...

  8. FPGA信号处理系列文章——数字锁相环

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 FPGA信号处理系列文章--数字锁相环 锁相环的一些概念 鉴相器 Matlab 程序 锁相环的一些概念 1.捕获.锁定与跟踪的概念 捕 ...

  9. SPI协议概括、SPI总线工作的四种方式和SPI接口时序

    SPI协议概括: SPI总线是一种4线总线,因其硬件功能很强,所以与SPI有关的软件就相当简单,使中央处理器(Central Processing Unit,CPU)有更多的时间处理其他事务.正是因为 ...

最新文章

  1. 六年级计算机word处理,六年级上信息技术教案Word大变身用Word制作网页河大版
  2. Java 数据类型缓存池
  3. 【数字信号处理】相关函数应用 ( 相关函数应用场景 | 噪声中检测信号原理 )
  4. OQPSK:Offset Quadrature Phase Shift Keying偏移正交相移键控的MATLAB仿真/FPGA实现
  5. Java 动态修改的数组——ArrayList
  6. Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。
  7. 描述java源程序构成_2.1 Java程序的构成
  8. 每日一课(10/75)CPU资源和存储器 之 专用寄存器的作用
  9. 【翻译】十大要避免的Ext JS开发方法
  10. 从单目视觉信息学习深度信息(一)
  11. 解决 uni-app编译报错 Error: No matching use for foo.js
  12. Windows10 Hyper-v 虚拟机安装点心云,实现闲置宽带共享。
  13. Eigenvalue of random matrix
  14. [CVPR2020]FaceScape: a Large-scale High Quality 3D Face Dataset and Detailed Riggable 3D Face
  15. 安卓手机怎么设置蓝牙耳机弹窗动画_链接2020.3.3其他团无线蓝牙耳机
  16. 京东金融的贷款规模创新高
  17. 软考系统集成项目管理工程师历年真题汇总(2020-2022)
  18. Js 加载事件(onload) 可以作用的标签
  19. Android 调节屏幕亮度(当前应用和系统亮度)
  20. 好一朵美丽的永生花,芬芳美丽满枝桠

热门文章

  1. matplotlib调整子图尺寸,消除大图白边框
  2. numpy 二维、高维矩阵重新排列轴与数据(轴转换)
  3. python使用停用词表过滤词
  4. pandas重采样时指定对不同列的不同操作
  5. 日志显示TypeError: Failed to fetch报错与TypeError: NetworkError when attempting to fetch resource报错
  6. class 'memcache' not found php,PHP Fatal error: Class 'Memcache' not found in
  7. keil4怎么移植其他人的程序_【调试笔记】韦东山:在100ask_imx6ull上移植使用六轴传感器ICM20608...
  8. import java文件,java 文件夹操作,java文件夹,import java.
  9. java程序员从笨鸟到菜鸟之_Java程序员从笨鸟到菜鸟之(二)面向对象之封装,继承,多态(上)...
  10. window7安装MongoDB详细步骤