SPI总线

news2024/11/16 17:27:54

目录

声明

1、 SPI简介

2、 SPI特点

2.1采用主-从模式(Master-Slave) 的控制方式

2.2采用同步方式(Synchronous)传输数据

2.3数据交换(Data Exchanges)

2.4 SPI有四种传输模式

2.5 SPI只有主模式和从模式之分。

3、 工作机制

3.1概述

3.2 Timing


声明

转自:SPI详解

1、 SPI简介

SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

2、 SPI特点

2.1采用主-从模式(Master-Slave) 的控制方式

SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave). 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选 (Slave Select) 来控制多个 Slave 设备, SPI 协议还规定 Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备, Slave 设备本身不能产生或控制 Clock, 没有 Clock 则 Slave 设备不能正常工作

2.2采用同步方式(Synchronous)传输数据

Master 设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的.

2.3数据交换(Data Exchanges)

SPI 设备间的数据传输之所以又被称为数据交换是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 "发送者(Transmitter)" 或者 "接收者(Receiver)". 在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据(不管主设备好还是从设备), 相当于该设备有一个 bit 大小的数据被交换了. 一个 Slave 设备要想能够接收到 Master 发过来的控制信号, 必须在此之前能够被 Master 设备进行访问 (Access). 所以, Master 设备必须首先通过 SS/CS pin 对 Slave 设备进行片选, 把想要访问的 Slave 设备选上. 在数据传输的过程中, 每次接收到的数据必须在下一次数据传输之前被采样. 如果之前接收到的数据没有被读取, 那么这些已经接收完成的数据将有可能会被丢弃, 导致 SPI 物理模块最终失效. 因此, 在程序中一般都会在 SPI 传输完数据后, 去读取 SPI 设备里的数据, 即使这些数据(Dummy Data)在我们的程序里是无用的(虽然发送后紧接着的读取是无意义的,但仍然需要从寄存器中读出来)

2.4 SPI有四种传输模式

上升沿、下降沿、前沿、后沿触发。当然也有MSB和LSB传输方式.

2.5 SPI只有主模式和从模式之分。

没有读和写的说法,因为实质上每次SPI是主从设备在交换数据。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。

3、 工作机制

3.1概述

上图只是对 SPI 设备间通信的一个简单的描述, 下面就来解释一下图中所示的几个组件(Module):

  • SSPBUF,Synchronous Serial Port Buffer, 泛指 SPI 设备里面的内部缓冲区, 一般在物理上是以 FIFO 的形式, 保存传输过程中的临时数据;
  • SSPSR, Synchronous Serial Port Register, 泛指 SPI 设备里面的移位寄存器(Shift Regitser), 它的作用是根据设置好的数据位宽(bit-width) 把数据移入或者移出 SSPBUF;
  • Controller, 泛指 SPI 设备里面的控制寄存器, 可以通过配置它们来设置 SPI 总线的传输模式。

通常情况下, 我们只需要对上图所描述的四个管脚(pin) 进行编程即可控制整个 SPI 设备之间的数据通信:

  • SCK, Serial Clock, 主要的作用是 Master 设备往 Slave 设备传输时钟信号, 控制数据交换的时机以及速率;
  • SS/CS, Slave Select/Chip Select, 用于 Master 设备片选 Slave 设备, 使被选中的 Slave 设备能够被 Master 设备所访问;
  • SDO/MOSI, Serial Data Output/Master Out Slave In, 在 Master 上面也被称为 Tx-Channel, 作为数据的出口, 主要用于 SPI 设备发送数据;
  • SDI/MISO, Serial Data Input/Master In Slave Out, 在 Master 上面也被称为 Rx-Channel, 作为数据的入口, 主要用于SPI 设备接收数据;

SPI 设备在进行通信的过程中, Master 设备和 Slave 设备之间会产生一个数据链路回环(Data Loop), 就像上图所画的那样, 通过 SDO 和 SDI 管脚, SSPSR 控制数据移入移出 SSPBUF, Controller 确定 SPI 总线的通信模式, SCK 传输时钟信号。

3.2 Timing

上图通过 Master 设备与 Slave 设备之间交换1 Byte 数据来说明 SPI 协议的工作机制.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/655402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多层感知机与深度学习算法概述

多层感知机与深度学习算法概述 读研之前那会儿我们曾纠结于机器学习、深度学习、神经网络这些概念的异同。现在看来深度学习这一算法竟然容易让人和他的爸爸机器学习搞混…可见深度学习技术的影响力之大。深度学习,作为机器学习家族中目前最有价值的一种算法&#…

6.compute部署nova服务

Nova-compute 是一个非常重要的守护进程,负责创建和终止虚拟机实例,即管理着虚拟机实例的生命周期,在计算节点上运行,负责管理节点上的实例Instance,例如:创建、关闭、重启、挂起、恢复、中止、调整大小、迁…

chatgpt赋能python:Python计算圆的周长

Python计算圆的周长 Python是一种简单易学的编程语言,被广泛应用于各种领域,包括科学、数据分析、网站开发等等。在本文中,我们将介绍如何使用Python计算圆的周长。 什么是圆的周长 圆的周长是指圆周的长度,也就是圆内任意两点…

chatgpt赋能python:Python计算加法-简单易学,快速实现

Python计算加法 - 简单易学,快速实现 介绍 Python是一种高级编程语言,因其优雅简洁的语法和强大的功能而备受开发者的喜爱。Python不仅可以应用于数据科学领域,也广泛用于Web开发、网络编程、图形界面和游戏等领域。在这篇文章中&#xff0…

Java之异常

