尧图精选

SPI 为什么要有时钟?四根线怎样读出闪存身份?

🕒 发布时间:2026/10/1 16:15:50 📁 来源:尧图网络
SPI 为什么要有时钟四根线怎样读出闪存身份本文为教学接线与设计预期尚无实物测量记录使用 NUCLEO-F030R8。问题单片机让闪存报告身份为什么不能只接一根数据线因为双方要知道哪次变化算下一位。本例只读厂家身份不擦写数据。片选决定轮到谁说话时钟决定何时看一位另外两根线分别负责去和回。物件动作想象小熊给仓库送号码卡。它先放下轮到你的旗子再敲节拍器递出卡上的一位。仓库员听到节拍才看下一位回答时沿另一条通道送回号码卡。旗子抬起谈话结束。旗子、节拍和两条通道分别对应片选、时钟和收发数据线。真实连接回到电路开发板 D十三时钟接闪存六脚D十一发送接五脚D十二接二脚返回D十控制一脚片选。闪存八脚接三点三伏四脚共地。三脚写保护和七脚暂停保持高电平供电旁跨接零点一微法电容。原因与结果程序先把片选拉低再沿发送线送出十六进制九 F 读取身份指令。每一位按时钟节拍传送指令后继续给时钟闪存从返回线送出身份字节。厂家资料里的首个厂家字节是 E F。时钟线本身不装数据。验证把逻辑分析仪接到片选、时钟、发送和返回四个节点并共地。设计预期是片选先变低随后时钟出现发送线先解码出九 F返回线随后读到 E F。先核对四条线脚位再谈解码。这里是资料值和预计波形不是实测。边界这里只演示标准单线 SPI 读身份不代表所有指令都按同样字节返回。两边要设置相容的时钟模式供电不能超范围。任意线接反都可能读到全零或全一不能据此断言闪存损坏。为什么是四根主要信号线本例的主机是 NUCLEO-F030R8外部器件是 Winbond W25Q80BV 的 SOIC-8 封装。开发板的 D13/PA5 作为 SPI1_SCK 输出节拍D11/PA7 作为 SPI1_MOSI 发送指令D12/PA6 作为 SPI1_MISO 接收返回。D10/PB6 在本例配置为普通 GPIO 软件片选拉低才选中这颗闪存不要把板上 D10 的名称误当成已经自动完成片选配置。把这四条线想成一次有秩序的问答片选旗告诉闪存轮到你时钟是双方共同的节拍发送线只负责主机发问返回线负责闪存回答。没有时钟双方无法按同一拍数出哪一位只有时钟却没有数据线也不会凭空得到身份号码。SPI 可以同时在两个方向移位但本例先用读身份命令把动作拆开讲。供电、引脚与不能省略的连接W25Q80BV 官方 Rev C1 资料标出 SOIC-8 顶视引脚1 为低有效 /CS2 为 DO3 为 /WP4 为 GND5 为 DI6 为 CLK7 为 /HOLD8 为 VCC。图上的脚号必须按顶视方向看实际使用前再确认器件丝印与封装把芯片反过来看会把两侧脚号颠倒。该器件供电规格为 2.73.6 V本例由开发板 3.3 V 供电不可直接接 5 V。供电脚旁跨接 100 nF 去耦电容到公共地不能串联在时钟线上。本例不使用写保护与暂停功能因此让 /WP 和 /HOLD 保持高电平片选在空闲时保持高开始交换时拉低。共地不仅给芯片供电回路也给逻辑分析仪与主机电平一个共同参考。建议先断电逐线核对3.3 V 对 VCC、地对 GND、D13 对 CLK、D11 对 DI、D12 对 DO、D10 对 /CS确认无短路再上电。9F 指令的逐拍因果官方资料把 9Fh 定义为 Read JEDEC ID。程序先让 /CS 变低发送线按高位优先送出 9Fh时钟推进每一位。8 位指令送完后主机还要继续给时钟闪存才沿 DO 依次输出身份字节。资料给出的 Winbond 厂家首字节是 EFh。这里的 9Fh 和 EFh 是厂家定义的命令和资料值不是本项目已经量到的波形。如果发送指令后立刻把 /CS 拉高相当于提前结束谈话即使三根通信线都没接错也不会得到完整回答。若没有给后续时钟闪存无法把剩余位推到 DO。程序里的模式设定、位序、片选时序必须与器件要求相容不能只把四根线插上就期待数值出现。一次可执行的验证顺序把逻辑分析仪的四个输入分别接 /CS、CLK、DI、DO并让分析仪地夹与板卡地相连。先单看 /CS程序发问时应处于低电平再看 CLK只有交换期间出现节拍然后解码 DI 是否先为 9Fh最后查看 DO 的首个身份字节是否与资料 EFh 相符。若读到全零、全一或没有跳变依次查电源、公共地、SOIC-8 观察方向、D11/D12 是否接反和片选是否真的拉低。记录真实波形时写清供电、采样设置、SPI 模式与实物版本没有这样的原始记录本文只能称设计预期。读身份只验证基本通信不证明整颗闪存的每一页都能正确写入或长期保存。边界这不是随便一颗闪存的通用配方不同闪存可能有不同命令、身份字节、电压范围或封装。换型号后先查对应原件而不是套用本例的 EFh。此处没有做擦除、编程或寿命测试也没有把外部 Flash 画成 STM32 内部存储器。若要讲高速传输或四线 Quad 模式/WP、/HOLD 的职责会改变必须另做连接和时序核验。逐线接线清单CN5 D13/PA5 SPI1_SCK → W25Q80BV pin 6 CLK同步节拍CN5 D11/PA7 SPI1_MOSI → W25Q80BV pin 5 DI(IO0)主机发送CN5 D12/PA6 SPI1_MISO → W25Q80BV pin 2 DO(IO1)从机返回CN5 D10/PB6 GPIO → W25Q80BV pin 1 /CS低有效片选CN6 3.3V → W25Q80BV pin 8 VCC3.3 V 供电CN6 GND → W25Q80BV pin 4 GND公共地W25Q80BV pin 3 /WP → 3.3 V本例不用写保护输入W25Q80BV pin 7 /HOLD → 3.3 V本例不暂停串行通信W25Q80BV pin 8 VCC → 100 nF 到 pin 4 GND就近去耦逻辑分析仪四通道 → /CS、CLK、DI、DO地接公共 GND观察预计时序计算与实施边界Winbond W25Q80BV Rev C1 2018SOIC-8 顶视引脚 1 /CS、2 DO、3 /WP、4 GND、5 DI、6 CLK、7 /HOLD、8 VCC供电范围 2.73.6 V本例只选 3.3 V不接 5 V9Fh 读 JEDEC ID首个 Winbond 厂家字节 EFh仅为资料预期非本项目实测D10/PB6 明确配置为 GPIO 软件片选不假设它自动片选这些参数和数值是本例选择或可复算计算实际测量前应先检查电源极性、公共地、元件额定值、仪器探头连接。完整可运行的核心算例与验收以下 C11 程序可在电脑上用 C 编译器单独编译运行用来复算状态或数值它不是已配置 GPIO、ADC、定时器和驱动的开发板固件。移植到实板时应按前述接线配置外设、检查读取错误并另做实测。#includestdint.h#includestdio.hstaticvoiddescribe_expected_read(void){constuint8_tcommand0x9F;constuint8_tmanufacturer0xEF;printf(CS low; send command 0x%02X; expect first ID 0x%02X; CS high\n,command,manufacturer);}intmain(void){describe_expected_read();return0;}验收时同时记录输入、关键节点电压或波形、程序输出若发现传感器通信失败、输入超出允许范围或波形明显异常应停止并排查。官方资料https://www.st.com/resource/en/user_manual/um1724-.pdfhttps://www.st.com/resource/en/datasheet/dm00088500.pdfhttps://www.winbond.com/upload/technical-support/f0f72951-b845-42ea-9010-faaeab26872f.pdf
上一篇/下一篇内容由系统自动关联 返回资讯列表 →