(学习笔记) SPI通信协议
概念
SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种通信接口技术。
SPI,是一种高速的,全双工,同步串行通信总线,并且在芯片的管脚上只占用四根线(MISO,MOSI,NSS,SCK)。
主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。
引脚
SPI接口经常被称为4线串行总线,以主/从方式工作,数据传输过程由主机初始化。4条信号线分别为:
1) SCK:串行时钟,用来控制数据交换的时机和速率,由主机提供;
//serial clock output for masters and input for slaves
2) MOSI:主机输出从机输入数据线;
3) MISO:主机输入从机输出数据线;
4) NSS:从机选择线,低电平有效,由主机控制。
在SPI总线上,某一时刻可以出现多个从机,但只能存在一个主机,主机通过片选线来确定要通信的从机(也就是任何时刻只能有一对主从机在通信)。这就要求从机的MISO口具有三态特性,使得该口线在器件未被选通时表现为高阻抗。
引脚连接
从图中看到,主机的NSS信号为高电平,从机的NSS信号被主机片选。
原理
如图:
1.MISO引脚相连接,MOSI引脚相互连接。这样,主从设备之间串行地传输且通信总是由主设备发起。
2.主设备通过MOSI脚把数据发给从设备的同时,从设备通过MISO脚传回数据给主设备。这个全双工的过程是由时钟信号SCK控制同步的。
3.时钟信号由主设备通过SCK脚提供。
框图
简析:
1. 从图中可以具体的看出SCK信号,由波特率发生器产生,传给从机和自己的通信控制寄存器中。
2. 波特率的大小由SPL_CR1寄存器的BR2,BR1,BR0三个位决定。
3. 通信控制由SPL_CR1寄存器的MSTR,SSM,SSI三个位和NSS控制,通信控制控制通信过程中的错误如CRC校验错误,模式错误,溢出。
4. 主控制电路控制,输入输出的逻辑门电路打开与关闭。
主从选择
NSS模式可以由硬件或软件设置。
软件设置(内部至高或低):
主机设置:
从机设置:
即SSM至为1时,外部NSS引脚置为它用,内部NSS引脚可以通过SSI位来驱动。
时钟信号的相位和极性
1.SPI接口可由CPOL和CPHA设置4种不同传输格式时序
2.SCK的空闲状态必须和SPI_CR1寄存器指定的极性一致(CPOL为’1’时,空闲时应上拉SCK为高电平;CPOL为’0’时,空闲时应下拉SCK为低电平)。
3.CPHA=0时,数据出现快于时钟的第一个边沿。CPHA=1时,数据出现与时钟的第一个边沿同步。
如果CPHA(时钟相位)位被置’1’,SCK时钟的第二个边沿(CPOL位为0时就是下降沿,CPOL位为’1’时就是上升沿)进行数据位的采样,数据在第二个时钟边沿被锁存。
如果CPHA位被清’0’,SCK时钟的第一边沿(CPOL位为’0’时就是下降沿,CPOL位为’1’时就是上升沿)进行数据位采样,数据在第一个时钟边沿被锁存。
这么多模式,主要是为了配合外部芯片。
数据帧格式
状态标志
SPI中断
配置过程
数据的传输过程
(学习笔记) SPI通信协议相关推荐
- STM32F103学习笔记——SPI读写Flash(二)
此系列文章是小白学习STM32的一些学习笔记.小白第一次写笔记文章,有不足或是错误之处,请多体谅和交流! 目录 1.软件设计流程 2.SPI初始化 3.SPI发送接收一字节函数编写 4.FLASH ...
- 嵌入式学习笔记——SPI协议
SPI 简介 SPI 是全双工通信,通过时钟信号进行同步通信 有四种时序对应的相应的四种功能 通常使用以主从方式进行工作,这种模式下通常有一个主设备和一个或多个从设备,需要至少4根线 实际上3根线也可 ...
- STM32Cube学习笔记-SPI通讯
引言 使用STM32Cube开发东西最怕的就是写的代码太多,为什么呢?因为不会写,我深有体会.SPI通讯是一种常用的常用的通讯方式,同步.串行.同步代表着实时性好,串行代表着接线少,很多的设备愿意采 ...
- STM8学习笔记---Modbus通信协议简单移植
Modbus是一种串行通信协议,在工业中应用是比较广泛的.关于Modbus的介绍网上资料很多,这里就不细说了.刚开始接触的时候看Modbus的介绍,光是协议的介绍有几百页,还有各种命令 ...
- stm32读操作失败_STM32学习笔记—通信容易出错的情况
I²C:全称为Inter-Integrated Circuit(内部集成电路),是一种串行通讯总线,常用于嵌入式电子产品中. 这是第4篇分享,<STM32学习笔记>之I2C通信容易出错的情 ...
- 嵌入式学习笔记——STM32的USART通信概述
文章目录 前言 常用通信协议分类及其特征介绍 通信协议 通信协议分类 1.同步异步通信 2.全双工/半双工/单工 3.现场总线/板级总线 4. 串行/并行通信 5. 有线通信.无线通信 STM32通信 ...
- dma接收双缓存 stm32_「STM32学习笔记」USART 新特性
之前的学习笔记"SPI不够用?USART来帮忙"一文中介绍了用如何把USART当做SPI来用的方法.此外,ST的USART还有很多新特性,没准有你不知道的. 在此,我们整理出来以下 ...
- 嵌入式学习笔记——ADC模数转换器
ADC模数转换器 前言 ADC介绍 ADC概述 ADC的数量 ADC的特性 ADC框图 芯片外部框图 芯片内部框图 转换部分框图 状态输出部分 条件触发框图 寄存器介绍 编程思路 模式选择 规则通道的 ...
- 嵌入式学习笔记——基于Cortex-M的单片机介绍
基于Cortex-M的单片机介绍 前言 1生产厂商及其产品线 1.1ARM单片机的产品线 1.2命名规则 作业1 2习单片机的资料准备 2.1STM32开发所需手册 2.1.1芯片的数据手册 芯片基本 ...
- 嵌入式学习笔记——寄存器实现控制LED小灯
文章目录 前言 GPIO通用输出模式 初始化LED小灯的GPIO 原理图 初始化代码 初始化的效果 功能函数封装 直接分开宏定义两个 使用条件运算符 封装函数实现简单的功能 KEIL MDK一些技巧 ...
最新文章
- 【Spring框架家族】SpringBoot基本介绍
- MySQL修改字段的排列位置
- Java技术分享:void的用法和意义
- 利用状态图实现词法分析
- 在 IntelliJ IDEA 中远程调试 Java 程序
- perl中q,qq,qw,qr的区别。
- Linux节点之间无密码问题,Linux下多节点SSH无密码互联实现
- 如何使用SAP CRM增强工具AET创建Table表格类型的增强
- Hive:使用Apache Hive查询客户最喜欢的搜索查询和产品视图计数
- 2019蓝桥杯Java决赛题答案_2019第十届蓝桥杯JavaB组省赛真题详解
- 关于PHP的错误机制总结
- 苹果将削减iPhone SE及AirPods产量 iPhone 13也要求减产
- 强悍的 Linux —— grep 与 egrep
- [转载] python判断字符串中包含某个字符串_干货分享| Python中最常用的字符串方法
- JSP的自定义标签(五)之Tag File
- HTML&CSS:制作简易电商网站
- 三国志战略版交易助手攻略
- 图片放大不清晰怎么办?
- Linux 学习包括但不限于linux使用问题笔记
- Win10 没有激活,如何改变任务栏位置