Java之异常 异常 抛出异常 所有标准异常类都有两个构造器:一个是默认构造器,另一个是接收字符串作为参数的构造器。使用throw关键字来抛出异常对象。可以抛出任何类型的Throwable对象,它是异常类型的根类。但是通常来说,我们对于…

【IC设计】数字IC设计读书笔记

文章目录 《专用集成电路设计实用教程》集成电路系统的组成集成电路的设计流程综合转化逻辑优化映射同步电路和异步电路亚稳态单时钟同步设计的时序约束目标库和初始环境设置DC如何计算每个逻辑单元的延迟(Cell Delay)?target librarylink li…

举个栗子~Tableau 技巧(255):文本表中高亮最新日期的数据

对于需要每天查看业务数据的分析用户来说,在刷新工作簿的数据之后,如果能高亮显示当天的数据(如下图),就可以事半功倍了! 那么,在 Tableau 中该如何高亮文本表最新的数据呢?今天的栗…

什么是HMI和SCADA?两者有什么区别

前言 几十年来,工业控制系统在工业自动化中发挥了重要作用,它允许过程制造商从生产车间采集、分析、处理数据。 在当今瞬息万变的工业环境中,制造商和公用事业公司必须采用现代HMI/SCADA和数字化转型,以跟上变化的步伐&#xff0…

阿里云云主机:ECS/轻量/虚拟主机/GPU/云电脑详解

阿里云云主机分为云虚拟主机、云服务器ECS、轻量应用服务器、GPU云服务器、弹性裸金属服务器、专有宿主机、FPGA云服务器、高性能计算E-HPC、无影云电脑等,阿里云百科来详细说下阿里云云主机详解: 目录 阿里云云主机 云服务器ECS 轻量应用服务器 云…

Java之面向对象

Java之面向对象 一切皆对象。 编译型语言:编译器会将我们编写的源码一次性地编译成计算机可识别的二进制文件,然后计算机直接执行。如c、c等。 解释型语言:在程序运行时,解释器会一行行读取我们的代码,然后实时地将这…

重学图结构

图 图的描述 G (V, E),一个偶对V:顶点(数据元素)组成的有穷非空集合{E}:边的有穷集合、图的逻辑结构:多对多 相关术语 无向图:每条边都是无方向的,如下图1 有向图:…

信息技术专业标准体系框架设计研究与思考

为了支撑企业数字化转型智能化发展工作,近期对信息技术专业标准体系进行了简单的梳理,借助ChatGPT进行分类设计分析,并对国际、行业及其他公司的信息技术专业标准体系进行了调研学习,最终形成了信息技术专业标准体系框架的思考建议…

【备战秋招】每日一题:4月23日美团春招第三题:题面+题目思路 + C++/python/js/Go/java带注释

为了更好的阅读体检,为了更好的阅读体检,,可以查看我的算法学习博客第三题-农村大亨 在线评测链接:P1247 题目内容 塔子哥是一个喜欢种田类的游戏的人,他觉得这样的游戏可以让他体验到农民的乐趣,同时也可以锻炼他的…

MYSQL中 find_in_set() 函数用法详解

MYSQL中 find_in_set() 函数用法详解 官方涵义(MySQL手册中语法说明) FIND_IN_SET(str,strlist) : str 要查询的字符串,strlist 需查询的字段,参数以”,”分隔,形式如 (1,2,6,8,10,22);该函数的…

分布式存储与并行处理环境配置:Hadoop、HBase和Spark等

本文介绍Linux系统中配置Hadoop、HBase和Spark环境,包括安装Java运行环境、下载安装包、进行配置和测试。通过这种方式,可以搭建一个强大的分布式计算环境,用于处理大规模数据集。为了成功配置Hadoop、HBase和Spark环境,需要理解它…

chatgpt赋能python:Python实现输出在同一行的技巧

Python实现输出在同一行的技巧 介绍 在Python中,我们经常需要将一些文本或者变量输出到控制台上,以便查看或者进行交互式调试。但是默认情况下,每次输出都会换行展示,这在某些情况下可能会让输出显得比较混乱,尤其是…

Ubuntu安装及使用教程

Ubuntu安装及使用教程 一、基本介绍二、vmware下安装ubuntu系统三、ubuntu系统使用 回到目录   回到末尾 一、基本介绍 对于ubuntu而言,就是linux操作系统的具体,而linux对于ubuntu来说就是他的抽象;在linux操作系统中,因为应用…

SSD202D-挂载根文件系统

参考链接: 启明云端分享|SSD20X 如何使用SD卡根文件系统_sudo./make_sd.sh_启明智显的博客-CSDN博客 启明云端分享|SSD202D核心板使用NFS_lx_mem=0x3f00000 mma_heap=mma_heap_name0,miu=0,sz=_启明智显的博客-CSDN博客 然后思路: 1.要在kernel打开文件系统格式支持 CONFIG_…

chatgpt赋能python:Python计算圆面积方法教程

Python计算圆面积方法教程 你是否想过如何用Python计算圆面积?圆形是一个基本的几何形状,计算圆的面积是一个必要的技能。Python作为一种流行的编程语言,可以帮助我们更轻松地计算圆的面积。本教程将介绍如何使用Python计算圆的面积。 什么…

【Red Hat7.9安装Oracle11g--调用图形化界面的几种方式】

【Red Hat7.9安装Oracle11g--调用图形化界面的几种方式】 🔻 一、续上一篇[【Red Hat 7.9---详细安装Oracle 11g---图形化界面方式】](https://blog.csdn.net/qq_41840843/article/details/131198718?spm1001.2014.3001.5501)⛳ 1.1 前言⛳ 1.2 方式一、使用Xmanag…