IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> SPI通信协议详解 -> 正文阅读

[嵌入式]SPI通信协议详解

SPI协议基本概念

SPI接口
(1)SPI(Serial Peripheral interface)是一种同步串行传输规范,也是单片机外设芯片串行外设扩展接口,该接口是一种高速,全双工,同步的通信总线,并且在芯片的管脚上占用4根线
(2)SPI接口主要应用在EEPROM,Flash,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间
(3)SPI由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换
(4)SPI接口由MOSI(串行数据输出),MISO(串行数据输入),SCLK(串行移位时钟),/SS(从设备使能信号),四种信号构成
请添加图片描述
(5)MOSI(串行数据输出),MISO(串行数据输入),SCL(串行移位时钟)都是公用的,只有SS(从设备使能信号)不是公用的,每增加一个从设备,那么就要增加一个SS使能信号,从而实现寻址的功能,当你的引脚不够用的时候,最好使用IIC(只有两根线)
引脚描述
MOSI:主设备数据输出,从设备数据输入
MISO:主设备数据输入,从设备数据输出
SCLK:时钟信号,由主设备产生
/SS:从设备使能信号,由主设备控制。当有多个从设备的时候,每个从设备都有一个片选接入到主设备机中,当我们的主设备和某个从设备通信时,需要将从设备对应的片选信号拉低或拉高
SPI接口特点
(1)SCLK信号线只由主设备控制,从设备不能控制信号线,同样,在一个基于SPI的设备中,至少有个主设备
(2)与普通的串行通信不同,普通的串行通讯一次连续传输至少8位数据(UART,但是还有一个起始位,一个停止位,还有校验位(可有可无)),而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据,也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制
(3)SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同的定义。
移位传输
请添加图片描述
在SCLK的控制下,两个双向移位寄存器进行数据交换
(4)在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显的简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比IIC系统要稍微复杂,SPI的一个缺点;没有指定的流控制,没有应答机制确认是否接收到数据

SPI的工作模式

概述
SPI通信有4种不同的模式,不同的从设备可能在出厂时就是配置为某种模式,这个不能更改,但我们的通信双方必须是工作在同一模式下,所以我们可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们的主设备的通信模式:
请添加图片描述
时钟极性CPOL是用来配置SCLK的电平出于空闲态或者有效态,时钟相位CPHA是用来配置数据采样是在第几个边沿
CPOL=0;表示当SCLK = 0时,处于空闲态,所以有效态就是SCLK处于高电平
CPOL=1;表示当SCLK = 1时,处于空闲态,所以有效态就是SCLK处于低电平
CPHA=0;表示数据采样是在第1边沿,数据发送在第2个边沿,也就是奇数边沿被采样
CPHA=1;表示数据采样是在第2边沿,数据发送在第1个边沿,偶数边沿被采样请添加图片描述
(1)起始信号:NSS信号线由高变低,是SPI通讯的起始信号
(2)借宿信号:NSS信号由低变高,是SPI通讯的停止信号
(3)数据传输:SPI使用MOSI以及MISO信号来传输数据,使用SCK信号线进行数据同步。MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出时同时进行的。SPI每次传输数据可以8位或16位为单位,每次传输的单位数不受限制
通信模式的设置
由于CPOL以及CPHA的不同状态,SPI分成了四种模式,主机与从机需要工作在相同的模式下才可以正常通信,因此通常主机要按照从机支持的模式去设置
请添加图片描述

STM32F4-SPI控制器特性

STM32F4的MOSI以及MISO都连接到数据移位寄存器上,数据移位寄存器的数据来源于接收缓冲区与发送缓冲区
(1)通过写SPI的“数据寄存器DR”把数据填充到发送缓冲区
(2)通过读“数据寄存器DR”可以获取接收缓冲区中的内容
(3)其中数据帧长度可以通过“控制寄存器CR1”的“DFF位”配置为8位或16位模式,配置“LSBFIRST位”可选择MSB先行还是LSB先行

内部SPI设置

STM32F429有高达6个SPI(45Mbits/s),其SPI接口提供两个主要功能:支持SPI协议和I2S音频协议。默认情况下,选择的是SPI功能。可通过软件将接口从SPI切换到I2S。
串行外设接口SPI可与外部器件进行半双工/全双工的同步串行通信。该接口可配置为主模式,在这种情况下,它可为外部器件提供通信时钟SCLK。该接口还能够在多主模式下工作
它可用于多种用途,包括基于双线的单工同步传输,其中一条可作为双向数据线,或使用CRC检验实现可靠通信请添加图片描述
片选接到了主控制逻辑芯片上面,主控制逻辑芯片又连接到了MOSI和MISO上面,时钟引脚接到了我们的波特率发生器上面,波特率是由SPI_CR1上面产生的,
单个主器件/单个从器件应用
请添加图片描述
主模式
请添加图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-28 11:27:35  更:2021-11-28 11:28:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:42:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码