资讯详情

资讯详情

SPI技术系列 03 · SPI 速度与电气约束

I2C 技术系列 · 持续更新中本系列从推挽电气层一路打到 Linux spi 子系统,把四根线背后的电气/协议/控制器/驱动/实战全拧成一根线。 想系统追更戳这里查看完整专栏【SPI 技术系列】 其他技术系列专栏欢迎关注、交流、共同成长【I2C 技术系列】 【串口技术系列】【RISC-V 架构系列】【Linux内核系列】本篇定位:器件标 50MHz,SPI 能不能配 50MHz 跑?答案常常是不能。本篇讲 SPI 频率上限的来源——驱动能力 走线 负载电容 边沿 建立保持约束,让你会算实际能跑多快。标称速度 ≠ 实际速度Flash 标 50MHz,你配 50MHz 读取出错,降速到 30MHz 才行。原因:PCB 走线 SI、负载电容、控制器驱动能力、采样窗口约束。会算实际速度上限,是 SPI 工程的必备技能。对照 【I2C 技术系列 06】I2C 速度模式与时序参数 看,理解速度约束的共通思路。目录一、SPI 频率上限的来源1.1 各环节典型值1.2 短板效应(木桶)二、SCK 周期与移位约束2.1 SCK 周期 1/fSCK2.2 移位寄存器约束2.3 控制器分频2.4 占空比三、建立保持时间约束3.1 tSU(建立时间)/ tHD(保持时间)3.2 采样窗口3.3 速度上限(采样约束)3.4 主机读 MISO 的额外约束四、时钟失真影响4.1 Jitter(抖动)4.2 Skew(偏斜)4.3 失真对速度的限制4.4 DDR 模式约束五、SoC 控制器最高频率5.1 控制器限制5.2 QSPI 控制器5.3 DMA 限制六、实际速度估算6.1 估算流程6.2 估算示例6.3 降速排查法七、关键问题 QAQ1:器件标 50MHz,配 50MHz 出错,为什么?Q2:QSPI 50MHz 等效 SDR 多少?Q3:SPI 速度和走线长度什么关系?Q4:采样窗口怎么算?Q5:DDR 模式为什么对 SI 更敏感?Q6:SPI 最高频率能到多少?八、实战案例案例 1:W25Q 配 104MHz 不稳定案例 2:传感器只能跑 5MHz案例 3:SPI 显示屏 40MHz 刷屏花案例 4:DMA 跟不上 SPI,UNDERRUN案例 5:PLL 切换瞬间 SPI 错乱案例 6:多从总线高速失败九、本篇小结与速查核心要点速度估算速查降速排查表延伸阅读参考资料一、SPI 频率上限的来源SPI 能跑多快,受多个环节约束,取最短板:实际频率上限 min( 控制器最高频率, 从机最高频率(器件 spec), SI 约束(走线 负载 边沿), 采样窗口约束(tSU tHD 余量), 时钟失真约束(Jitter Skew) )1.1 各环节典型值环节典型上限MCU 控制器(STM32)25~50MHz(F1)/ 100MHz(H7)RISC-V SoC 控制器50~200MHzW25Q Flash50~104MHz(QSPI)/ 133MHz(Octal)传感器(LIS3DH)5~10MHzOLED(ILI9341)15~40MHz(写)ADC(MCP3008)3MHz / MAX6675 4MHz1.2 短板效应(木桶)Flash 标 104MHz,但控制器只能 50MHz → 实际 50MHz控制器能 100MHz,但走线 SI 限 60MHz → 实际 60MHz全链路最慢环节决定实际速度嵌入式视角:别只看器件标称W25Q128 标 133MHz,配 133MHz 跑不通,查了一圈发现是 PCB 走线 SI 限制。速度是全链路的木桶,器件标称只是其中一块板。工程上先按器件标称的 50~70% 配,稳定后再逐步提频。二、SCK 周期与移位约束2.1 SCK 周期 1/fSCKfSCK 50MHz → T 20ns fSCK 30MHz → T 33ns2.2 移位寄存器约束每次 SCK 边沿,移位寄存器移一位。约束:tHIGH(SCK 高电平)≥ 移位寄存器建立时间 余量tLOW(SCK 低电平)≥ 移位寄存器保持 余量典型:移位寄存器 ns 级,50MHz(20ns)够用2.3 控制器分频fSCK fPCLK / 分频系数 STM32: 分频系数 2,4,8,...,256(BR[2:0]) fPCLK42MHz → 可选 21M/10.5M/5.25M/... DesignWare SPI: 分频更灵活 fSCK fPCLK / (2 × (1 CLKDIV))控制器分频系数是离散的(2 的幂或步进)实际 fSCK 可能略低于目标2.4 占空比SCK 占空比通常 50%高速时占空比失真( 45% 或 55%)压缩采样窗口DDR 模式(上下沿采样)对占空比敏感,要求 45~55%三、建立保持时间约束3.1 tSU(建立时间)/ tHD(保持时间)SCK ‾‾‾‾‾‾‾\___/‾‾‾‾‾‾\___/‾‾ ↑采样沿 MOSI ‾‾‾\_______X___________ ←tSU→←tHD→ 建立 保持tSU:MOSI 在 SCK 采样沿前需稳定的时间tHD:MOSI 在 SCK 采样沿后需保持的时间器件 datasheet 给值(几 ns)3.2 采样窗口采样窗口 T_SCK - tSU - tHD 例:50MHz(T20ns),tSU5ns,tHD5ns 采样窗口 20 - 5 - 5 10ns (MOSI 必须在这 10ns 内稳定)频率越高,T 越小,采样窗口越窄窗口 0(即 tSU tHD T)→ 无法采样,速度上限3.3 速度上限(采样约束)fSCK_max ≤ 1 / (tSU tHD tmargin) tmargin:余量(几 ns,给 Jitter/Skew/边沿) 例:tSU5,tHD5,tmargin3 → fmax ≤ 1/13ns ≈ 77MHz3.4 主机读 MISO 的额外约束主机发 SCK,从机按 SCK 驱动 MISO,MISO 传回主机采样:Master 发 SCK ──→ Slave 收 ──→ Slave 驱动 MISO ──→ Master 采样 总时延 SCK 走线时延 从机响应时延 MISO 走线时延这个时延吃掉采样窗口高速时(50MHz),时延占比大,需走线等长 低时延从机四、时钟失真影响4.1 Jitter(抖动)SCK 周期的随机波动来源:PLL 相位噪声、电源噪声、串扰典型几十 ps,高速时占采样窗口比例大4.2 Skew(偏斜)多通道间 SCK 到达时刻差(02 篇)多从 SPI 各从 SCK 时差QSPI 多数据线 SCK 对数据线时差4.3 失真对速度的限制有效采样窗口 T - tSU - tHD - tJitter - tSkew fSCK_max ≤ 1 / (tSU tHD tJitter tSkew tmargin)Jitter Skew 越大,速度上限越低高速 SPI 要低 Jitter 时钟源 等长走线4.4 DDR 模式约束DDR 上下沿都采样,采样窗口 T/250MHz DDR 等效 100MHz SDR 的采样压力对 Jitter/Skew 更敏感,严格等长五、SoC 控制器最高频率5.1 控制器限制控制器有最高 fSCK(由 PCLK 和分频器决定)STM32F1: fPCLK/2,最高 18~36MHzSTM32H7: 最高 100MHz(独立 SPI 时钟)RISC-V SoC: 50~200MHz(看 IP)5.2 QSPI 控制器QSPI 控制器有独立高频时钟支持 DDR,等效翻倍W25Q 用的 QSPI 控制器(如 STM32 QSPI / RK QSPI)可达 100MHz DDR5.3 DMA 限制DMA 传输速度要跟上 SPI 速度50MHz SPI 50MB/s(8bit)/ 200MB/s(32bit QSPI)DMA 带宽不足 → UNDERRUN/OVERRUN六、实际速度估算6.1 估算流程1. 查器件 spec fmax(Flash 104MHz) 2. 查控制器 fmax(60MHz) 3. 估算 SI 约束: tr 2.2 × Rdrv × Cload 若 tr T/4 → SI 限速 4. 估算采样约束: fmax 1 / (tSU tHD tJitter tSkew 余量) 5. 取 min(器件, 控制器, SI, 采样) 6. 实际取估算值的 70% 留余量6.2 估算示例场景:W25Q128(104MHz QSPI) STM32H7(100MHz QSPI) 5cm 走线 QSPI DDR1. 器件:104MHz 2. 控制器:100MHz 3. SI:tr2ns(QSPI 6 线等长 33Ω 串联),L_crit5.8cm,5cm 临界,OK 4. 采样:tSU3,tHD3,tJitter0.2,tSkew0.3,余量2 → fmax1/8.5ns≈118MHz 5. min(104,100,118)100MHz 6. 实际配 80MHz DDR(等效 160MB/s),稳定6.3 降速排查法配目标速度出错,降到 1/2 测试半速稳定 → SI 或采样约束问题半速还错 → 协议/CS/模式问题(非速度)七、关键问题 QAQ1:器件标 50MHz,配 50MHz 出错,为什么?A:可能性:① PCB 走线 SI 不足(反射/串扰);② 负载电容大,tr 退化;③ 采样窗口不足(tSUtHDJitter T);④ 控制器驱动能力弱;⑤ 走线不等长,Skew 大。降速测试,稳定则属速度问题,查 SI 和采样约束。Q2:QSPI 50MHz 等效 SDR 多少?A:QSPI 50MHz SDR 4 bit × 50MHz 200Mbit/s 25MB/s。若 DDR 模式,50MHz DDR 4 bit × 50MHz × 2 400Mbit/s 50MB/s。QSPI 速度 位宽 × 频率 × (DDR 翻倍?)。Q3:SPI 速度和走线长度什么关系?A:走线长 → 负载电容大 → tr 大 → SI 变差。50MHz 走线 10cm 一般 OK, 20cm 要做匹配。1MHz 走线几米都行(理论,但 SPI 不用于长距离)。Q4:采样窗口怎么算?A:T - tSU - tHD - tJitter - tSkew 有效采样窗口。窗口 0 才能采样。窗口 5ns 高速时危险,要优化(等长、低 Jitter、降速)。Q5:DDR 模式为什么对 SI 更敏感?A:DDR 上下沿都采样,采样窗口 T/2,比 SDR 窄一半。同样的 Jitter/Skew 占比翻倍,所以 DDR 要更严格等长 更低 Jitter 更短走线。Q6:SPI 最高频率能到多少?A:商用器件:Octal-SPI Flash 可达 200MHz DDR(等效 400MB/s)。板级 SI 限制实际多在 100~150MHz DDR。实验室极限 200MHz 需要严格 SI 设计。日常工程 50~100MHz 已是高速。八、实战案例案例 1:W25Q 配 104MHz 不稳定现象:W25Q128 标 104MHz,配 104MHz QSPI 读取偶发错。分析:走线 8cm,QSPI 6 线未严格等长(差 10mil),104MHz DDR 采样窗口仅 ~5ns,Skew 0.5ns 占比大。解决:6 线蛇形等长(误差 3mil),加 22Ω 串联,降到 80MHz DDR 稳定。案例 2:传感器只能跑 5MHz现象:LIS3DH 标 10MHz,配 10MHz 偶发数据错。分析:查 datasheet,LIS3DH 的 tSUtHD15ns,fmax1/15ns≈66MHz… 但实际限制在CS 到首 SCK和读命令时序上,有效速度受限。解决:配 5MHz,稳定。传感器类器件标称速度常含水分,按 50% 配。案例 3:SPI 显示屏 40MHz 刷屏花现象:ILI9341 配 40MHz 刷屏,偶发花屏。分析:40MHz 边沿 2.5ns,走线 15cm 超临界,无匹配,反射让 MOSI 振铃。解决:MOSI/SCK 串 33Ω,降到 30MHz,稳定。案例 4:DMA 跟不上 SPI,UNDERRUN现象:QSPI 80MHz DMA 写 Flash,偶发 UNDERRUN。分析:QSPI 80MHz × 4bit 320Mbit/s 40MB/s,DMA 带宽不足(总线竞争),FIFO 空,数据欠载。解决:提高 DMA 优先级 / 增大 FIFO 阈值 / 降速到 50MHz。案例 5:PLL 切换瞬间 SPI 错乱现象:系统动态调频,PLL 切换时 SPI 偶发数据错。分析:PLL 切换瞬间 SCK Jitter 暴增,采样窗口被吃。解决:SPI 传输期间禁止 PLL 切换,或切换后等稳定再传。案例 6:多从总线高速失败现象:3 从共享 SPI,40MHz 读取从机 2 失败,从机 0/1 正常。分析:从机 2 SCK 走线最长(15cm),Skew 大,采样窗口不足。解决:SCK 蛇形等长,各从 SCK 等长,40MHz 稳定。九、本篇小结与速查核心要点速度上限 min(控制器, 器件, SI, 采样窗口, 时钟失真)实际配速取估算值的 50~70% 留余量SI 约束:tr 2.2 × Rdrv × Cload,tr T/4 限速采样窗口 T - tSU - tHD - tJitter - tSkew, 0 才能DDR 模式采样窗口减半,SI 要求翻倍严QSPI 速度 位宽 × 频率 ×(DDR 翻倍)Jitter/Skew 高速时占比大,要低 Jitter 等长降速测试是排查速度问题的金标准速度估算速查环节数据W25Q Flash50~133MHz传感器5~10MHzOLED15~40MHzADC3~10MHzSTM32 控制器25~100MHzQSPI 等效4×f(DDR 8×f)bit/s降速排查表配速稳定?推断50MHz错速度问题25MHz对SI/采样约束25MHz错协议/CS/模式问题1MHz错硬件/连线问题延伸阅读[[01-SPI电气特性与物理层]] —— 驱动能力[[02-SPI信号完整性与时钟分布]] —— SI 详解[[06-I2C速度模式与时序参数]] —— I2C 速度对比[[07-SPI双线四线八线-QSPI-Octal]] —— QSPI 速度[[13-SPI调试与排查]] —— 速度问题排查参考资料W25Q Datasheet(频率/时序)STM32 Reference Manual(SPI 分频)DesignWare SSI DatabookJEDEC JESD216(Flash 时序)SPI 技术系列 00· 总目录 · 上一篇:[[02-SPI信号完整性与时钟分布]] ·下一篇:[[04-SPI协议与时序详解-CPOL-CPHA]]✨ 感谢你的阅读 ✨技术之路漫漫分享是为了更好地交流。如果本文的内容对你有启发希望能得到你的支持 点赞|⭐ 收藏| 关注如果你在调试过程中遇到了其他问题欢迎在评论区 留言我们一起探讨。关注我一起交流底层开发的那些事儿
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →