ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

树莓派4B上玩转W25QXX:Linux SPI驱动开发完整教程

树莓派4B上玩转W25QXX:Linux SPI驱动开发完整教程 树莓派4B上玩转W25QXXLinux SPI驱动开发完整教程【免费下载链接】w25qxxW25QXX(W25Q10, W25Q20, W25Q40, W25Q80, W25Q16, W25Q32, W25Q64, W25Q128, W25Q256, W25Q512, W25Q01, W25Q02) full-featured driver library for general-purpose MCU and Linux.项目地址: https://gitcode.com/gh_mirrors/w2/w25qxxW25QXX 是一款面向通用 MCU 与 Linux 的全功能 SPI 串行闪存驱动库支持 W25Q10、W25Q20、W25Q40、W25Q80、W25Q16、W25Q32、W25Q64、W25Q128、W25Q256、W25Q512、W25Q01、W25Q02 全系列芯片提供闪存读写、擦除、JEDEC ID 读取、块锁等完整功能且代码符合 MISRA 规范。本教程带你快速在树莓派4B上完成接线、编译并验证 W25QXX 闪存驱动。为什么选择这套 W25QXX 驱动库在开始之前先了解这套驱动库的强大之处芯片覆盖广从 1MbW25Q10到 512MbW25Q51212 款旺宏/华邦 W25Q 系列闪存全覆盖平台无关设计同一套驱动核心即可用于 Linux 和各类 MCU项目内提供 STM32F407、STM32F767、树莓派4B 三个参考工程功能完整基础读写之外还实现快速读、页编程、4K/32K/64K 擦除、状态寄存器、安全寄存器、SFDP 参数读取等高级功能质量可靠MIT 协议开源代码通过 MISRA 扫描扫描报告见misra/w25qxx_polyspace_report.pdf项目目录结构清晰核心文件都在这些位置目录作用src/W25QXX 驱动核心源码interface/平台无关的 SPI/QSPI 接口模板example/basic 与 advance 两套示例代码test/驱动功能测试代码doc/离线 API 文档datasheet/全系列 W25QXX 芯片手册project/raspberrypi4b/树莓派4B 完整参考工程树莓派4B SPI接线W25QXX引脚对照表硬件连接是驱动开发的第一步。树莓派4B 使用 SPI0 总线连接 W25QXX 芯片接线关系如下BCM 编号W25QXX 引脚功能树莓派4B GPIOBCM40pin 物理脚CLKSPI 时钟 SCLKGPIO1123DOSPI 输入 MISOGPIO921DISPI 输出 MOSIGPIO1019/CS片选 CE0GPIO824VCC / VCCQ电源 2.7V~3.6V3.3V脚1/17—GND地0V—下面是树莓派4B 的 J8 GPIO 排针引脚图SPI 相关的 MOSI脚19、MISO脚21、SCLK脚23、CE0脚24一目了然小提示驱动默认以 SPI Mode 3、1MHz 频率打开/dev/spidev0.0设备节点普通 SPI 单线读写的 W25QXX 芯片在该配置下即可稳定通信无需改频。三步安装一键编译 W25QXX 驱动工程准备工作只需 3 步5 分钟即可跑通。⚡第一步安装依赖sudo apt-get install libgpiod-dev pkg-config cmake -y第二步获取项目代码git clone https://gitcode.com/gh_mirrors/w2/w25qxx cd w25qxx/project/raspberrypi4b第三步构建工程工程同时提供 Makefile 与 CMake 两种构建方式# 方式一Makefile make sudo make install # 可选安装到系统 # 方式二CMake mkdir build cd build cmake .. make sudo make install # 可选安装后支持 find_package(w25qxx REQUIRED)编译成功后会得到w25qxx命令行工具它把全部 50 项驱动功能都封装成了参数调试闪存时再也不用手写测试代码。快速验证4条命令确认W25QXX驱动正常编译完成后用下面 4 条命令即可完成信息→接线→读ID→读写的完整验证闭环① 查看芯片与驱动信息./w25qxx -iw25qxx: chip is Winbond W25QXX. w25qxx: manufacturer is Winbond. w25qxx: interface is SPI QSPI. w25qxx: driver version is 1.0. w25qxx: min supply voltage is 2.7V. w25qxx: max supply voltage is 3.6V.② 查看当前板子的引脚连接./w25qxx -pw25qxx: SPI interface SCK connected to GPIO11(BCM). w25qxx: SPI interface MISO connected to GPIO9(BCM). w25qxx: SPI interface MOSI connected to GPIO10(BCM). w25qxx: SPI interface CS connected to GPIO8(BCM).③ 读取芯片 ID关键验证点./w25qxx -e get-id --typeW25Q128 --interfacespiw25qxx: manufacturer is 0xEF device id is 0x17.厂商 ID0xEF代表旺宏Winbond若读到的 ID 全为0xFF或0x00请优先检查接线与 SPI 模式。④ 写入并回读数据./w25qxx -e write --typeW25Q128 --interfacespi --addr0x000000 --data0x08 ./w25qxx -e read --typeW25Q128 --interfacespi --addr0x000000w25qxx: addr 0 write data 8. w25qxx: addr 0 is 8.✅ 写入 8、回读 8数据闭环成功说明你的 W25QXX 驱动开发环境已经完全就绪进阶玩法50项功能命令速查表驱动工具提供了 50 项命令覆盖从基础读写到 SFDP 高级读取的全部功能。以下是最常用的几组自动化测试命令命令作用./w25qxx -t reg --typeW25Q128 --interfacespi运行寄存器测试逐项校验状态/锁/复位等全部寄存器功能./w25qxx -t read --typeW25Q128 --interfacespi运行整片读测试含 4K/32K/64K 擦除与快速读校验基础功能命令功能命令示例获取 ID./w25qxx -e get-id --typeW25Q128 --interfacespi整片擦除./w25qxx -e chip-erase --typeW25Q128 --interfacespi断电 / 唤醒./w25qxx -e power-down/-e wake-up高级功能命令功能命令示例快速读取./w25qxx -e advance-fast-read --typeW25Q128 --interfacespi --addr0x000000页编程./w25qxx -e advance-page-program --typeW25Q128 --interfacespi --addr0x000000 --data0x064K/32K/64K 块擦除./w25qxx -e advance-erase-4k --typeW25Q128 --interfacespi --addr0x000000全局块锁/解锁./w25qxx -e advance-global-lock/-e advance-global-unlock读取 JEDEC ID./w25qxx -e advance-get-jedec-id --typeW25Q128 --interfacespi读取 SFDP 参数./w25qxx -e advance-spi-get-sfdp --typeW25Q128 --interfacespi完整 50 项命令说明可在project/raspberrypi4b/README.md中查阅输入./w25qxx -h也能随时打印帮助。二次开发读懂源码结构想在自己的项目里集成 W25QXX 驱动只需三步参考 README 的 Install 章节实现平台接口参考interface/driver_w25qxx_interface_template.c模板为 W25QXX 实现 7 个基础 SPI 回调初始化、收发字节、延时、调试打印等加入驱动核心将src/目录含 driver_w25qxx.c 与 driver_w25qxx.h加入工程调用 API参考example/driver_w25qxx_basic.h的封装先调用 init 初始化再用get_id、write、read完成读写树莓派4B 工程的接口实现位于project/raspberrypi4b/driver/src/raspberrypi4b_driver_w25qxx_interface.c底层通过 Linux spidev 驱动完成 SPI 通信project/raspberrypi4b/interface/src/spi.c是学习 Linux SPI 驱动开发的绝佳范例。常见问题速解Q读 ID 一直是 0xFF 怎么办A依次检查 ① CE0 是否正确接 GPIO8 ② SPI 模式是否为 Mode 3 ③ 晶振与供电是否稳定 ④ 芯片型号与--type参数是否一致。Q能跑更高频率吗AW25QXX 支持最高 133MHz但树莓派 GPIO 走 SPI0 单线模式时建议先用 1MHz~50MHz 稳定后再逐步上调。Q想看芯片手册的引脚定义和时序Adatasheet/目录内置了全系列 12 款 W25QXX 芯片手册例如datasheet/w25q128_datasheet.pdf。Q想要离线 API 文档A打开doc/html/index.html即可浏览完整的 Doxygen 接口文档。小结本文带你在树莓派4B上完成了 W25QXX 串行闪存驱动从接线、编译到 50 项功能验证的完整流程。得益于平台无关的驱动设计与命令行测试工具从插上线到读回数据只需几分钟。动手试试吧让 W25QXX 闪存成为你嵌入式项目中的可靠存储伙伴【免费下载链接】w25qxxW25QXX(W25Q10, W25Q20, W25Q40, W25Q80, W25Q16, W25Q32, W25Q64, W25Q128, W25Q256, W25Q512, W25Q01, W25Q02) full-featured driver library for general-purpose MCU and Linux.项目地址: https://gitcode.com/gh_mirrors/w2/w25qxx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表