本帖最后由 不吃肉的羊 于 2018-2-16 09:23 编辑 . z1 o5 j. O* v9 [ }
# l1 U# k' D$ i/ P. E; ^" _" u参加工作之后,对U盘功能的使用还是比较频繁,这里简单的做个U盘,实验出来。 首先使用CUBE生成一个工程 ( @" g8 Y3 T, t* ], b6 L
首先是对RCC的配置 
( R2 C; c `- q
然后配置SYS 8 G1 u+ ` F# E- G* D
使用全速USB ) q: a1 H' q# {8 E8 d& J# H% y& ?
配置为大容量存储设备 
' q; u" j$ B* |& X% [ v' I
然后是时钟树的配置,USB配置为48M 7 I8 R' {$ Y0 j) y, J0 v p
生成一个工程,编译烧录,可以看到电脑已经有盘符出现了 
+ P0 y0 s+ E' }2 W8 h' @3 S# t
不过现在还不能使用,现在添加我的W25Q64 驱动程序,驱动程序就不讲了,轮子自己造 首先初始化U盘,也就是初始化W25Q64 
- |1 R3 N' ^3 M' {, [$ w) |; K
添加U盘的读写函数 
I7 S0 q- N7 \% l

) ^! C) j+ T2 e' K! _! H
获取U盘状态 ! S: ^* y5 e/ `. \& L9 c! N
获取U盘信息 
S h/ B* W4 h6 I) S* x) G5 c + b' R# u9 |. }4 u+ C
最后,一定注意中断优先级的处理让USB中断优先级低于W25Q64和DMA的优先级,否则U盘配置会出问题 + k. N0 Y( o( k* q; E- u, _3 s
现在可以正常格式化U盘 ' u* v- a N# V: s6 z9 Z
好像有点小,造个假 $ V% Q0 Q) w! h
实际上只有8M的大小(W25Q64只有这么大) 做个文件测试下 ; {, g `7 [0 u& y) W# Q
放到U盘里面,再打开 " D$ Y7 [" R5 d7 v

|
你好。用的硬件Spi+dma,现在读写是设置的10M,用cube配置的,然后原理图没什么特殊的,直接百度,就可以看到
1. 不要假设 Flash 的容量大小,靠读取 Flash 的识别信息来判断容量。
2. 如果有条件,加一个软件 ECC,这样更耐用一点。
3. 试试看 W25Q128(16MB) 和 S25FL512(64MB)6 {6 C- Z) \2 s4 u
4. 试试看 GD5F 系列的 SPI NAND 闪存,直接上 512MB/1GB 试试。
好的,谢谢您
新年快乐!
生命在于折腾
https://www.stmcu.org.cn/module/forum/thread-614799-1-1.html