查看: 6005|回复: 4

何如通过单片机控制 Nand Flash

[复制链接]
  • TA的每日心情
    奋斗
    2013-11-13 09:14
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-9-24 13:41:53 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 树上那只猫 于 2013-9-24 13:58 编辑

       背景:      
            最近有一个项目是 一个嵌入式系统设备。
            功能:信号采集,数据存储,数据传输(USB+蓝牙)。
            主控MCU:一个M0核的单片机

           由于需要存储的数据有点大(大概130MB)。为了能够将数据上传到PC机,我计划将该设备的存储模块做成一个类似于U盘的东西------只要插上PC机就可以识别,并能够把里面数据文件拷贝出来。
    所以需要外加一个存储模块。
            存储:一个256MB的 nand flash 芯片;

            但是由于该MCU没有USB接口,为了缩短数据上传的时间,计划加一个 nand flash 控制器(通常控制器都带USB接口),专门用来读取nand flash 中的数据,写flash 不要求高速
            这样的话,就等于是通过 单片机和 “nand 控制器” 同时控制nand flash芯片了。
    单片机负责写入,花费15个I/O口与nand flash 的各管脚相连。”nand flash 控制器“负责 PC机与nand flash 之间的数据传输,就像下图。

    QQ截图20130924112401.png

                         
            (由于数据量较大,传输起来需要USB,但是该单片机没有USB口,所以要么采用一个nand flash控制器,要么换一个带USB的MCU。而我的初步计划是前者。因为该单片机集成了蓝牙,设备需要能在上位机显示实时数据。)
    问题来了:
             1,如何实现,通过单片机写,通过控制器读的切换?互相之间不影响。
             2,单片机要对nand flash 进行读写,并且创建文件,就需要有一套文件系统。但是专用于nand flash 的文件系统YAFFS貌似只支持LINUX的PC机而 windows的PC机则不支持,不知道IOS支不支持。(这里还请有经验的人给小弟我解惑,不胜感激啊~{:soso_e105:}).是不是只能用FAT文件系统了
             3,如果能用FAT文件系统,那么通过单片机来读写nand flash 涉及到 ECC校验,坏块管理,垃圾搜集,负载均衡的问题,这些算法是否很复杂,应该添加在哪一层?
             
             
             
             




    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-12 10:32
  • 签到天数: 295 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-9-24 14:10:11 | 显示全部楼层
    好高端~~~~~~~~~~~~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2013-11-13 09:14
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2013-9-24 14:19:13 | 显示全部楼层
    fj1161 发表于 2013-9-24 14:10
    好高端~~~~~~~~~~~~~~

    其实也没有太多内容,只是我刚开始工作,对存储这一块还不是很了解。
    以前只弄过SD卡,是通过STM32F051控制的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-9-2 01:25
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-9-24 21:58:32 | 显示全部楼层
    单片机来读写nand flash算法确实很复杂,一般用nand flash的场合都是MCU自带有nand flash控制器的,支持硬件ECC,如果MCU资源不足,主频不快的话还是用SD卡+FATFS方案吧,FAT32兼容性还是不错的,而且用SD卡用起来也方便,至于读写的切换,不知道楼主在连接USB的时候是否还需要进行实时数据采集,如果不需要的话要实现第一个问题的读写切换只需要MCU再引出一个引脚判断 USB 5V电源是否有电(最好采用中断方式),有电则停止读写操作,复位SD卡,置读写IO为高阻输入状态,将总线交给控制器。在没连接USB时存储控制器断电(断电情况下不知道控制器是否会影响总线)MCU 检测IO为低电平开始重新初始化SD卡并记录数据。个人愚见,如有问题请指正
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2013-11-13 09:14
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2013-9-25 14:30:42 | 显示全部楼层
    xijiele 发表于 2013-9-24 21:58
    单片机来读写nand flash算法确实很复杂,一般用nand flash的场合都是MCU自带有nand flash控制器的,支持硬 ...

    非常感谢 xijiele 的回答
    今天我在查找有关nand flash的资料时,发现生产厂家现在也有内嵌 ECC校验 等功能的 nand flash。
    比如有一个叫做 e.MMC( 4.41) 的东西,我看我应该去了解一下。它的接口是  JEDEC-standard  也得去看看了。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-25 19:27 , Processed in 0.151069 second(s), 24 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.