SPI协议介绍

2023-11-06

在调试LCD驱动时用到了SPI接口,因此将了解、理解到的SPI知识记录下来,SPI接口有三线和四线两种类型,这里只介绍常用的四线类型

what(简单介绍)

在这里插入图片描述

术语表

name describe
CS 片选:用于选择、使能从机
SCLK 时钟线:主从机同步信号,由主机输出
MOSI 主机(master)输出,从机(slave)输入
MISO 主机(master)输入,从机(slave)输出
CPOL 时钟极性:决定了时钟线(SCLK)在空闲时的电平
CHPA 相位:决定了MOSI和MISO是在SCLK的第一个电平变化沿还是第二个电平变化沿采集信号

基本概念

1.spi全称串行外设接口(Serial Peripheral Interface),是一种同步、全双工通信协议
2.spi支持单主机、多从机的通信方式
3.通信所用四根信号线分别为CS、SCLK、MOSI、MISO
4.CS由主机选择拉高或者拉低来选择对应的从机做通信
5.同步通过SCLK实现,由主机输出
6.全双工通过MOSI、MISO实现
7.可以先传输数据的高位也可以先传输低位,主从机之间需要同步协调
8.CPOL可以为0或者1,0代表时钟线空闲的时候为低电平,1代表时钟线空闲的时候为高电平
9.CPHA可以为0或者1,0代表主机、从机在第一个电平变化沿采集读取MISO、MOSI的电平数据,在第二个电平变化沿改变(输出)MISO、MOSI的电平数据;1代表主机、从机在第二个电平变化沿采集读取MISO、MOSI的电平数据,在第一个电平变化沿改变(输出)MISO、MOSI的电平数据
10.主机需要根据从机的协议来设置一致的CPOL和CPHA,这样双方才可以在正确的SCLK时序读取数据

why(优点特点)

1.高速、全双工
2.只占用芯片四根线,节约管脚资源,方便电路设计和PCB布局
3.硬件功能强大,软件上简单易用
4.广泛应用于微控制器和外围IC通信
**缺点:没有应答机制确保数据传输的正确性、没有流控制、只支持单主机、每个从机都需要接一根片选线

how(过程)

主机拉高或者拉低CS选择使能从机,根据CPOL和CPHA在相应的时序(SCLK)下,通过MOSI、MISO传输数据。传输完成后,恢复CS和SCLK电平状态,等待下一次传输。
根据基本概念8、9,CPOL和CPHA有四种组合,即SPI有四种工作模式

模式 描述
SPI0 CPOL=0,CPHA=0,时钟空闲时为低电平,第一个时钟变化沿(上升沿)采集信号MOSI、MISO,第二个时钟变化沿(下降沿)输出(改变)信号MOSI、MISO
SPI1 CPOL=0,CPHA=1,时钟空闲时为低电平,第一个时钟变化沿(上升沿)输出(改变)信号MOSI、MISO,第二个时钟变化沿(下降沿)采集信号MOSI、MISO
SPI2 CPOL=1,CPHA=0,时钟空闲时为高电平,第一个时钟变化沿(下降沿)采集信号MOSI、MISO,第二个时钟变化沿(上升沿)输出(改变)信号MOSI、MISO
SPI3 CPOL=1,CPHA=1,时钟空闲时为高电平,第一个时钟变化沿(下降沿)输出(改变)信号MOSI、MISO,第二个时钟变化沿(上升沿)采集信号MOSI、MISO

