一文详解SPI总线协议

1.spi总线概述
spi是串行外设接口(serial peripheral interface)的缩写。是motorola公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。主要应用在eeprom,flash,实时时钟,ad转换器,数字信号处理器和数字信号解码器等设备与mcu之间进行通信。
spi具有通信简单,支持全双工通信,数据传输速度快的优点。但是由于spi没有指定的流控制,没有应答机制确认数据是否发送或接收成功,所以spi总线跟iic总线比较的话,spi总线在数据可靠性上有一定的缺陷。
2.spi信号线
spi的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备。spi使用3条通讯总线和1条片选线。
(1).mosi
主设备数据输出,从设备数据输入。
(2).miso
主设备数据输入,从设备数据输出。
(3).sclk(或叫sck)
时钟信号线,用于通讯同步,该信号由主机产生和控制。
(4).cs
片选线,从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时就需要设置从设备对应的片选引脚,来使能从设备。
spi通讯设备之间的连接方式,如下图所示:
2020-09-05
3.spi总线的4种通讯模式
spi通信有4种不同的通讯模式,不同的从设备可能在出厂时就配置为某种模式,这是不能改变的;但我们的通信双方必须是工作在同一模式下,所以我们可以对我们的主设备的spi模式进行配置,通过cpol(时钟极性)和cpha(时钟相位)来控制我们主设备的通信模式。
mosi和miso线在sck的每个时钟周期传输一位数据,开发者可以自行设置msb或lsb先行,不过需要保证两个通讯设备都使用同样的协定。
时钟极性cpol是用来配置sck空闲状态的电平,时钟相位cpha是用来配置数据采样是在第几个边沿。
cpol=0,表示当sck=0时处于空闲态,所以有效状态就是sck处于高电平时;cpol=1,表示当sck=1时处于空闲态,所以有效状态就是sck处于低电平时;cpha=0,表示数据采样是在第1个边沿,数据发送在第2个边沿;cpha=1,表示数据采样是在第2个边沿,数据发送在第1个边沿;  
cpol和cpha进行组合配置之后产生四种时序关系,也就是四种通讯模式。四种通讯模式文字描述如下:
cpol=0,cpha=0:此时空闲态时,sck处于低电平,数据采样是在第1个边沿,也就是sck由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。cpol=0,cpha=1:此时空闲态时,sck处于低电平,数据发送是在第1个边沿,也就是sck由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。cpol=1,cpha=0:此时空闲态时,sck处于高电平,数据采集是在第1个边沿,也就是sck由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。cpol=1,cpha=1:此时空闲态时,sck处于高电平,数据发送是在第1个边沿,也就是sck由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。
2020-09-05
下面的表格是对上述描述的spi四种通讯模式的总结:
spi模式 cpol cpha sck空闲时电平 数据采样 数据发送
0 0 0 低电平 第1个边沿 第2个边沿
1 0 1 低电平 第2个边沿 第1个边沿
2 1 0 高电平 第1个边沿 第2个边沿
3 1 1 高电平 第2个边沿 第1个边沿
模式0和模式3的差异主要是,模式0的sck空闲电平是低电平,模式3的sck空闲电平是高电平。因为模式0的sck空闲电平是低电平,数据采样发生在sck的第1个边沿,也就是sck的上升沿,数据发送发生在sck的第2个边沿,也就是sck的下降沿。同样的因为模式3的sck空闲电平是高电平,数据采样发生在sck的第2个边沿,也就是sck的上升沿,数据发送发生在sck的第1个边沿,也就是sck的下降沿。
从上面一段文字,可以对模式0和模式3进行一个总结:模式0和模式3的主要差异是sck空闲电平的状态不一样,模式0的sck空闲电平是低电平,模式3的sck空闲电平是高电平;模式0和模式3都在sck的上升沿进行数据采样,在sck的下降沿进行数据发送。
同样的,可以对模式1和模式2进行一个总结:模式1和模式2的主要差异是sck空闲电平的状态不一样,模式1的sck空闲电平是低电平,模式2的sck空闲电平是高电平;模式1和模式2都在sck的下降沿进行数据采样,在sck的上升沿进行数据发送。


介绍几种特殊的压力表
马云投资新动向!“一米八科技”成立,巨头涌向智慧农业 ?
研究人员通过3D打印开发出更可靠的增强型UHF-RFID标签
叶面积测量仪具体的使用方法
多周期cpu的设计思想是什么?怎样实现cpu多流水线?
一文详解SPI总线协议
手机来电时加速度传感器的作用
ROS开发技术的twist_mux功能包的原理和使用方法,灵活使用锁配置
回看这十年,已然为人工智能做好了准备
华为完成了5G毫微波测试,验证了5G技术在高频段性能的重要一步
如何推动社会变革、为产业赋能,以“AI+行业”的方式应用落地
国芯科技重磅推出首颗车载DSP芯片,布局高端智能座舱领域
CEO 访谈:实现嵌入式安全必须简单
尴尬:苹果失算 中国消费者对红色iPhone不感兴趣
硅双极宽带锁相环积木块集成电路-A Silicon Bipo
苹果13配置信息 苹果13颜色
电动牙刷产业链,全功能测试:气密性防水检测、动静态及水压测试
高通骁龙888:具备关键特性重新定义旗舰体验
机器人的备份与还原、零点校准
51单片机实时操作系统的基本结构与模式