打印
[STM32]

关于STM32使用FSMC驱动NAND FLASH的问题

[复制链接]
4951|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lindashi|  楼主 | 2013-12-16 15:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
airwill| | 2013-12-16 16:28 | 只看该作者
由于寻址空间的限制. 每个只能驱动一个256M

使用特权

评论回复
板凳
huangxz| | 2013-12-16 22:54 | 只看该作者
nand地址不是随命令扩展的吗

使用特权

评论回复
地板
lindashi|  楼主 | 2013-12-20 10:49 | 只看该作者
我外扩1G的k9k8g08成功格式化,但是问题又出现了,现在写入数据拔出以后重新插入,电脑又提醒重新格式化U盘,不知道前辈能指点下吗?

使用特权

评论回复
5
lindashi|  楼主 | 2013-12-20 15:09 | 只看该作者
手册上说的,FSMC可以不限制容量,

NB($TIBPGYTQVQY(1VLUE6N.JPG (64.89 KB )

NB($TIBPGYTQVQY(1VLUE6N.JPG

使用特权

评论回复
6
lindashi|  楼主 | 2013-12-21 10:32 | 只看该作者
有做过K9K8G  U盘的人吗,能告诉我为什么会出现写入数据以后U盘分区表就被全写为零吗

使用特权

评论回复
7
yang4469| | 2013-12-21 14:06 | 只看该作者
建议先换个小的试试,排除FSMC地址的问题,你1g的都没完全成功,注意看下32处理接受数据部分的程序,对于PC的指令的操作是如何处理的

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
lindashi + 1 赞一个!
8
lindashi|  楼主 | 2013-12-21 15:57 | 只看该作者
非常感谢您,我已经成功把128M的FLASH(K9F1G08)做成了U盘,但是现在用K9K8G改了底层地址函数以后能够格式化成功,但是向盘里写数据以后,用winhex观察发现扇区表全部变为零了,初步分析是不是PC机传过来的地址把零扇区的分区表全写零了?现在迷茫了,不知道该改哪里了,现在比较迷茫,希望能得到好心的前辈的指点。

   楼上好心人说的很有道理,我现在发现的就是PC机过来的地址有问题,使得扇区表在通过PC机向U盘写入数据以后被全写为零,所以电脑就又变的不识别了,电脑重新提醒需要格式化。

使用特权

评论回复
9
lindashi|  楼主 | 2013-12-21 16:01 | 只看该作者
我更改了SCSI接口的返回参数,但是好像没有用,不大清楚这个有多大用处,

_73{10[{LM_3]GL(R(4FF4W.jpg (160.32 KB )

_73{10[{LM_3]GL(R(4FF4W.jpg

使用特权

评论回复
10
yang4469| | 2013-12-21 16:51 | 只看该作者
lindashi 发表于 2013-12-21 16:01
我更改了SCSI接口的返回参数,但是好像没有用,不大清楚这个有多大用处,

read capacity很有用的,操作码0x25,它读到的是实际磁盘容量,而readformatcapacity,0x23是设备支持的最大容量

使用特权

评论回复
11
yang4469| | 2013-12-21 16:54 | 只看该作者
lindashi 发表于 2013-12-21 15:57
非常感谢您,我已经成功把128M的FLASH(K9F1G08)做成了U盘,但是现在用K9K8G改了底层地址函数以后能够格式 ...

感觉你的问题在于一些底层描述U盘大小的地方没有对应的更改,就像你9#描述的那样,你没改对而已

使用特权

评论回复
12
lindashi|  楼主 | 2013-12-21 17:58 | 只看该作者
非常谢谢您,我去看看,查查资料,改好了告诉您!

使用特权

评论回复
13
lindashi|  楼主 | 2013-12-23 10:55 | 只看该作者
数组改好以后还是无法使用,好郁闷啊

使用特权

评论回复
14
lindashi|  楼主 | 2013-12-23 10:58 | 只看该作者
格式化成功以后还是,写入数据就把扇区表的数据全部写零,重新插拔电脑又得重新格式化U盘

使用特权

评论回复
15
lindashi|  楼主 | 2013-12-23 15:30 | 只看该作者
经过观察发现改底层的写五个地址,能解决从新格式化的问题,但是,地址还会出错,谁做过这个底层地址输入呢,我看手册写的感觉不好用

使用特权

评论回复
16
lindashi|  楼主 | 2013-12-24 10:18 | 只看该作者
read capacity和eadformatcapacity都对了 ,并且设置的u盘最大地址为0x3fffffff,电脑检测到u盘大小为0.99G,现在数据存进去以后重新插拔能识别U盘,但是存进去的数据不对,比如存图片的话,拔出重插再看图片有时候是无预览,或者是财社的图片。写五个地址的代码是这样的

S%T3588~_6_9GYY41[CR_7K.jpg (103.5 KB )

S%T3588~_6_9GYY41[CR_7K.jpg

使用特权

评论回复
17
lindashi|  楼主 | 2013-12-24 20:17 | 只看该作者
存入的图片与原图对比,希望做过这个的前辈指点下

gfsdgd.jpg (618.18 KB )

gfsdgd.jpg

gfsd1gd.jpg (618.18 KB )

gfsd1gd.jpg

使用特权

评论回复
18
yang4469| | 2013-12-25 10:39 | 只看该作者
lindashi 发表于 2013-12-24 10:22
read capacity和eadformatcapacity都对了 ,并且设置的u盘最大地址为0x3fffffff,电脑检测到u盘大小为0.9 ...

自己慢慢分析下吧,一步一步排除问题,我只是最近做过一个stm32的u盘,用st的大容量存储的例子改的,谈不上前辈,交流而已
就你目前的问题,我的思路是:
先判断flashnand有没有问题吧,比如换一片
判断对flash的操作有没问题,用串口显示(跳过U盘的程序),排除与flash的通信问题
最后才是判断U盘的读写程序
也许有没考虑全的地方,自己想想吧,弄这些东西很考验耐心,比较繁琐

使用特权

评论回复
19
lindashi|  楼主 | 2013-12-25 12:40 | 只看该作者
yang4469 发表于 2013-12-25 10:39
自己慢慢分析下吧,一步一步排除问题,我只是最近做过一个stm32的u盘,用st的大容量存储的例子改的,谈不 ...

恩,好的,非常感谢您!

使用特权

评论回复
20
fhliujie2000| | 2014-2-10 11:46 | 只看该作者
上楼的建议比较好,赞一个

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

16

帖子

1

粉丝