本帖最后由 不吃肉的羊 于 2018-2-16 09:23 编辑
J$ K. \% i/ b( L4 G" K
3 U; L! ]" h0 ^7 j) G4 N4 ^# F参加工作之后,对U盘功能的使用还是比较频繁,这里简单的做个U盘,实验出来。 首先使用CUBE生成一个工程 
, N6 H. U4 b: t, k* m: M3 [
首先是对RCC的配置 
( t& p( |6 w* r/ E* x0 J- N% S4 J
然后配置SYS 1 F- x3 J& q; @5 b1 |5 f
使用全速USB $ B6 A: z% h4 }# f9 R ]- G
配置为大容量存储设备 
; H) K1 v! B6 E0 ~9 R, |4 `
然后是时钟树的配置,USB配置为48M i# o# m. u; Z
生成一个工程,编译烧录,可以看到电脑已经有盘符出现了 
5 M- o7 x7 z. t5 P0 w1 C" [1 g
不过现在还不能使用,现在添加我的W25Q64 驱动程序,驱动程序就不讲了,轮子自己造 首先初始化U盘,也就是初始化W25Q64 b; D3 L2 t$ n& ~$ ?" |
添加U盘的读写函数 2 Z9 E R! o# Z

6 m; n, O: x* e) S/ @& T3 s8 F/ K& {1 `
获取U盘状态 ( q7 C- ^2 |8 ~2 V" H' @, p
获取U盘信息 
4 m Q: q Z- j; _6 s- w3 ~! {
+ k& S1 M; Y+ g0 S, v Z8 Z y% S' J: b最后,一定注意中断优先级的处理让USB中断优先级低于W25Q64和DMA的优先级,否则U盘配置会出问题 
7 s/ X0 A7 m U& u% S N
现在可以正常格式化U盘 
3 L: e' w& U8 R0 h' j( x3 X
好像有点小,造个假 
7 c' x* E; g+ O
实际上只有8M的大小(W25Q64只有这么大) 做个文件测试下 , `) t& F' {3 O4 W: J! a0 |
放到U盘里面,再打开 
+ K7 ]. g {) Y0 q. \: b

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