其中,SPI0和SPI3比较常用,下面为逻辑分析仪输出这两种工作模式的信号波形(先传高位),由于现在手头没有从机设备,因此缺少MISO波形。
1.SPI0:CPOL=0,CPHA=0
在这里插入图片描述
2.SPI0:CPOL=1,CPHA=1
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SPI协议介绍 的相关文章

  • No input file specified 记一次令人绝望的后端环境部署问题

    背景 从别人那接手一个项目 基于laravel的 开发环境用的是LNMP 现在要将这个项目部署到自己的服务器 使用LNMP一键安装包 在服务器配置lnmp环境 然后将接手的项目解压到目录 home wwwroot 配置nginx的serve
  • HBase Windows 安装

    一 写在前面 在安装HBase之前 我们需要先安装JDK和Hadoop 具体JDK和Hadoop的安装我前面已经做过了 需要的话 请看我的另一篇博客 Hadoop Windows 安装 还是那句话 在安装HBase之前 我们需要搞清楚HBa
  • strongswan编译、配置

    strongswan编译 下载strongswan源码后 在命令行执行 configure h 会打印出来编译时的配置选项 比较重要有 prefix PREFIX PREFIX为编译完成后的可执行文件 库文件以及配置文件等的安装目录 运行目
  • mBed Pelion学习笔记(三) Updating device firmware

    一 Device Management Update client 本节介绍如何通过Device Management Update client 来接收更新 为了设置设备上的客户端 我们需要准备好 固件镜像 和 引导程序 同时还需要一个独
  • Java 多线程 --- 线程同步 volatile关键字

    Java 多线程 线程同步 volatile关键字 volatile keyword 使用volatile保证可见性 使用volatile禁止指令重排 volatile keyword Volatile是Java虚拟机提供的轻量级的同步机制
  • 【unity记录】导入标准资源包(Standard Assets)

    想导入一些后期效果试试看 按书上的步骤行不通了 书已经是几年前的了 旧版本的方式是 Assets gt Import Package gt Effects 新版本以后只有Custom Package了 所以只能从AssetsStore下载标
  • Linux中_使用 df_du_命令_查看磁盘空间文件大小

    文章目录 Linux 查看磁盘空间 Linux 查看磁盘空间可以使用 df 和 du 命令 1 df 2 du 3 其他一些可以查看详细linux系统信息的命令和方法 Linux 查看磁盘空间 Linux 查看磁盘空间可以使用 df 和 d

