电子商务做网站实训体会,生道网站建设平台,四川省住房和城乡建设局网站,优化大师app下载SPI协议详解 文章目录 SPI协议详解前言一、SPI是什么#xff1f;二、通信原理SPI 通信的 4 种工作模式 总结 前言
好久没写这种协议了#xff0c;最近正好需要用到#xff0c;便详细的复习一下。
一、SPI是什么#xff1f;
SPI是串行外设接口#xff08;Serial Periphe…SPI协议详解 文章目录 SPI协议详解前言一、SPI是什么二、通信原理SPI 通信的 4 种工作模式 总结 前言
好久没写这种协议了最近正好需要用到便详细的复习一下。
一、SPI是什么
SPI是串行外设接口Serial Peripheral Interface的缩写是美国摩托罗拉公司Motorola最先推出的一种同步串行传输规范也是一种单片机外设芯片串行扩展接口是一种高速、全双工、同步通信总线所以可以在同一时间发送和接收数据SPI没有定义速度限制通常能达到甚至超过10M/bps。
SPI有主、从两种模式通常由一个主模块和一个或多个从模块组成SPI不支持多主机但是支持多从机主模块选择一个从模块进行同步通信从而完成数据的交换。提供时钟的为主设备Master接收时钟的设备为从设备SlaveSPI接口的读写操作都是由主设备发起当存在多个从设备时通过各自的片选信号进行管理。
SPI通信原理很简单需要至少4根线单向传输时3根线它们是MISO主设备数据输入、MOSI主设备数据输出、SCLK时钟和CS/SS片选
MISO Master Input Slave Output主设备数据输入从设备数据输出 MOSIMaster Output Slave Input主设备数据输出从设备数据输入 SCLKSerial Clock时钟信号由主设备产生 CS/SSChip Select/Slave Select从设备使能信号由主设备控制一主多从时CS/SS是从芯片是否被主芯片选中的控制信号只有片选信号为预先规定的使能信号时高电位或低电位主芯片对此从芯片的操作才有效。 大多数从机设备都有着三态逻辑的特性因此当设备未被选中时它们的 MISO 信号线会变成高阻抗状态电气断开。没有三态输出的设备则需外接三态缓冲器才能与其他的从机设备共享 SPI 总线。
二、通信原理
SPI主设备和从设备都有一个串行移位寄存器主设备通过向它的SPI串行寄存器写入一个字节来发起一次传输。
SPI数据通信的流程可以分为以下几步
1、主设备发起信号将CS/SS拉低启动通信。
2、主设备通过发送时钟信号来告诉从设备进行写数据或者读数据操作采集时机可能是时钟信号的上升沿从低到高或下降沿从高到低因为SPI有四种模式后面会讲到它将立即读取数据线上的信号这样就得到了一位数据1bit。
3、主机Master将要发送的数据写到发送数据缓存区Menory缓存区经过移位寄存器缓存长度不一定看单片机配置串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。
4、从机Slave也将自己的串行移位寄存器缓存长度不一定看单片机配置中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据这样两个移位寄存器中的内容就被交换。 例如下图示例中简单模拟SPI通信流程主机拉低NSS片选信号启动通信并且产生时钟信号上升沿触发边沿信号主机在MOSI线路一位一位发送数据0X53在MISO线路一位一位接收数据0X46如下图所示 SPI只有主模式和从模式之分没有读和写的说法外设的写操作和读操作是同步完成的。若只进行写操作主机只需忽略接收到的字节虚拟数据反之若主机要读取从机的一个字节就必须发送一个空字节来引发从机的传输。也就是说你发一个数据必然会收到一个数据你要收一个数据必须也要先发一个数据。
SPI 通信的 4 种工作模式
SPI 通信中有 4 种不同的操作模式不同的从机设备可能在出厂时就被设置好了某种模式并且无法更改。但是 SPI 通信必须处于同一种模式下才能进行。因此我们应该对自己手里的 SPI 主机设备进行模式的配置也就是通过 CPOL(时钟极性) 和 CPHA(时钟相位) 来控制 SPI 主设备的通信模式具体如下
时钟极性(CPOL) 定义了 SCLK 时钟线空闲状态时的电平
1.CPOL0即SCLK0表示 SCLK 时钟信号线在空闲状态时的电平为低电平因此有效状态为高电平。
2.CPOL1即SCLK1表示 SCLK 时钟信号线在空闲状态时的电平为高电平因此有效状态为低电平。
时钟相位(CPHA) 定义了数据位相对于时钟线的时序(即相位)
1.CPHA0即表示输出 (out) 端在上一个时钟周期的后沿改变数据而输入 (in) 端在时钟周期的前沿(或不久之后)捕获数据。输出端保持数据有效直到当前时钟周期的尾部边缘。对于第一个时钟周期来说第一位的数据必须在时钟前沿之前出现在 MOSI 线上。也就是一个 CPHA0 的周期包括半个时钟空闲和半个时钟置位的周期。
2.CPHA1即表示输出 (out) 端在当前时钟周期的前沿改变数据而输入 (in) 端在时钟周期的后沿(或不久之后)捕获数据。输出端保持数据有效直到下一个时钟周期的前沿。对于最后一个时钟周期来说从机设备在片选信号消失之前保持 MISO 信号线有效。也就是一个 CHPA1 的周期包括半个时钟置位和半个时钟空闲的周期。 总结一下 SPI 数据的传输是在串行同步时钟信号(Serial Clock,SCK) 的控制下进行的。主机的时钟发生器一方面控制主机的移位寄存器另一方面通过从机的 SCK 信号线来控制从机的移位寄存器从而保证主机与从机的数据交换是同步进行的。
SPI 串行同步时钟可以设置为不同的极性(Clock Polarity,CPOL)与相位(Clock Phase,CPHA)。
时钟的极性(CPOL) 用来决定在总线空闲时同步时钟(SCK)信号线上的电位是高电平还是低电平。当 时钟极性为 0 时(CPOL0)SCK 信号线在空闲时为低电平 当时钟极性为 1 时(CPOL1), SCK 信号线在空闲时为高电平 时钟的相位(CPHA) 用来决定何时进行信号采样。 当时钟相位为 1 时(CPHA1), 在 SCK 信号线的第二个跳变沿进行采样 这里的跳变沿究竟是上升沿还是下降沿取决于时钟的极性。当时钟极性为 0 时取下降沿当时钟极性为 1 时取上升沿如下图 当时钟相位为 0 时(CPHAO), 在 SCK 信号线的第一个跳变沿进行采样。 跳变沿同样与时钟极性有关当时钟极性为 0 时取上升沿当时钟极性为 1 时取下降沿如下图
总结
SPI 的优点在于它有着比 I2C 更高的吞吐量不被最大时钟速度所限制可实现潜在的高速、极为简单的硬件接口外围电路使用的上拉电阻是比 I2C 协议更少的这意味着它比 I2C 的功耗更低、从机的时钟来源来自主机设备无需新增精密振荡器、从机不需要唯一的地址、相对于并行接口而言使用的引脚数目大大减少等优点。但同时有着一定的缺点例如SPI 没有带内寻址、当使用多个不同模式的从机设备时主机设备切换模式时重新初始化会使得访问从机设备速度变慢、SPI 从机设备没有硬件流控只能通过主机自主地延迟下个时钟周期到来的时间、仅能在短距离通信等缺点。但能在避免 SPI 的缺点的方向来应用 SPI 的话SPI 的优点让它远远优于其他协议。