spi协议
1. 概述
SPI = Serial Peripheral Interface,是串行外围设备接口,是一种高速,全双工,同步的通信总线。常规只占用四根线,节约了芯片管脚,PCB的布局省空间。现在越来越多的芯片集成了这种通信协议,常见的有EEPROM、FLASH、AD转换器等。
优点:
支持全双工,push-pull的驱动性能相比open-drain信号完整性更好;
支持高速(100MHz以上);
协议支持字长不限于8bits,可根据应用特点灵活选择消息字长;
硬件连接简单;
缺点:
相比IIC多两根线;
没有寻址机制,只能靠片选选择不同设备;
没有从设备接受ACK,主设备对于发送成功与否不得而知;
典型应用只支持单主控;
相比RS232 RS485和CAN总线,SPI传输距离短;
2. 硬件结构
SPI总线定义两个及以上设备间的数据通信,提供时钟的设备为主设备Master,接收时钟的设备为从设备Slave;
信号定义如下:
SCK : Serial Clock 串行时钟
MOSI : Master Output, Slave Input 主发从收信号
MISO : Master Input, Slave Output 主收从发信号
SS/CS : Slave Select 片选信号
电路连接如下:
单个主设备和单个从设备:
单个主设备和多个从设备,通过多个片选信号或者菊花链方式实现:
3. 寄存器类型
Motorola定义的SPI寄存器包括:
SPI Control Register 1 (SPICR1) 控制寄存器1
SPI Control Register 2 (SPICR2) 控制寄存器2
SPI Baud Rate Register (SPIBR) 波特率寄存器
SPI Status Register (SPISR) 状态寄存器 (只读 其余均可读可写)
SPI Data Register (SPIDR) 数据寄存器
通过往寄存器中写入不同的值,设置SPI模块的不同属性。
4. SPI传输模式
通过设置控制寄存器SPICR1中的CPOL和CPHA位,将SPI可以分成四种传输模式。
CPOL,即Clock Polarity,决定时钟空闲时的电平为高或低。对于SPI数据传输格式没有显著影响。
1 = 时钟低电平时有效,空闲时为高
0 = 时钟高电平时有效,空闲时为低
CPHA,即Clock Phase,定义SPI数据传输的两种基本模式。
1 = 数据采样发生在时钟(SCK)偶数(2,4,6,...,16)边沿(包括上下边沿)
0 = 数据采样发生在时钟(SCK)奇数(1,3,5,...,15)边沿(包括上下边沿)
四种模式如下图所示:
先看第一列两张图(CPHA = 0),采样发生在第一个时钟跳变沿,即数据采样发生在SCK奇数边沿;再看第二列(CPHA =1),采样发生在第二个时钟跳变沿,即数据采样发生在SCK偶数边沿。
第一行两张图,第二行两张图(CPOL = 1),SCK空闲状态为高电平。
主从设备进行SPI通讯时,要确保它们的传输模式设置相同。
其中mode0和mode3最为常见,SPI接口的flash中均会有标注。
5. 读写操作
标准SPI读写为例
片选---读指令---地址---数据读出
片选---写指令---地址---数据写入
Dual I/O Fast Read Sequence Diagram 双路IO
Quad I/O Fast Read Sequence Diagram 四路IO
与IIC一样,是一种最常见的板内芯片间的串行接口。
————————————————
版权声明:本文为CSDN博主「千里沽山」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42509369/article/details/83096349
spi协议的更多相关文章
- SPI协议及IO模拟
SPI协议 SPI协议网上资料比较多,但是也比较乱,当初在网上搜集的错误资料导致现在比较混乱. SPI协议资料比较正规的是: 1.SPI的规约协议英文文档,例如<摩托罗拉spi协议规范> ...
- FPGA作为从机与STM32进行SPI协议通信---Verilog实现 [转]
一.SPI协议简要介绍 SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用 ...
- [SPI]SPI协议详解
转自:https://my.oschina.net/freeblues/blog/67400 1.SPI协议简介 1.1.SPI协议概括 SPI,是英语Serial Peripheral interf ...
- [SPI&I2C]I2C和SPI协议介绍
IIC vs SPI 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身 ...
- SPI协议及工作原理分析
说明.文章摘自:SPI协议及其工作原理分析 http://blog.csdn.net/skyflying2012/article/details/11710801 一.概述. SPI, Serial ...
- SPI协议及其工作原理详解
一.概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控 ...
- SPI协议及其工作原理浅析
转载自:http://bbs.chinaunix.net/thread-1916003-1-1.html一.概述. SPI, Serial Perripheral Interface, 串行外围设备接 ...
- 模拟SPI协议时序
SPI是串行外设接口总线,摩托罗拉公司开发的一种全双工,同步通信总线,有四线制和三线制. 在单片机系统应用中,单片机常常是被用来当做主机(MASTER),外围器件被当做从机(SLAVE). 所以,在以 ...
- 说说SPI协议
SPI,是英语Serial Peripheral Interface 的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管 ...
- SPI协议及其工作原理浅析【转】
转自:http://www.laoliu-soft.net/category/tech_chap/tech_linux/ 一.概述. SPI, Serial Perripheral Interface ...
随机推荐
- IComparer、IComparable、StringComparison枚举、CultureInfo 的用法
IEnumerable<T> 和 IEnumerator<T>.泛型版本是新式代码的首要选项. InvariantCulture:程序间.程序数据库.程序网络交互用Invari ...
- 教程6--配置ssh
配置ssh 如果需要使用到远程仓库,那么就需要两个步骤: (1)配置创建SSH key(用于识别用户,免得每次输入账号密码) 在命令窗口输入ssh-keygen -t rsa -c "你的邮 ...
- 爬虫之Scrapy框架介绍及基础用法
今日内容概要 爬虫框架之Scrapy 利用该框架爬取博客园 并发编程 今日内容详细 爬虫框架Scrapy 1.什么是框架? 框架类似于房子的结构,框架会提前帮你创建好所有的文件和内部环境 你只需要往对 ...
- 四、Java基础
Java基础 在开始学习Java基础之前,我们先来学习一下IDEA 打开IDEA,新建一个项目(New Project),选择空项目(Empty Project),填写项目名(Project name ...
- VM虚拟机 Ubuntu配置与ssh连接
VMware安装ubuntu 自定义 不作更改 选择稍后安装操作系统,相当于裸机,没装系统. 选择ubuntu64 选择虚拟机名字与保存路径 配置情况 2G即可 网络类型,选择NAT 可以了解一下这几 ...
- Tableau怎么制作专业图表
Tableau怎么制作专业图表 本文首发于博客冰山一树Sankey,去博客浏览效果更好.直接右上角搜索该标题即可 一. 统计表 1.1 不同种类的图表风格 商业周刊的图表风格 经济学人的图表风格 华尔 ...
- 二、python数据类型详解
基本概念 迭代(iteration):如果给定一个list或tuple,我们可以通过for循环来遍历,这种遍历我们称为迭代(iteration) 可变:value改变,id不变,可变类型是不可hash ...
- LeetCode-049-字母异位词分组
字母异位词分组 题目描述:给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例说明请见LeetCode官网. 来源:力扣(LeetCode) 链接:https: ...
- petite-vue-源码剖析-v-for重新渲染工作原理
在<petite-vue源码剖析-v-if和v-for的工作原理>我们了解到v-for在静态视图中的工作原理,而这里我们将深入了解在更新渲染时v-for是如何运作的. 逐行解析 // 文件 ...
- 目标检测常用库MMCV安装中遇到的问题总结
我看很多教程说mmcv是只支持linux,支持windows版本较少,所以很难和torch.cuda匹配上,所以报错较多难安装.今天试了一下,遇到的和想到的报错问题基本如下: 一.首先是Microso ...