随机推荐

  • 经验模态分解法简析 (转)

    http blog sina com cn s blog 55954cfb0102e9y2 html 美国工程院士黄锷博士于1998年提出的一种信号分析方法 重点是黄博士的具有创新性的经验模态分解 Empirical Mode Decomp
  • sql语句练习50题(Mysql版)

    表名和字段 1 学生表 Student s id s name s birth s sex 学生编号 学生姓名 出生年月 学生性别 2 课程表 Course c id c name t id 课程编号 课程名称 教师编号 3 教师表 Tea
  • 使用Python制作疫情数据分析可视化图表(三)

    python小白 在 一心学 公众号学习了一点疫情数据分析可视化的课程 记录下来 供小白参考 目录 一 基本数据的查看和初步处理 二 时间序列与区域划分 三 快速查看不同省市疫情现状 四 累计确诊病例走势 五 不同省市确诊新增情况 六 全国
  • 如何启动docker服务

    Docker Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 然后发布到任何流行的 Linux或Windows操作系统的机器上 也可以实现虚拟化 容器是完全使用沙箱机制 相互之间不会有任何接
  • imagenet val 按类别分类

    前言 有时候想看imagenet下某个类别的效果 但它又没划分 之前看了这篇文章将ImageNet的验证集val数据分类到不同文件夹中 但不是很清楚那代码 本文基于它的代码去做更改 把这个下下来 https raw githubuserco
  • React Native_手把手教你做项目(二.视频列表页布局&Mock虚拟数据)

    我们继续在上一篇文章的基础上编写我们的应用程序 视频列表页List 我们先写垃圾代码 把整个的架子搭起来 然后如果有其他页面通用的组件的话 我们再进行封装处理 ListView布局 list js文件 import React Compon
  • 内部类、枚举、Object类

    内部类 定义在一个类的内部的类 作用 1 内部类和外部类可以互相访问其成员 2 通过内部类 可以实现多继承 3 缺点 结构复杂 代码可读性不强 分类 成员内部类 1 不能有static属性和方法 原理同局部变量不能用static修饰 但是s
  • NumPy库学习笔记(未完)

    NumPy库 这篇文章主要内容来源于Python Numpy 教程 NumPy 中文和python常用库 NumPy 和 sklearn入门 ML小菜鸟 博客园 cnblogs com 1 1 导入NumPy库 import numpy a
  • VS Code常用插件安装及使用

    C C 开发常用插件安装 C C 在C C 开发中 这个肯定是必须的 C C Snippets C C 重用代码块 C C Advanced Lint C C 静态检测 Code Runner 代码运行 Include AutoComple
  • 小程序如何获取当前的天气预报

    大家好 我是陈楠酒肆 今天我为大家分享的是小程序获取当前的天气预报 我们先看看效果图 在实现这个效果之前我们需要引用一个JS文件 就是amap wx js 这个文件可以在我的交流群里下载 由于这里我使用了高德地图密钥 因此 大家还需要在高德
  • 论文研读 —— 10. PCA-Kalman: device-free indoor human behavior detection with commodity Wi-Fi (2/3)

    文章目录 3 2 Online behavior testing phase 4 Experimental setup 4 1 Hardware testbed 4 2 Experimental scenarios 3 2 Online b
  • 设计之星 ai_“AI创新之星”评选活动征集工作已启动,6月15日止,速来!

    为了推动人工智能与实体经济发展的深度融合 充分展示国内企业和创业团队在人工智能领域的创新成果 中国人工智能 多媒体信息识别技术竞赛 组委会在竞赛期间组织开展 AI创新之星 评选活动项目征集工作 评 选 范 围 评选主要围绕 深化融合应用 培
  • randomforestregressor参数详解

    randomforestregressor参数详解 sklearn ensemble RandomForestRegressor n estimators 10 数值型参数 默认值为100 此参数指定了弱分类器的个数 设置的值越大 精确度越
  • 【JAVA基础】核心机制

    b站大学课程笔记 下面是课程链接 https www bilibili com video BV1364y1k7WG p 11 spm id from pageDriver vd source b53165477127ff81132dc79
  • 编译gnome-sharp-2.20.1出错

    To solve the problem gtk2 development library must be installed Under CentOS this can be done with yum groupinstall Deve
  • 密码正则

    正则一 密码正则 密码需包含字母 符号或者数字中至少两项且长度超过6位数 最多不超过16位数 const regPwd str gt let zmReg A Za z 大小写字母 let numReg 0 9 数字 let zfReg A
  • QTcp-心跳

    心跳机制 大致实现两中 心跳发起的主动方为谁 server或client 其基本思路 是在一定时间间隔内模拟server和client的通信 所以 这就比一般通信多了时间属性 而非随意进行交互 这里 我们将client作为主动方 其过程如下
  • 通过递归方法更改对象中的属性值

    需求 递归一个对象 我们更改其type全部为5 我们首先思考如果用每一层的循环我们怎么取解决 var data label 一级 1 type 1 children label 二级 1 1 type 1 children type 1
  • 有人提议扣程序员80%的税分给穷人,多人点赞。

    大家好 我是北妈 0 现在经济不好 很多人内心很慌 然后就有人开始打歪主意了 比如今天我看到了这个 这个说法甚至得到了很多人的支持和点赞 为什么会有很多人支持这种想法呢 毕竟在大家眼睛里 程序员是高薪 有钱的代名词 在大多数人工资收入都很低
  • SPI协议介绍

    在调试LCD驱动时用到了SPI接口 因此将了解 理解到的SPI知识记录下来 SPI接口有三线和四线两种类型 这里只介绍常用的四线类型 what 简单介绍 术语表 基本概念 why 优点特点 how 过程 what 简单介绍 术语表 name