<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SPI on Zesean 的博客</title><link>https://zeseanblog.top/tags/spi/</link><description>Recent content in SPI on Zesean 的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Tue, 01 Sep 2026 22:58:08 +0800</lastBuildDate><atom:link href="https://zeseanblog.top/tags/spi/index.xml" rel="self" type="application/rss+xml"/><item><title>SPI 通信协议学习笔记</title><link>https://zeseanblog.top/p/spi/</link><pubDate>Sat, 12 Apr 2025 09:30:00 +0800</pubDate><guid>https://zeseanblog.top/p/spi/</guid><description>&lt;h1 id="spi通信"&gt;&lt;a href="#spi%e9%80%9a%e4%bf%a1" class="header-anchor"&gt;&lt;/a&gt;SPI通信&#13;&#10;&lt;/h1&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;SPI：通用数据总线&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;四根通信线：轻松Mhz&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;SCK(Serial Clock)&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;MOSI(Master Output Slave Input)&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;MISO(Master Input Slave Output)&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;SS(Slave Select)&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;同步，全双工&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;支持总线挂载多设备（一主多从）&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;常用模块：W25Q64 FLASH存储器、SPI OLED屏、NRF24L01 2.4G无线通讯模块、SD卡 支持SPI&lt;/p&gt;&#10;&lt;h2 id="硬件电路"&gt;&lt;a href="#%e7%a1%ac%e4%bb%b6%e7%94%b5%e8%b7%af" class="header-anchor"&gt;&lt;/a&gt;硬件电路&#13;&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;所有SPI设备SCK、MOSI、MISO分别连接在一起&lt;/li&gt;&#10;&lt;li&gt;主机引出多条SS控制线，分别连接各从机SS引脚&lt;/li&gt;&#10;&lt;li&gt;输出引脚配置推挽输出（驱动能力强，驱动上下降沿强），输入引脚配置浮空或上拉&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;img src="images/image-20250925170440759.png" alt="image-20250925170440759" style="zoom:67%;" /&gt;&#10;&lt;p&gt;主机指定从机：将对应SS线输出低电平，其余高电平&lt;/p&gt;&#10;&lt;h2 id="移位示意图"&gt;&lt;a href="#%e7%a7%bb%e4%bd%8d%e7%a4%ba%e6%84%8f%e5%9b%be" class="header-anchor"&gt;&lt;/a&gt;移位示意图&#13;&#10;&lt;/h2&gt;&lt;img src="images/image-20250925171058081.png" alt="image-20250925171058081" style="zoom:80%;" /&gt;&#10;&lt;p&gt;波特率发生器作为时钟，每一个上升沿，移位寄存器移出一位，进行数据发送；每一个下降沿，最低位采样&lt;/p&gt;&#10;&lt;img src="images/image-20250925171304695.png" alt="image-20250925171304695" style="zoom:80%;" /&gt;&#10;&lt;p&gt;一般主机发0x00或0xff跟从机交换数据&lt;/p&gt;&#10;&lt;h2 id="spi时序基本单元"&gt;&lt;a href="#spi%e6%97%b6%e5%ba%8f%e5%9f%ba%e6%9c%ac%e5%8d%95%e5%85%83" class="header-anchor"&gt;&lt;/a&gt;SPI时序基本单元&#13;&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;起始条件：SS高电平到低电平&lt;/li&gt;&#10;&lt;li&gt;终止条件：SS低电平切换高电平&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;img alt="image-20250925171622639" class="gallery-image" data-flex-basis="1494px" data-flex-grow="622" height="137" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://zeseanblog.top/p/spi/images/image-20250925171622639.png" srcset="https://zeseanblog.top/p/spi/images/image-20250925171622639_hu_bf9253fce5076353.png 800w, https://zeseanblog.top/p/spi/images/image-20250925171622639.png 853w" width="853"&gt;&lt;/p&gt;&#10;&lt;p&gt;SPI由不同的移位模型，能根据SCK的不同边沿变化进行移位。&lt;/p&gt;&#10;&lt;h3 id="模式1"&gt;&lt;a href="#%e6%a8%a1%e5%bc%8f1" class="header-anchor"&gt;&lt;/a&gt;模式1&#13;&#10;&lt;/h3&gt;&lt;p&gt;CPOL=0：空闲状态时，SCK低电平&lt;/p&gt;&#10;&lt;p&gt;CPHA=1：SCK第一个边沿移出数据，第二个边沿移入数据（数据采样）&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image-20250925171826936" class="gallery-image" data-flex-basis="732px" data-flex-grow="305" height="326" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://zeseanblog.top/p/spi/images/image-20250925171826936.png" srcset="https://zeseanblog.top/p/spi/images/image-20250925171826936_hu_911829cf886d67fc.png 800w, https://zeseanblog.top/p/spi/images/image-20250925171826936.png 995w" width="995"&gt;&lt;/p&gt;&#10;&lt;h3 id="模式0"&gt;&lt;a href="#%e6%a8%a1%e5%bc%8f0" class="header-anchor"&gt;&lt;/a&gt;模式0&#13;&#10;&lt;/h3&gt;&lt;p&gt;CPOL=0:空闲状态时，SCK为低电平&#10;CPHA=0: SCK第一个边沿移入数据,第二个边沿移出数据&lt;/p&gt;&#10;&lt;p&gt;将第一个数据变化的时机提前&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image-20250925172507991" class="gallery-image" data-flex-basis="720px" data-flex-grow="300" height="335" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://zeseanblog.top/p/spi/images/image-20250925172507991.png" srcset="https://zeseanblog.top/p/spi/images/image-20250925172507991_hu_3ab423fd4e852e0f.png 800w, https://zeseanblog.top/p/spi/images/image-20250925172507991.png 1006w" width="1006"&gt;&lt;/p&gt;&#10;&lt;h2 id="spi时序"&gt;&lt;a href="#spi%e6%97%b6%e5%ba%8f" class="header-anchor"&gt;&lt;/a&gt;SPI时序&#13;&#10;&lt;/h2&gt;&lt;p&gt;W25Q64为例，芯片厂商规定&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;发送指令&lt;/li&gt;&#10;&lt;li&gt;向SS指定设备，发送指令（0x06），00000110&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;img src="images/image-20250925173135029.png" alt="image-20250925173135029" style="zoom:67%;" /&gt;&#10;</description></item></channel></rss>