
SPI 超简单介绍SPI全称 Serial Peripheral Interface串行外设接口。是一种同步串行接口技术用于连接微控制器与其他外设。特点同步、全双工串行通信总线时钟由主机提供全双工同时收发靠 CS 片选选择从设备无设备地址概念一、硬件接口标准4根信号线 GND共地SCLK(SCK): 串行时钟主机输出时钟信号同步所有数据采样始终永远由主机产生从设备被动跟随 SCLK。MOSI: (Master Out Slave In)主机输出➡从机输入。主机发送给从机的数据。MISO: (Master In Slave Out)主机输入⬅从机输出。从机发给主机的数据。CS / SS (Chip Select / Slave Select) 片选片选信号每个从设备需要独立一根 CS 线拉低低电平有效选中该从机拉高则设备脱离总线。GND 必须共地否则电平参考不一致通信出错。二、协议信号时序定义SPI 没有统一官方标注是事实标准最重要两个参数CPOL、CPHA组合成4种 SPI 模式。CPOL 时钟极性(Clock Polarity)定义总线空闲时 SCLK 电平CPOL0: 空闲时 SCLK 低电平CPOL1: 空闲时 SCLK 高电平CPHA 时钟相位(Clock Phase)定义在哪一个时钟边沿采样数据CPHA0:第一个时钟边沿采样数据第二个边沿移位CPHA1:第二个时钟边沿采样数据第一个边沿移位采样 读取电平移位 更新输出电平。四种 SPI 模式模式CPOLCPHA说明Mode000空闲 SCLK 低第一个边沿采样最常用Mode101空闲 SCLK 低第二个边沿采样Mode210空闲 SCLK 高第一个边沿采样Mode311空闲 SCLK 高第二个边沿采样Flash 常用主机与从设备必须使用完全相同的 CPOL、CPHA否则收到乱码。数据移位机制 —— SPI 全双工本质SPI 是 移位寄存器架构主机、从机内部都有一个 N 位移位寄存器。SCLK 每来一个时钟脉冲主机输出 1bit 到 MOSI同时读取 MISO 上 1bit。只要SCLK跳动MOSI 和 MISO就同时交换 1bit收发同步发生。哪怕主机只想读从机也必须发送 dummy 字节来产生时钟从机才会把数据放到 MISO。CS 片选行为大部分器件CS 拉低 ➡ 激活从机CS 拉高 ➡ 结束一次传输清空从机移位寄存器。三、通信示例主机写从设备CS 拉低SCLK 输出时钟MOSI 发送命令 数据MISO 收到的是无效 dummy 数据直接丢弃传输完成CS 拉高主机读从设备SPI 不能单纯“读”必须输出时钟。主机发送哑字节用来驱动 SCLK 时钟从机在 MISO 输出需要的数据。CS 拉低MOSI 输出哑字节产生SCLKMISO 上捕获从机返回的数据收满需要字节CS 拉高重点SPI 读也要发数据只是不在乎发送出去是什么。五、数据传输演示点此跳转演示连接