当前位置: 首页 > news >正文

SPI的收发(W25Q64外部flash 和 内部flsah)

IIC为半双工,同一时刻只能单向传输。

串口和SPI为全双工模式,独立收发线,默认支持同时双向传输。

  • SPI核心线
    • MOSI:主机输出,从机输入(主机发送数据到从机)
    • MISO:主机输入,从机输出(从机发送数据到主机)
    • SCK:时钟线(主机提供同步时钟)
    • CS/SS:片选线(主机选中特定从机)

SPI 发送数据时,从机会同时返回一个字节,SPI的收发类似于一个轮盘操作,没有 “单独发送” 或 “单独接收”,只要启动通信(轮盘转动),就必然是双向的数据交换

因此 “发送” 和 “接收” 是绑定的(即使只需要读或写,也必须进行双向操作)。

u8 SPI1_ReadWriteByte(u8 txd)
{while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)!= SET);   
//TXE确保发送缓冲区就绪SPI_I2S_SendData(SPI1, txd);while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE)!= SET);  
//RXNE确保接收完成return SPI_I2S_ReceiveData(SPI1);
}

接下来为SPI的读写分别进行封装:

W25Q64 这类 SPI Flash 芯片的存储特性是:
  • 写入操作(编程):只能将存储单元从 1 改为 0(即只能 “清零”,不能直接 “置 1”)。
  • 擦除操作:会将指定区块 / 扇区的所有存储单元恢复为 1(即全为 0xFF)。

        这就是为什么在对 Flash 进行写入前,通常需要先擦除对应区域 —— 因为如果原来的单元是 0,直接写入 1 是无效的,必须先通过擦除恢复为 1,再写入 0。

        W25Q64 是一款常用的 SPI Flash 存储芯片,其总容量为 8MB(兆字节)。这个容量决定了它的地址范围是从 0x000000 到 0x7FFFFF(共 24 位地址空间),也对应了之前提到的页和扇区数量:

  • 每页 256 字节计算,总页数为 8
http://www.dtcms.com/a/291886.html

相关文章:

  • 小米视觉算法面试30问全景精解
  • Android常用的adb和logcat命令
  • 【bug】ubuntu20.04 orin nx Temporary failure resolving ‘ports.ubuntu.com‘
  • 【测试开发】---Bug篇
  • kafka主题管理详解 - kafka-topics.sh
  • Claude Code Kimi K2 环境配置指南 (Windows/macOS/Ubuntu)
  • 热点leetCode题
  • AI助力临床医学科研创新与效率双提升丨临床医学日常工作、论文高效撰写与项目申报、数据分析与可视化、机器学习建模等
  • Vercel AI SDK 3.0 学习入门指南
  • Java设计模式揭秘:深入理解模板方法模式
  • 一个简单实用的 WinForm 通用开发框架
  • 替代Oracle?金仓数据库用「敢替力」重新定义国产数据库
  • Pygame开源--谷歌小恐龙游戏(附彩蛋)
  • Custom SRP - Draw Calls
  • 从零构建智能对话助手:LangGraph + ReAct 实现具备记忆功能的 AI 智能体
  • Spring Boot 整合 Redis 实现发布/订阅(含ACK机制 - 事件驱动方案)
  • 【Autosar】RTE(Runtime Environment)层详解
  • lspci/setpci用法小结
  • Day 18:推断聚类后簇的类型
  • 支付网关系统前后端鉴权方案
  • LLaMA-Mesh:语言模型驱动的3D内容生成革命
  • LLaMA-Factory相关参数说明
  • VRRP-虚拟路由器冗余协议
  • 微调LLaMA 7B
  • Python通关秘籍(五)数据结构——元组
  • Apache Ignite扫描查询
  • 【机器学习深度学习】微调量化与模型导出量化:区分与应用
  • 苹果app应用ipa文件程序开发后如何运行到苹果iOS真机上测试?
  • 深度学习-算子
  • TI DLP3010光机与相机触发使用指南