SPI介绍

SPI简介

SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速的、全双工、同步的的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间, 要求通讯速率较高的场合。SPI接口在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省了空间,提供方便。

SPI全双工的物理链接

 SPI接口通讯一般使用 3 条总线及片选线,3 条总线分别为 SCK(时钟信号)、MOSI(主设备输出/从设备输入引脚)、MISO(主设备输入/从设备输出引脚),及CS(从设备片选信号)。

MISO: 主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。

MOSI: 主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。

SCLK:串行时钟信号,用于通讯数据同步,由主设备产生。

CS/SS:从设备片选信号,由主设备控制。它的功能是用来作为“片选引脚”,也就是选择指定的从设备,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。

SPI内部结构简明图

数据写到移位寄存器,通过移位寄存器向外传输。[主设备]每向从设备发送一位数据,同时接收到[从设备]一位数据。

常见的几种连线

1.全双工设计的接线

2.半双工设计的接线

3.单工设计的接线

SPI工作原理

SPI是通信协议,意味着总线中的只有一支中心设备能发起通信。当SPI主设备想读/写[从设备]时,它首先拉低[从设备]对应的SS线(SS是低电平有效),接着开始发送工作脉冲到时钟线上,在相应的脉冲时间上,[主设备]把信号发到MOSI实现“写”,同时可对MISO采样而实现“读”。

工作过程

拉低对应SS信号线,表示与该设备进行通信

主机通过发送SCLK时钟信号,来告诉从机写数据或者读数据,这里的SCLK时钟信号可以高电平有效也可以低电平有效,SPI组成有四种模式。(时钟的极性与相位)

主机(Master)将要发送的数据写到发送数据缓存区,缓存区经过移位寄存器(0~7),串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机,同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。

从机(Slave)也将自己的串行移位寄存器(0~7)中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据,这样,两个移位寄存器中的内容就被交换。

外设的读写操作同步完成,只进行写操作,则忽略读操作;主机只进行从机的读操作,则主机须发送一个空字节给从机引发传输。

片选引脚管理(NSS)

①软件模式:

可以设置SPI_CR1寄存器的SSM位来使能这种模式,在这种模式下NSS引脚可以用作它用,而内部NSS信号电平可以通过写SPI_CR1的SSI位来驱动。

②硬件模式:

第一种情况:NSS输出使能,当STM32工作为SPI模式的时,NSS输出已经通过 SPI_CR2寄存器的SSOE位使能,这时NSS引脚被拉低,所有NSS引脚与这个主SPI的 NSS引脚相连并配置为硬件NSS的SPI设备,将自动变成从的SPI设备。

第二种情况:NSS输出被关闭:允许操作于多主环境。

时钟信号的极性和相位

SPI_CR寄存器的CPOL位(时钟极性)和CPHA位(时钟相位)

SPI通信有能够组合成4种可能的时序关系,不同的从设备可能在出厂是就是配置为某种模式,这是不能改变的;但我们的通信双方必须是工作在同一模式下,所以我们可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式,具体如下:

时钟极性(CPOL)定义了时钟空闲状态电平,时钟相位(CPHA)定义数据的采集时间。

CPOL=1,表示当空闲状态SCLK为高电平

CPOL=0,表示当空闲状态SCLK为低电平

CPHA=1,在时钟的第二个跳变沿(上升沿或下降沿)进行数据采样,在第1个边沿发送数据

CPHA=0,在时钟的第一个跳变沿(上升沿或下降沿)进行数据采样,在第2个边沿发送数据

主从状态下SPI引脚设置

SPI使用的注意事项

  1. 主从设备传输的最高波特率,来定预分频的大小
  2. 确定使用SPI四种模式中的哪种(时钟的极性与相位)
  3. 闲置状态下,SCK、MOSI、NSS引脚的电平
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值