SPI通信

2026.10.12 SPI通信协议复习


part1:SPI定义和理解

SPI采取的同步全双工 的模式,并且仅支持一主多从 的模式,通信线主要有时钟线SCK (部分地方称为SCLK),MOSI (主机输出从机输入),MISO (主机输入从机输出),SS(片选,选择从机,低电平有效),通过其表意就可分析出各线在通信中的作用,由于一主多从的模式,实际应用开发中主机上应有多条SS,但单个从机通信时,其它从机应保持高阻态,同时输出端口应配置为推挽输出,输入端口应配置为上拉/浮空输入

part2:SPI存在的意义以及与I2C的对比

I2C是一个很强大的通信协议,它最大限度地通过软件模拟的方式节省了硬件资源,并且支持多主多从,多主机仲裁,主从应答的模式,能实现更复杂情景下的应用,但存在一个缺点:通信速率上限受到很大限制,由于I2C的弱上拉开漏模式,使得通信线上升沿相对于下降沿来说是慢很多的,这就导致了I2C的通信速率不会很快,常见的有100khz,400khz,3.4Mhz,但通常采用的I2C仍然是khz级别的,而SPI的出现恰好可以解决这个问题,由于SPI有两根数据线,可以保证上升沿和下降沿都很迅速,通信速率会大大提高,常见的SPI都是几十Mhz级别的,所以在一些需要高速传输的情景SPI是非常常用的,尽管它需要更多的硬件资源

part3:SPI工作原理和4种工作模式

1.工作原理

SPI的工作原理我觉得可以用"交换"这个词来形容,在主机和从机内部的数据移位寄存器中均存储着8bit数据,当SS=0选中从机后,根据SCK的上升边沿来不断将主机从机高位bit同时移出当前寄存器,并移入目标寄存器,边沿的指示不同跟4种工作模式有关,当8bit数据全部"交换"后,完成一字节的收发,然后SS=1(如果不想继续通信),一般来说主机收数据,数据一般给0x00或者0xFF来去跟从机交换

2. 4种工作模式

由 CPOL (Clock Polarity)和 CPHA(Clock Phase)组合成 4 种模式:

模式 CPOL CPHA 空闲电平 采样边沿 移出边沿
Mode 0 0 0 低 上升沿 下降沿
Mode 1 0 1 低 下降沿 上升沿
Mode 2 1 0 高 下降沿 上升沿
Mode 3 1 1 高 上升沿 下降沿
  • CPOL=0:空闲低;CPOL=1:空闲高
  • CPHA=0:第一个边沿采样;CPHA=1:第二个边沿采样
一般来说模式0是最常用的,根据工作模式的不同可以知道SPI的时序
主从双方必须配置相同的模式,否则数据错位。

part4:未解决问题

关于多从机连接方式:菊花链(Daisy Chain)

相关推荐
Zevalin爱灰灰1 天前
Linux入门第二部分(ARM裸机篇) 第一章 开发环境搭建与了解
linux·arm开发·嵌入式
菜鸟小芯1 天前
【Quectel Pi M2 实战】Day3 USB 摄像头图像采集:拍照、录像与踩坑记录(V4L2 + FFmpeg)
ffmpeg·嵌入式
Zwawa2 天前
串口为什么会丢字节:从轮询到中断和环形缓冲区
c语言·单片机·嵌入式
zhangxp1232 天前
【Quectel Pi M2 实战】Day3 USB 摄像头图像采集:拍照、录像与踩坑记录(V4L2 + FFmpeg)
嵌入式
用户8351414049492 天前
本地跑小模型做语音唤醒:手上那块子能带动吗
llm·嵌入式
小李不想当小白3 天前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
Zwawa3 天前
从 printf 到曲线:把数据送上 VOFA+
c语言·单片机·嵌入式
LCG米4 天前
STM32 ADC多通道DMA定时器触发实测:TRGO触发链、采样率精确控制与乒乓缓冲落地
stm32·单片机·嵌入式·adc
LCG米5 天前
STM32硬件SPI驱动SSD1306 OLED实测:上电黑屏排查、页寻址模式与取模扫描方向陷阱
stm32·单片机·嵌入式硬件·嵌入式
探鸽小钛5 天前
4G 终端 ES8311 - 挂断一次,下次说话就没声了之解决办法
物联网·音视频·嵌入式·esp32·webrtc