SPI硬件设计、协议、速率全解析
SPI硬件电路
SPI(Serial Peripheral Interface)是一种嵌入式产品常用的板级高速、全双工通信总线。
它采用1主多从的方式进行通信。
整个通信的物理层通常需要(3+N)根线。
3指的是:SCK、MOSI、MISO
N指的是片选线:片选线的数量取决于具体的从机数量及从机配置模式;
1从机时: 只需要1根片选
多从机时:如果支持菊花链模式,也仅需要1根片选;如果不支持菊花链,则每个从机都需要独立的片选。
S\S\ : Slave Select
SCK : Serial Clock
MOSI: Master Output, Slave Input
MISO: Master Input, Slave Output
空闲状态下SCK的电平由CPOL控制、总线运行时的数据采样时刻由CPHA决定,关于CPOL和CPHA的定义在SPI总线标准中的描述如下:
CPOL — SPI Clock Polarity Bit
1 = Active-low clocks selected. In idle state SCK is high.
0 = Active-high clocks selected. In idle state SCK is low.
CPHA — SPI Clock Phase Bit
1 = Sampling of data occurs at even edges (2,4,…,16) of the SCK clock
0 = Sampling of data occurs at odd edges (1,3,…,15) of the SCK clock
简介总结为:
CPOL: Clock POLarity 时钟极性
CPHA: Clock PHAse 时钟相位
CPOL: 决定总线空闲时CLK时钟的极性(0为低电平,1为高电平)
CPHA: 决定数据何时进行采样(0为在时钟的第1个跳变边沿进行采样,1位在时钟的第2个跳变边沿采样)
由此,可以定义出SPI通信时的4种传输模式:
参考原文:《SPI通信的4种传输模式》
SPI时序讲解
一、SPI主从通信:
SPI的基本结构相当于两个8位移位寄存器的首尾相接,构成16位的环形移位寄存器,从而实现了主机与从机的数据交换;
二、SPI通讯模式
SPI有4种不同的传输时序,取决于时钟极性CPOL和时钟相位CPHA的组合。
CPHA是用来控制数据是在第一个跳变沿还是第二个跳变沿采集的。
通过上图可以看到:
CPHA=0的时候,数据是在第一个跳变沿的时候就会被采集。
CPHA=1的时候,数据是在第二个跳变沿的时候才会被采集。
那问题来了,到底是上升沿还是下降沿采集?
这个就由CPOL来决定了:
CPOL=1的时候是上升沿采集。CPOL=0的时候是下降沿采集。
除此以外,CPOL还决定了我们时钟线SCLK空闲时的状态。
CPOL=0的时候表示SCLK在空闲时为低电平。
CPOL=1的时候表示SCLK在空闲时为高电平。
Ok,明白了这个,我们再分析4种模式的时序图。
1.模式0(CPOL=0 CPHA=0)
CPOL = 0:时钟线空闲时是低电平,第1个跳变沿是上升沿,第2个跳变沿是下降沿
CPHA = 0:数据在第1个跳变沿(上升沿)采样
时序图如下:
2.模式1(CPOL=0 CPHA=1)
CPOL = 0:空闲时是低电平,第1个跳变沿是上升沿,第2个跳变沿是下降沿
CPHA = 1:数据在第2个跳变沿(下降沿)采样
时序图如下:
3.模式2(CPOL=1 CPHA=0)
CPOL = 1:空闲时是高电平,第1个跳变沿是下降沿,第2个跳变沿是上升沿
CPHA = 0:数据在第1个跳变沿(下降沿)采样
时序图如下:
4.模式3(CPOL=1 CPHA=1)
CPOL = 1:空闲时是高电平,第1个跳变沿是下降沿,第2个跳变沿是上升沿
CPHA = 1:数据在第2个跳变沿(上升沿)采样
时序图如下:
三、示例分析
实际芯片的Datasheet中,大部分是不会给出SPI时序图工作模式,此时需要根据时钟和数据读取方式判断工作模式。
从CLK看支持Mode 0,空闲时低电平,第一个上升沿采样。
时序分析如下:
CS拉低,开始通信;
CLK引脚上出现脉冲,在脉冲的边沿上,I/O引脚开始脱离高阻态,最多占用一个时钟周期;
MOSI引脚发送指令0x0Bh,MISO引脚处于高阻态,占用八个时钟周期;
MOSI引脚按照大端序发送24位地址,先发送高字节,MISO引脚处于高阻态,共占用24个时钟周期;
MOSI和MISO均进入高阻态,等待八个时钟周期;
MOSI进入空闲,MISO上开始出现数据脉冲,在该芯片上,数据按照写入的顺序读出,读出N个字节,占用N*8个时钟周期;
CS拉高,MOSI/MOSI进入高阻态,CLK引脚回到空闲电平,通信结束。
本文来源于网络,参考原文:《SPI时序,看不懂你打我》
补充知识1-多从机配置模式
SPI多从机配置模式
图. 多从机SPI配置
菊花链模式
图. 多从机SPI菊花链配置
参考原文:《深入剖析 SPI 通信原理及应用》
补充知识2-SPI通信速率
SPI通信速率
SPI的作为master或者slave时可以达到的最大传输速率是多少呢?
I2C协议v2.1规定了100K,400K和3.4M三种速率(bps)。
SPI是一种事实标准,由Motorola开发,并没有一个官方标准。已知的有的器件SPI已达到50Mbps。具体到产品中SPI的速率主要看主从器件SPI控制器的性能限制。
因此SPI的最大传输速率主要受到以下几个条件影响:
1.SPI的最大时钟频率
2.CPU处理SPI数据的能力
3.输出端驱动能力(PCB所允许的最大信号传输速率)
参考原文:《SPI通信介绍》
SPI硬件设计、协议、速率全解析相关推荐
- ESP32系列:三线SPI硬件设计及程序驱动设计(SPI FLASH为例)
(1)三线SPI硬件设计 首先,ESP32是支持三线制和四线制的,三线制为半双工通信,四线制为全双工通信.如果你们用的芯片不支持三线制,就不要再折腾了,支不支持三线制,看芯片的datasheet.如图 ...
- 嵌入式硬件通信接口协议-UART(四)设计起止式的应用层协议
文章首发于同名微信公众号:DigCore 欢迎关注同名微信公众号:DigCore,及时获取最新技术博文. 原文链接:https://mp.weixin.qq.com/s/amO7rGkqFJtCzuy ...
- 【一篇看全】工业相机常用数据传输协议速率对比(CameraLink,CXP,1/10/100GigE,USB)
[一篇看全]工业相机常用数据传输协议速率对比(CameraLink,CXP,GigE,USB) CameraLink CXP GigE 10GigE 100GigE USB 接口协议速率对比 速率换算 ...
- SPI硬件电路设计,SPI协议
SPI硬件电路设计 1 SPI简介 2 SPI的特点和基本概念 2.1 SPI的特点 2.2 SPI的基本概念 3 SPI协议(摩托罗拉) 3.1 SPI控制器内部寄存器 3.2 时钟极性(CP ...
- 第二篇:可靠连接,TCP协议全解析
文章目录 一.前言 二.TCP报文结构 三.TCP连接(重点:三次握手和四次挥手) 3.1 三次握手建立连接 3.2 四次挥手释放连接 3.3 wireshark演示 四.TCP可靠连接 4.1 序号 ...
- RTP协议全解析(H264码流和PS流)(转)
源: RTP协议全解析(H264码流和PS流) 转载于:https://www.cnblogs.com/LittleTiger/p/10489247.html
- 【硬件通讯协议】SIP总线协议以及模拟(软件)SPI
参考资料 NXP 官方网站提供的 SPI 总线规范 S12SPIV4.pdfhttps://www.nxp.com/files-static/microcontrollers/doc/ref_manu ...
- 怎么证明建立了存储过程_【Filecoin源码仓库全解析】第七章:了解PoRep与PoSt并参与复制证明游戏
欢迎大家来到第七章,经过前章<[Filecoin源码仓库全解析]第六章:如何单机部署多节点集群及矿池设计思路>的介绍,我们分享了如何在单机部署多节点集群的知识以及矿池设计的一些思路. 我们 ...
- 秋招硬件设计岗,offer拿到手软,是一种什么体验?
文章目录 一.前言 二.面试形式和基本流程 三.面试基本内容 四.面试需学习内容 五.我的面试经历 六.总结 大家好,我是记得诚. 这几年硬件工程师的待遇越来越好,有个小伙伴,去年秋招拿到了很好的of ...
最新文章
- 【目标检测】yolo系列:从yolov1到yolov5之YOLOv5训练自己数据集(v6.0)
- ECSHOP删除云服务
- IP Header包
- 疑案追踪:Spring Boot内存泄露排查记
- SpringMVC中IOC容器启动
- Java使用strategy模式构造程序
- python 组合数库函数_Python数据分析之Numpy库(笔记)
- sessionState 配置方案
- Luogu 4721 【模板】分治 FFT
- 解决 There are no resources that can be added or removed from the server
- 程序人家:你的老板逼你上微服务了吗??
- dlibdotnet 人脸相似度源代码_使用dlib中的深度残差网络(ResNet)实现实时人脸识别 - supersayajin - 博客园...
- 软件工程论文注意事项
- PowerPC技术与市场杂谈
- AcGiGeometry::text 自画实体输出文字实例
- texstudio暗色主题
- 分布式事务讲解 -消息队列+定时任务+本地事件表
- 听完阿里“计算”家族技术领头人的分享,真的受益匪浅!
- HTTPS学习笔记:(3)一文彻底了解PKI与证书
- 转:使用Mosquitto-Auth-Plugin对mqtt客户端进行验证
热门文章
- 2022氟化工艺复训题库及模拟考试
- python编写程序计算1*2*3_编写一个python程序来计算事务的精确变化
- 给深度学习入门者的Python快速教程 - 基础篇
- 直播平台搭建的主要方式和开发细节
- android adidl回调,合工大Android开发课程报告.docx
- openwrt系统安装到云服务器异常,openwrt安装到云服务器
- Android系统开发常识
- AOSP ~系统安全 全盘加密
- SuperMap iClient3D for WebGL添加gif动态图
- HDU 5304 Eastest Magical Day Seep Group's Summer(状压DP+环缩点+生成树计数)