数字接口系列文章:SPI 总线
数字接口系列文章: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 总线相关推荐
- 单片机软件模拟SPI接口—加深理解SPI总线协议
单片机软件模拟SPI接口-加深理解SPI总线协议 SPI(Serial Peripheral Interfacer 串行外设接口)是摩托罗拉公司推出的一种同步串行通讯接口,用于微处理器臌控制器和外 ...
- LINUX SPI设备驱动模型分析之二 SPI总线模块分析
上一篇文章我们简要介绍了SPI驱动模块,本章我们详细说明一下spi总线.设备.驱动模块的注册.注销以及这几个模块之间的关联. SPI总线的注册 spi模块也是基于LINUX设备-总线-驱动模型进行开发 ...
- SPI协议、MCP2515裸机驱动详解----主流SPI总线接口原理
最近看到一个介绍SPI接口原理的帖子,看完觉得甚好.特来分析给大家一起学习. SPI概述 Serial Peripheral interface 通用串行外围设备接口 是Motorola首先在其MC6 ...
- Linux SPI总线和设备驱动架构之二:SPI通用接口层
通过上一篇文章的介绍,我们知道,SPI通用接口层用于把具体SPI设备的协议驱动和SPI控制器驱动联接在一起,通用接口层除了为协议驱动和控制器驱动提供一系列的标准接口API,同时还为这些接口API定义了 ...
- AXI_01 《AXI总线系列文章》由来
笔者从学习ZYNQ开始接触AXI总线,绝大多数学习ZYNQ的资料中都是从定义一个简单的自定义IP核开始的,设计一个通过PS端ARM,写一段C代码通过AXI总线读写自定义IP核的寄存器,来完成LED流水 ...
- Python接口自动化测试系列文章汇总
2020 05 20 今天距2021年225天 这是ITester软件测试小栈第125次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 07:30准时推 ...
- Arduino 解读系列(1)数字接口/模拟接口
原文地址:https://www.jianshu.com/p/839e8f58335c 最近接触到一款入门级嵌入式产品------ Arduino,非常容易上手且很有趣,可以很方便的搭建出 ...
- FPGA信号处理系列文章——数字锁相环
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 FPGA信号处理系列文章--数字锁相环 锁相环的一些概念 鉴相器 Matlab 程序 锁相环的一些概念 1.捕获.锁定与跟踪的概念 捕 ...
- SPI协议概括、SPI总线工作的四种方式和SPI接口时序
SPI协议概括: SPI总线是一种4线总线,因其硬件功能很强,所以与SPI有关的软件就相当简单,使中央处理器(Central Processing Unit,CPU)有更多的时间处理其他事务.正是因为 ...
最新文章
- 六年级计算机word处理,六年级上信息技术教案Word大变身用Word制作网页河大版
- Java 数据类型缓存池
- 【数字信号处理】相关函数应用 ( 相关函数应用场景 | 噪声中检测信号原理 )
- OQPSK:Offset Quadrature Phase Shift Keying偏移正交相移键控的MATLAB仿真/FPGA实现
- Java 动态修改的数组——ArrayList
- Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。
- 描述java源程序构成_2.1 Java程序的构成
- 每日一课(10/75)CPU资源和存储器 之 专用寄存器的作用
- 【翻译】十大要避免的Ext JS开发方法
- 从单目视觉信息学习深度信息(一)
- 解决 uni-app编译报错 Error: No matching use for foo.js
- Windows10 Hyper-v 虚拟机安装点心云,实现闲置宽带共享。
- Eigenvalue of random matrix
- [CVPR2020]FaceScape: a Large-scale High Quality 3D Face Dataset and Detailed Riggable 3D Face
- 安卓手机怎么设置蓝牙耳机弹窗动画_链接2020.3.3其他团无线蓝牙耳机
- 京东金融的贷款规模创新高
- 软考系统集成项目管理工程师历年真题汇总(2020-2022)
- Js 加载事件(onload) 可以作用的标签
- Android 调节屏幕亮度(当前应用和系统亮度)
- 好一朵美丽的永生花,芬芳美丽满枝桠
热门文章
- matplotlib调整子图尺寸,消除大图白边框
- numpy 二维、高维矩阵重新排列轴与数据(轴转换)
- python使用停用词表过滤词
- pandas重采样时指定对不同列的不同操作
- 日志显示TypeError: Failed to fetch报错与TypeError: NetworkError when attempting to fetch resource报错
- class 'memcache' not found php,PHP Fatal error: Class 'Memcache' not found in
- keil4怎么移植其他人的程序_【调试笔记】韦东山:在100ask_imx6ull上移植使用六轴传感器ICM20608...
- import java文件,java 文件夹操作,java文件夹,import java.
- java程序员从笨鸟到菜鸟之_Java程序员从笨鸟到菜鸟之(二)面向对象之封装,继承,多态(上)...
- window7安装MongoDB详细步骤