硬汉嵌入式论坛

 找回密码
 立即注册
查看: 7768|回复: 5
收起左侧

[有问必答] Ex018-USB Mass Storage例程 枚举不成功

[复制链接]

2

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2012-11-26 15:27:18 | 显示全部楼层 |阅读模式
我在调试Ex018-USB Mass Storage例程(SD卡和NAND模拟U盘),在电脑上枚举不出来,在电脑上也格式化失败。后来发现NAND_DispBadBlockInfo()此函数打印出nand flash 好块的数量只有38块,低于100块,求教这是什么原因了?开发板上个月刚买的安富莱_STM32开发板(V2标准版)。本人急需将nand flash移植到Fatfs上面。
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2012-11-27 09:06:23 | 显示全部楼层
所谓的坏块也就是在每个page的特定位置做了写了一个软件标识而已。如果调试程序时出错,可能导致错误的设置了坏块标志。
你可以修改下例程,清除所有的坏块标志,然后通过对每个块进行写-读-校验的方式来重新设置坏块标记。
回复

使用道具 举报

2

主题

2

回帖

2

积分

新手上路

积分
2
 楼主| 发表于 2012-11-27 09:52:01 | 显示全部楼层
uint8_t ucFlag = 0xFF;
    uint8_t ucRFlag0 = 0;
    uint8_t ucRFlag1 = 0;
    uint8_t ret0;
    uint8_t ret1;
   
                     for (i = 0; i < NAND_BLOCK_COUNT; i++)
    {
        ret0 = FSMC_NAND_WriteSpare(&ucFlag, i * NAND_BLOCK_SIZE, BI_OFFSET, 1);
        FSMC_NAND_ReadSpare(&ucRFlag0, i * NAND_BLOCK_SIZE, BI_OFFSET, 1);
        if (ucRFlag0 != 0xFF)
        {
            printf("");
        }
        ret1 = FSMC_NAND_WriteSpare(&ucFlag, i * NAND_BLOCK_SIZE + 1, BI_OFFSET, 1);
        FSMC_NAND_ReadSpare(&ucRFlag1, i * NAND_BLOCK_SIZE, BI_OFFSET, 1);
         if (ucRFlag1 != 0xFF)
        {
            printf("");
        }

        if(ret0|ret1)
        {
            break;   
        }
    }
我试着将所有坏块标记都改好块0xFF,FSMC_NAND_WriteSpare写进去0xFF,FSMC_NAND_ReadSpare读出来还是0?这是为什么了?
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2012-11-27 10:44:01 | 显示全部楼层
那你检查一下NAND FLASH 的ID能否正确读出,排除下硬件问题。
回复

使用道具 举报

2

主题

2

回帖

2

积分

新手上路

积分
2
 楼主| 发表于 2012-11-27 11:19:18 | 显示全部楼层
id能读得出来
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2012-11-28 11:24:32 | 显示全部楼层
可能你没有事先擦除。写之前必须先擦除再写。  写所有的存储位只能由1修改为0.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-3 12:17 , Processed in 0.214564 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表