笔记17:SPI--串行外设简介

一.SPI协议简介((Serial Peripheral Interface:串行外设接口,高速全双工(同一时刻可以双向传输)同步(同步主要看有无时钟信号)的通信总线)
1. SPI物理层
1.1 SPI通信设备之间常用连接方式
在这里插入图片描述
SPI通信使用三条总线以及片选信号,三条总线分别是SCK,MOSI,ISO,片选线是SS.从连接方式可以看出,从机三条总线是公用的,片选线是独立的。
片选线 SS: I2C通信时,通过设备地址进行寻址,但是SPI通信没有设别地址,要确定使用哪一个从机,则需要对片选线进行操作,片选线设置为低电平,则选中该从机,因此SPI以片选线拉低为开始信号,片选线拉高作为结束信号。
时钟信号线 SCK: 用于数据同步,由通讯主机产生,决定了通讯的速率,不同的设备支持的最高时钟频率不一样,如 STM32 的 SPI 时钟频率最大为fpclk/2,两个设备之间通讯时,通讯速率受限于低速设备。
从下图可以看出:
APB2总线下挂载着SPI1,由于APB2时钟是84MHz,因此SPI1时钟最大频率为42MHz。
APB1总线下挂载着SPI2和SPI3,由于APB1时钟是42MHz,因此SPI2和SPI3时钟最大频率为21MHz。
在这里插入图片描述

主设备输出,从设备输入引脚 MOSI(Master output,Slave input):主机的数据从这条线输出,从机接收数据,即数据传输方向为主机到从机。
主设备输入,从设备输出引脚 MISO(Master input,Slave output):主机从这条线接收数据,从机发送数据,即数据传输方向为从机到主机。
2.协议层
2.1 SPI基本通信过程
NSS,SCK,MOSI信号都由主机控制,而MISO信号由从机产生,主机通过这个数据线接收从机的数据信息。
MOSI和MISO信号只有在NSS信号为低时才有效。输出和输入是同时进行的,也就是如果主机向从机输出信号,那么同时从机也在向主机输入信号。
一个SCK周期MOSI和MISO传输一位数据。这样根据fpclk/2的大小可以确定单位时间内数据传输的多少。比如SPI1时挂在APB2时钟下,SPI时钟频率变为42MHz,因此SPI2和SPI3挂在APB1下,它们的时钟频率为21MHz。
在这里插入图片描述
2.2 通信的起始和停止信号
图中①是起始信号,即为NSS由高变低的时候,从机知道自己被主机选中,开始与主机通信。⑥是停止信号,NSS由低变为高,本次通讯结束。
2.3 数据有效性
在上图中,数据只有在SCK下降沿时才会被采集,此时的数据可以称之为有效数据,其他时刻的数据因为没有被采集到,便可以称之为无效数据。SPI 每次数据传输可以 8 位或 16 位为单位,每次传输的单位数不受限制。
2.4 时钟极性(CPOL)和时钟相位(CPHA)
什么是时钟极性?
时钟极性是指:当SPI通讯设备处于空闲状态时,SCK的电平信号即为时钟极性。空闲状态是指在通讯之前,NSS处于高电平的状态,若此时SCK为低电平,则CPOL=0;若此时SCK为高电平,则CPOL=1。
什么是时钟相位?
时钟相位是指:数据的采样时刻。当CPHA=0时,MOSI/MISO数据线上的信号将在SCK时钟线的“奇数边缘”被采样。当CPHA=1时,数据将在偶数边缘被采样。
下图就是CPHA=0,在奇数边缘采样。
在这里插入图片描述
从下面这个图中可以看到,
在这里插入图片描述
2.5 通讯模式
在这里插入图片描述
下图是W25Q128芯片的一个时序图,可以看出该芯片支持模式0和模式3.并且在CLK上升沿时采集信号,因为下降沿从机信号才发生转变,并不是稳定的。在配置程序时,必须要根据SPI连接的外设的时序图要求设定时钟极性和时钟相位。若是下图中的一个时序图,可以看出CPOL=0或者CPOL=1,并且数据是在奇数边缘被采样,因此CPHA=0。
在这里插入图片描述
二. STM32 的SPI特性及架构
在这里插入图片描述
①. 通讯引脚MOSI/MISO/SCK/NSS
STM32芯片有三个SPI外设,SPI1,SPI2,SPI3,每个外设都由MOSI,MISO,SCK,NSS四个引脚连接硬件。
在这里插入图片描述
下图是官方整理SPI1的管脚:
在这里插入图片描述
在这里插入图片描述

②.时钟控制逻辑
SCK 线的时钟信号,由波特率发生器根据“控制寄存器 CR1‖中BR[0:2]位控制:
在这里插入图片描述
图中的fpclk是指APB1(42Mhz)或者APB2(84MHz),SPI1挂在APB2下,SPI2和SPI3挂在APB1下。
在这里插入图片描述
③.数据控制逻辑
在图中可以看到,SPI数据寄存器只有一个,数据的读取和写入都是对这个寄存器操作,这不免让人担心数据会不会被覆盖的问题?
答案肯定是不会的,因为数据寄存器分为两个缓冲区,一个是发送缓冲区,一个是接收缓冲区,这两个缓冲区是独立的,因此数据并不会被覆盖。

在这里插入图片描述
数据帧的长度由CR1的DFF位控制:
在这里插入图片描述
帧的格式则是由LSBFIRST位控制:

在这里插入图片描述
④.整体控制逻辑
SPI_CR1寄存器的SSM位控制软件使能的,软件控制是指利用程序开启或者关闭SPI通讯,也就是利用C语言语句将NSS电平从高拉低(开启SPI通讯)或者从低拉高(结束SPI通讯)。硬件控制则是通过SPI这个外设来控制。
在这里插入图片描述
三.通讯过程

在这里插入图片描述
整个通讯开始的地方是由软件向SPI_DR写入一个书,当写入数据时,就会产生SCK时钟去同步信号,数据就会被发送到发送缓冲区,再通过移位寄存器一位一位的发送出去,数据进入到发送缓冲区时,TXE标志为0,当数据被发送出去,发送缓冲区为空,TXE标志位会置1,这样就可以写入下一个数据了。从图中我们看到TXE标志位发送第一个数据时,从0变1得很快,但是接收后面的数据时从0变1消耗的时间会比第一次长,这是因为发送缓冲区在接收第一次数据时,本身就是处于空的状态,因此很快就发送完毕,但是后面的数据来临时,要等前面的数据发送完毕,腾出发送缓冲区TXE标志位才可以变为1。在发送数据的同时,接收缓冲区也在接收数据,此时也有一个对应的标志位,RXNE,接收缓冲区非空,说明接收缓冲区存在数据,这样我们就可以读接收缓冲区的数据了。接收缓冲区的前面会有一个寄存器存入接收的数据,再发送到缓冲区里。需要注意的是:STM32只有向寄存器发送了数据才会产生SCK时钟,并且这个时钟只能由主机产生,只有时钟产生了,flash才会进行读操作。
在这里插入图片描述
主机发送一个字节到从机,从机同时也会传一个字节到主机。构成一个环形。
在这里插入图片描述

本文是参考野火,正点原子视频总结文章

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OFN技术原理介绍: Optical Finger Sensor (OFN)其实是光电鼠标的衍生与微小化的应用;原理是Sensor内部IR LED 发出红外光,通过菱镜折射穿过IR Filter后,照射到手指上,并把影像经过光学透镜,传到CMOS Sensor成像。接着利用内部专用的DSP(数字微处理器)来分析影像特征值在不同时间点的差异性,来判断移动的方向和距离,从而完成定位。OFN由于有较高的定位精度,模块轻薄化,与现有鼠标的习惯类似的特性,所以应用范围非常大,包括Smart Phone、MP4/MP3、MID、遥控器、笔记型计算机等相关产品上。 OFN传感器方案介绍: 该光查找导航传感器基于Avago 公司的ADBS-A320(ADBS-A320数据手册)芯片设计,采用了新的低功耗架构和自动功率管理模式,适合高达15ips的高速运动的检测。由于集成了振荡器和LED,从而使外接元件最小化。自调整帧速以得到最佳性能,可选择分辨率250, 500, 750, 1000 和1250 cpi,运动检测和查找检测引脚输出,双电源2.8V/1.8V或单电源2.8V供电。主要用于查找输入设备,移动设备,综合输入设备和以电池为能源的输入设备。 ADBS-A320特点: 低功耗架构 表面贴装技术 (SMT) 设备 自动调节型省电模式,以便延长电池续航时间 进行高达 15ips 的高速运动检测 自动调节型帧速率,支持最佳性能 运动检测引脚输出 手指检测引脚输出 内部振荡器--无需时钟输入 可选择 250、500、750、1000 和 1250 cpi 分辨率 可选择 2.8V / 1.8V 双电源供电或 2.8V 单电源供电 可选择 2.8V 或 1.8V 标称输入/输出电压 串行外设接口 (SPI) 或双线接口 (TWI) 采用集成式板上芯片工艺封装 870nm 波长的 LED OFN手持演示板架构图 原理图部分展示: 应用 手指输入装置 移动设备 整合型输入设备 电池供电型输入设备 附件内容包括: ADBS-A320数据手册(英文); 该OFN传感器方案原理图PDF档(基于微控制器MPS430F1222IPW芯片SPI通讯控制设计); 参考设计(增量式光电编码器计数器verilog程序和基于STM32的C程序);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值