【基础知识】SPI通信协议
目录
概述
电气连接
接口定义
连接方式
通信协议
片选信号
时钟
时钟极性(Clock Polanrity)
时钟相位(Clock Phase)
综述
时序
注意
概述
SPI是一个同步全双工串行通信协议
主从机双方共用一个时钟(由主机产生)
在同一时刻硬件可以允许双向传输(虽然在SPI协议中没有同一时刻双向传输)
SPI的速度快于常见的I2C与USART,一般能达到几MHz
比起CAN和USART来,其传播距离较短
电气连接
接口定义
名称 |
功能 |
GND |
接地 |
MOSI |
主机发送,从机接收 |
MISO |
主机接收,从机发送 |
CLK |
时钟线 |
CS1(NSS1) |
片选线 |
…… |
多个设备时的片选线 |
不同厂商的接口名称可能有不同,详情看产品的技术手册
连接方式
一般情况使用多片选信号(多NSS)模式,连接如图
通信协议
片选信号
这个信号是由主机发送的一个用于选择不同设备的信号,一般情况为低电平有效(选中了该设备)
在一次通信过程中,一般只有一个设备被选中
只有被选中的设备才会接受主机发送出的数据信号,并且根据自己的功能进行回传信息
对于单片机来说,这个信号一般使用推挽(浮空)输出的模式
有些设备使用开漏上拉输出会出现问题,咱也不知道为啥
时钟
时钟极性(Clock Polanrity)
可以这样理解,默认状态是高电平还是低电平(低电平有效还是高电平有效)
默认状态是低电平
默认状态是高电平
时钟相位(Clock Phase)
可以这样理解,在第几个边沿进行采集(这里指的是一个时钟信号的边沿),一个时钟信号会出现两个边沿
第一个边沿(如图在橘线处采集信号)
第二个边沿(如图在橘线处采集信号)
综述
时序
在片选信号选中下,每一个时钟信号触发(详见上文),根据MISO和MOSI的电平高低来判断数据
先发送高位再发送低位(可以选择先低后高)
时钟信号的箭头表示一次采集
本图中以黄线为界出现两次信号传输
第一次:主机向从机发送的数据为(0xF0)(0b11110000),从机向主机发送的信号为(0x00)(0b00000000)
第二次:主机向从机发送的数据为(0x00)(0b00000000),从机向主机发送的信号为0x7C(0b0111 1100)
注意
SPI每一次信号传输(通信周期)中都需要主机接受和发送一次
(可以将从器件当做一个数据会自动修改的移位寄存器)
也就是说主机接受数据时也要发送数据(必须发送),发送数据时也会接受数据(可能接收的数据无意义)
往往与器件通信时是主机先发送命令(此时收到的信号是无意义的),从机再根据命令更改寄存器的值,在下一个通信周期时在发送给主机(主机也需要发送某些数据(可能无意义))
【基础知识】SPI通信协议相关推荐
- 通信协议原理及应用CAN基础知识
通信协议原理及应用&CAN基础知识 通信协议原理及应用 通信分类 数据传输方式 串行通信 并行通信 接收端&发送端时钟频率的异同 同步通信 异步通信 通信双方的分工和信号传输方向 单工 ...
- 【STM32H7教程】第72章 STM32H7的SPI总线基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第72章 STM32H7的SPI总线基础知识和HA ...
- PX4模块设计之四十一:I2C/SPI Bus Instance基础知识
PX4模块设计之四十一:I2C/SPI Bus Instance基础知识 1. 基础知识 2. 基础类和定义 2.1 ListNode类 2.2 List类 2.3 BusCLIArguments类 ...
- 嵌入式开发基础—SPI通信协议解析
嵌入式开发基础-SPI通信协议解析 1 通信方式(主从通信) 1.1 什么是主从通信 1.2 主从通信如何实现 1.2.1 相关控制引脚介绍 1.2.2 如何通过控制引脚实现主从通信 2 通信数据交换 ...
- SPI接口的FPGA实现(一)——SPI接口的相关基础知识
SPI系列文章主要介绍SPI接口的一些基础知识,并用DAC芯片81416的配置为例来具体说明SPI接口的具体FPGA实现. 一.SPI的基础 SPI的全称是Serial Peripheral Inte ...
- 嵌入式硬件基础知识汇总<附带与硬件密切相关的软件介绍>
嵌入式硬件基础 1,存储器 1.1 概念 1.2,存储器结构模型 1.3,存储器性能指标 1.4,嵌入式存储器类型 1.4.1,只读存储器 1.4.2,随机存储器 1.4.3,双端口RAM 1.4.4 ...
- UART接口的FPGA实现(一)——UART接口的相关基础知识
UART系列文章先介绍UART的基础知识,然后自己动手写Verilog代码实现这个接口并进行测试,最后介绍Xilinx的AXI-uartlite IP核.本系列文章编写时参考了乔庐峰老师编写的Veri ...
- 硬件基础:嵌入式物联网系统软硬件基础知识大全
本文主要介绍嵌入式系统的基础知识,涉及嵌入式软件和硬件的方方面面,希望对各位有帮助. 嵌入式系统基础 1.嵌入式系统的定义 (1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功 ...
- 嵌入式系统设计师考试笔记之嵌入式系统基础知识
以下是转帖一位网友的嵌考笔记 嵌入式系统设计师考试笔记之嵌入式系统基础知识 欧浩源(ohy3686@qq.com) 20080818 一.引言 自<嵌入式系统设计师考试复习笔记之存储管理篇> ...
- 计算机语言之java基础知识一
在家已经待了一个多星期了,最近学到的东西一直没有梳理,这次变梳理边分享出来,说是分享其实就是搬运一下. Java 基础知识 基本数据类型 问:7 种基本数据类型:整型.浮点型.布尔型.字符型? 答:四 ...
最新文章
- 「前端面试题系列7」Javascript 中的事件机制(从原生到框架)
- 关于VMware Linux 虚拟机忘记root 密码找回
- Python中关于XML-RPC原理
- Cocos 技术派:实时竞技小游戏技术实现分享
- ie6 select出现在浮动层上面的解决方法
- 程序随笔——C++实现的一个线程池
- Java API下载和查阅方法
- [开源]快速构建文件下载,支持文件加密,自定义限速
- HttpModuel
- Windows下Python的pd.read_excel()报错
- c语言burg算法,用Burg算法提升空间调制傅里叶光谱仪分辨率与定阶方法
- CF gym101933 K King's Colors——二项式反演
- the problem was occurred when start ADT
- 佳能g2810提示5b00_佳能G2810 3800系列出现5B00如何解决
- html css 美化模板,通用css样式,全局css样式,css样式模板,
- 图像去噪(阿尔法均值滤波器)
- 小飞升值记——(4)
- sklearn_scaler
- ctfhsow web入门 命令执行大全
- 输入一串字符,将其中的大写变成小写,若不为大写则原样输出