SPI简述 本文章是对SPI串行外设接口的简要总结描述希望里面的内容可以让大家对SPI有更加直观的了解文中若存在表述不妥或错误之处欢迎各位批评指正。。定义一种同步串行传输规范也是一种单片机外设芯片串行扩展接口。作用主要用于主控制器与外设从设备之间的高速同步串行通信。优点1.无起始位和停止位因此数据位可以连续传输而不会被中断2.没有像I2C这样复杂的从设备寻址系统3.数据传输速率比I2C更高几乎快两倍4.分离的MISO和MOSI信号线因此可以同时发送和接收数据5.极其灵活的数据传输不限于8位它可以是任意大小的字6.非常简单的硬件结构。从站不需要唯一地址与I2C不同。从机使用主机时钟不需要精密时钟振荡器/晶振与UART不同。不需要收发器与CAN不同。缺点1.使用四根信号线I2C和UART使用两根信号线2.无法确认是否已成功接收数据I2C拥有此功能3.没有任何形式的错误检查如UART中的奇偶校验位4.只允许一个主设备5.没有硬件从机应答信号主机可能在不知情的情况下无处发送6.没有定义硬件级别的错误检查协议7.与RS-232和CAN总线相比只能支持非常短的距离主从模式简述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是从芯片是否被主芯片选中的控制信号只有片选信号为预先规定的使能信号时高电位或低电位主芯片对此从芯片的操作才有效。SPI通信流程1、主设备发起信号将CS/SS拉低启动通信。2、主设备通过发送时钟信号来告诉从设备进行写数据或者读数据操作采集时机可能是时钟信号的上升沿从低到高或下降沿从高到低因为SPI有四种模式后面会讲到它将立即读取数据线上的信号这样就得到了一位数据1bit。3、主机Master将要发送的数据写到发送数据缓存区Menory缓存区经过移位寄存器缓存长度不一定看单片机配置串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。4、从机Slave也将自己的串行移位寄存器缓存长度不一定看单片机配置中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据这样两个移位寄存器中的内容就被交换。下面是主机发送0x53主机接收0x46这里有一点需要着重说明一下SPI只有主模式和从模式之分没有读和写的说法外设的写操作和读操作是同步完成的。若只进行写操作主机只需忽略接收到的字节虚拟数据反之若主机要读取从机的一个字节就必须发送一个空字节来引发从机的传输。也就是说你发一个数据必然会收到一个数据你要收一个数据必须也要先发一个数据。SPI通信特性1.时钟极性与时钟相位CKP时钟极性CKP 0时钟空闲IDLE为低电平 0CKP 1时钟空闲IDLE为高电平1。CKE时钟相位CKE 0在时钟信号SCK的第一个跳变沿采样CKE 1在时钟信号SCK的第二个跳变沿采样。2.四种工作模式Mode0CKP0CKE 0当空闲态时SCK处于低电平数据采样是在第1个边沿也就是SCK由低电平到高电平的跳变所以数据采样是在上升沿准备数据发送数据数据发送是在下降沿。Mode1CKP0CKE1当空闲态时SCK处于低电平数据发送是在第2个边沿也就是SCK由低电平到高电平的跳变所以数据采样是在下降沿数据发送是在上升沿。Mode2CKP1CKE0当空闲态时SCK处于高电平数据采集是在第1个边沿也就是SCK由高电平到低电平的跳变所以数据采集是在下降沿数据发送是在上升沿。Mode3CKP1CKE1当空闲态时SCK处于高电平数据发送是在第2个边沿也就是SCK由高电平到低电平的跳变所以数据采集是在上升沿数据发送是在下降沿。数据采集和数据发送必须在不同边沿进行3.设备选择SPI是单主设备Single Master通信协议 只有一支主设备能发起通信当SPI主设备想读/写从设备时它首先拉低从设备对应的SS线SS是低电平有效。接着开始发送工作脉冲到时钟线上在相应的脉冲时间上主设备把信号发到MOSI实现“写”同时可对MISO采样而实现“读”。在一主多从时当一个从设备发生故障那么它下面优先级更低的从设备就不会得到服务另一方面距离主机越远的从机获得服务的优先级越低所以需要安排好从机的优先级并且设置总线检测器如果某个从机超时则对该从机进行短路防止单个从机损坏造成整个链路崩溃的情况。本文借鉴了CSDN博主「不脱发的程序猿」的文章文章链接SPI通信协议详解原理、模式与应用-CSDN博客

本月热点