nandflash用的是 K9F1G08
每个页是2K ,写一个页,然后再读这个页,发现只有前512是一样的
没办法!只能先确定是 写有问题还是读有问题
用烧录工具(此工具没有问题)将一个文件,写入nand的一个固定地址, 然后再用我自己的代码去读这个地址的一个页,
用读出来的值和这个文件想比较
拿前16个字节来举例
错误的
0x45 0x1b 0x20 0x2b 0x24 0xfe 0x10 0x9 0x8e 0x11 0x80 0x1 0xff 0xff 0xff 0xff
正确的
0x45 0x0 0x0 0xea 0x1b 0x0 0x0 0xea 0x20 0x0 0x0 0xea 0x2b 0x0 0x0 0xea
以此类推
就是每4个字节,后3个都丢了,
高人快现身吧,
详细看一下FLASH的DATASHEET,看下写整个页的时序到底是什么。
要想测试读是否有问题的话你可以先把FLASH擦了,或者是拿个空FLASH,然后把一个缓冲区的数据全设置成0xAA之类的非0和非FF的数据,然后将FLASH的整页读到这个缓冲区,看看读出来的是不是FF,如果是FF的话估计就是读成功了。然后再去试写。
估计是数据类型搞错了 4字节的和单字节的
lz好好检查一下
先擦除FLASH,再用你的代码去读出来看看是否是全FF。另外要注意一下FLASH的位宽是多少,每页真的是2K?
1. 检查数据类型是否正确
2. 确定MCU的nandflash controler读写数据格式和字节数是否正确
你的问题很可能是数据类型的错误,我用的K9f1208的,读写都是一个字节一个字节进行的,所以你最好看下你程序,再就是操作命令是否正确。
如还有疑问,可与我联系,很乐意帮人
三星的2440,我们也用过啊,有Nand Flash控制器,写命令、写地址、写数据、读数据都是操作寄存器的,不用直接控制IO,应该很好操作啊,不应该有这样的情况啊。
楼主你仔细看看你的代码,看是否有上面各位大侠说的用错数据类型的问题。