真的太简单了,十分钟就搞定

参考文章

我卡住了几天,最后发现delay函数的问题,去掉就好了。(评论大佬解释了这一现象)
步骤如下

  1. 使用cube mx 生成基本代码
  2. 调试spi flash
  3. 调试usb
  4. 融合代码

使用cube mx 生成基本代码

确定使用需求

  • USB
  • SPI

usb

以下配置保持默认配置即可,切记不要胡乱修改参数

spi


调试spi flash

我使用的flash 是w25q128 spi 通信模式,所以直接找一个别人写好的驱动就可以了。
w25qxx驱动
我使用的是这个驱动,w25q的都能使用。


使用步骤如readme所述

  • 初始化 W25qxx_Init()
  • 成功后flash属性会存储在w25qxx结构体内
  • 读取数据,有几个函数,分为字节,多字节,页,扇区,块读取等
  • 先擦除再写入,擦除有页,扇区,块等,写入数据也是一样
    更新 2020年9月23日
    关于读和写的问题

    原理解读:
  • 读函数


    读块和写的这些函数原理相同。

调试usb

参考文章即可进行调试usb

融合代码


更新 2020年9月23日

关于有人使用 上电后遇到w25qxx读取id错误导致w25qxx初始化失败 的问题解决方案如下:

  1. 重新启动mcu 并等待一会 插入usb
  2. 更改usb外设初始位置,使其在flash驱动后面,这样就不会出现usb打断flash初始化导致的问题
  3. flash驱动初始化放入usb 的 大容量存储初始化之中
    我自己调试时usb一直是插在电脑上,未出现需要格式化的问题,所以建议之后我提出了以上方案进行处理
    usb接到电脑上即可,usb走线不需要任何上拉下拉电阻
    现在就是U盘了,U盘你总会用吧!这还用教!!!

评论提出的问题:
LeoMeEE:
使用博主这篇文章的方法你可能会遇到的问题:

  1. usb与systicks中断冲突,上述w25qxx的代码里用的hal_delay函数来做延时,该延时依赖于中断内的计时变量累加,而stmcube的usb操作全都在中断里,既当usb中断优先级和systicks优先级相同时,usb函数在中断中调用flash的读写函数会造成函数在延时里卡死。(已在文章开头说明)
  2. 上述25qxx代码在的sector读写函数并没有真正的完成多个sector的读写工作,需要自己写for循环来完成多个sector的读写。(已解决)
  3. 如果你遇到stm32的usb模拟u盘每次插入都需要格式化的问题时候,首先检查你的flash读写函数是否工作正常,在博主的这个方案中,上电后遇到w25qxx读取id错误导致w25qxx初始化失败,结果usb调用flash读写函数时无法读出fat文件系统信息导致每次插入都会提示需要格式化。(已解决)
  4. 如果你需要让mcu重启时不拔掉usb数据线还需要重新枚举usb,则可以在上电初始化usb前将PA12(D+)脚拉低65ms,之后拉高65ms,模拟usb插入的电平,这时不需要重新插拔usb,电脑会重新进行usb枚举的过程。以上,博主这篇文章的框架和方向没问题,细节部分需要测试和完善(已回复)

