打印

stm32 的fsmc ecc功能能用吗?

[复制链接]
7334|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rider1|  楼主 | 2009-7-15 20:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我试验的情况是,不管ECC page size设置成多少,生成的ECC竟然都一样,而且256page size时ECC应该是22位,没用的位应该是0,但实际产生的却是32位的数,到底什么原因?
沙发
rider1|  楼主 | 2009-7-15 20:11 | 只看该作者

stm32 的fsmc ecc功能能用吗?

知道的请赐教!

使用特权

评论回复
板凳
香水城| | 2009-7-15 20:39 | 只看该作者

要正确初始化ECC计算器

初始化NAND控制器时要使能ECC计算器。

使用特权

评论回复
地板
rider1|  楼主 | 2009-7-15 20:54 | 只看该作者

谢谢回复

我用之前已经初始化ECC,每次用之前先使能ECC,用完读取结果,然后关闭ECC,下次用之前再打开,这样的流程对吗?

使用特权

评论回复
5
ST_ARM| | 2009-7-16 09:53 | 只看该作者

贴一下你的初始化代码

以及部分运行代码

使用特权

评论回复
6
rider1|  楼主 | 2009-7-16 21:05 | 只看该作者

问题已解决

是我自己理解错误,STM32生成的ECC码是正确的,今天看了一下以前的一个关于ECC编码的文档,试着用STM32生成的ECC码进行检错和纠错,已验证通过。
多谢香水城 和ST_ARM 的热心帮助。

使用特权

评论回复
7
lzh08| | 2009-7-16 21:31 | 只看该作者

请问你得到ecc的值是不是直接调用库函数?

是这样么?我看到fsmc.c里面有一个getecc这个函数,不知道是不是这个

使用特权

评论回复
8
damiaa| | 2009-9-2 11:40 | 只看该作者
本帖最后由 damiaa 于 2009-9-2 17:45 编辑

我每次读写后都调用getecc,发现ECC数据不变啊.还有什么要注意的吗?
初始化允许ECC啦,ECCPAGE设置2K
FSMC_NANDInitStructure.FSMC_ECC = FSMC_ECC_Enable;
FSMC_NANDInitStructure.FSMC_ECCPageSize = FSMC_ECCPageSize_2048Bytes

MAIN中:

FSMC_NANDECCCmd(FSMC_Bank2_NAND,DISABLE);
FSMC_NANDECCCmd(FSMC_Bank2_NAND,ENABLE);

status = FSMC_NAND_WriteLargePage(TxBuffer, WriteReadAddr, 2048/*PageNumber*/);
Ecc = FSMC_GetECC(FSMC_Bank2_NAND);
FSMC_NANDECCCmd(FSMC_Bank2_NAND,DISABLE);
FSMC_NANDECCCmd(FSMC_Bank2_NAND,ENABLE);        
status = FSMC_NAND_ReadLargePage (RxBuffer, WriteReadAddr, 2048);
Ecc = FSMC_GetECC(FSMC_Bank2_NAND);


6楼帮指点一下

使用特权

评论回复
9
rider1|  楼主 | 2009-9-3 08:55 | 只看该作者
PAGE写完后要等FSMC FIFO空之后,才能读ECC。

使用特权

评论回复
10
damiaa| | 2009-9-3 09:53 | 只看该作者
本帖最后由 damiaa 于 2009-9-3 10:35 编辑

发现问题:ECC变量只是被赋值.他不变.前面加了
volatile 才开始变.:L

使用特权

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

本版积分规则

4

主题

27

帖子

1

粉丝