stm32 cubemx usb spi flash w25q128 u盘调试笔记相关推荐

  1. 基于STM32F103的USB学习笔记38 - Mass Storage之SPI Flash做U盘

    1. 将整个Flash作为U盘的空间 Flash大小为4MB,SPI NorFlash的Sector大小为4KB,所以MSC_MEMORY_BLOCK_SIZE设置为4096.. 3个函数的实现如下, ...

  2. 【单片机笔记】基于STM32F103C8的 USB 外部flash虚拟U盘

    学习stm32已经很长时间了,但是一直没有过多的学习stm32的USB部分,因为实际工作还是用的比较少.说起USB那就有的说了,因为USB的功能很强大,这里主要重点记录一下STM32的USB部分,这个 ...

  3. 在RT-Thread STM32F407平台下配置SPI flash为U盘

    记录下SPI Flash U盘实现过程中踩过的坑,与您分享. 前提条件是,需要先将SPI Flash 配置到elm fal文件系统,并挂载成功.如下图 然后开始配置USB 1,在CubeMX,选择SU ...

  4. 上海航芯技术分享 | 基于SPI Flash的U盘程序,从STM32F103到ACM32F403

    前言 本项目是以SPI Flash(如W25Q128等)存储元件作为存储单元,MCU主控完成USB接口通信并根据SCSI协议实现U盘功能.其结构如下图所示: SPI Flash部分移植 SPI功能部分 ...

  5. U盘GPIO文件系统映射-STM32利用内置FLASH做U盘

    受到linux对一切设备的控制都当成文件对待的启发 于是便有了这个将GPIO映射到U盘中的想法,这样一来便可以在任何支持U盘的设备中扩展系统的硬件功能了 我的QQ是243786753,这属于原创作品, ...

  6. STM32开发 -- W25Q32JV SPI FlASH详解

    如需转载请注明出处:https://juyou.blog.csdn.net/article/details/103168687 flash这部分也是很重要的一部分了. 我们将利用 STM32F1 自带 ...

  7. STM32物联网项目-SPI FLASH编程

    SPI编程--读写Flash芯片(W25Q64JV) FLASH芯片介绍--W25Q64JV W25Q64JV的芯片手册是英文的,用软件翻译了一下,有些地方翻译得不准确,大概了解一下即可,例如芯片的工 ...

  8. (USB系列三)stm32 CubeMX usb音频描述符详解 usb audio UAC

    如果需要麦克风阵列,回声消除,声源定位,波束成形,语音对话的产品请访问我好朋友的店铺. 店铺链接:首页-智能语音开发者联盟-淘宝网 大家好我是人见人爱.花见花开的大魔王. usb协议还是很烦的,cub ...

  9. stm32 hal库 rtc 备份 寄存器 备份sram 调试笔记

    rtc 是可以单独供电的,通常设计rtc是带有一个纽扣电池用来给rtc供电.本次是调试rtc 的备份寄存器和备份sram,这两个都是可以在rtc不断电情况下一直保存数据. 步骤 配置rtc参数,用cu ...

最新文章

  1. linux shell 下载并执行
  2. Docker问题记录
  3. angular4更改表单中显示的值_Angular 4 动态表单教程 Reactive Forms教程
  4. java bom json,JSON字符串带BOM头ufeff
  5. Go指针的使用限制和突破之路
  6. 四阶行列式计算_四阶行列式的计算
  7. 微信发送模版消息,PHP代码简单案例
  8. ViT (Vision Transformer) ----LSTM网络
  9. AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字,Filterable的使用)...
  10. 国家测绘局制定的测绘与地理信息行业标准统计 (20110706)
  11. C语言strcmp函数使用及模拟
  12. linux系统tcl电视刷机包,【欢视商店】TCL电视RT95系列升级包与刷机包
  13. 计算机网络技术自主招生考试题,清华等17所高校2017年自主招生笔试真题
  14. 百度如流智能工作平台2.0发布 聚焦智能组织
  15. 视频渲染靠cpu还是显卡 视频渲染的作用是什么
  16. 学会使用Composer
  17. 入门小程序·搭建论坛
  18. Directx11教程四十三之glow(边缘发光)
  19. 智联招聘VSBOSS直聘VS拉勾 竞品分析
  20. 电源设计经验谈1-5

热门文章

  1. Excel 2010 SQL应用084 TOP谓词
  2. 项目实战-mock测试
  3. 使用字节流读取文本文件时,乱码问题的产生与解决
  4. echarts graph关系图自定义线条label颜色
  5. Bootstrap基础知识
  6. python 画八角形_GitHub - xuedengyue/Turtle_Drawing: 利用Turtle递归绘制分形几何图形
  7. js按钮点击事件,调用方法
  8. 模拟常见软件微信、钉钉、企业微信、飞书、淘宝、支付宝 的User Agent
  9. java 狼捉羊游戏背景_Js 写了一个 “狼吃羊” 小游戏。
  10. 微信内置h5浏览器 getBrandWCPayRequest支付