nandflash 驱动 碰到奇怪问题? 那位大虾帮忙看看

menuconfig 2010-01-26 03:55:00
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个都丢了,
高人快现身吧,
...全文
86 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yangcuncunzhang 2010-01-27
三星的2440,我们也用过啊,有Nand Flash控制器,写命令、写地址、写数据、读数据都是操作寄存器的,不用直接控制IO,应该很好操作啊,不应该有这样的情况啊。
楼主你仔细看看你的代码,看是否有上面各位大侠说的用错数据类型的问题。
回复
laiguo 2010-01-27
你的问题很可能是数据类型的错误,我用的K9f1208的,读写都是一个字节一个字节进行的,所以你最好看下你程序,再就是操作命令是否正确。
如还有疑问,可与我联系,很乐意帮人
回复
skyler2008 2010-01-27
1. 检查数据类型是否正确
2. 确定MCU的nandflash controler读写数据格式和字节数是否正确
回复
JassonRose 2010-01-27
先擦除FLASH,再用你的代码去读出来看看是否是全FF。另外要注意一下FLASH的位宽是多少,每页真的是2K?
回复
ialwaysgo 2010-01-26
估计是数据类型搞错了 4字节的和单字节的
lz好好检查一下
回复
menuconfig 2010-01-26
SAMSUNG 2440
回复
yangcuncunzhang 2010-01-26
你用的CPU是什么型号?
回复
wxdcxp 2010-01-26
数据类型要定义为Byte,不能用char
回复
老猿IVD 2010-01-26
详细看一下FLASH的DATASHEET,看下写整个页的时序到底是什么。
要想测试读是否有问题的话你可以先把FLASH擦了,或者是拿个空FLASH,然后把一个缓冲区的数据全设置成0xAA之类的非0和非FF的数据,然后将FLASH的整页读到这个缓冲区,看看读出来的是不是FF,如果是FF的话估计就是读成功了。然后再去试写。
回复
相关推荐
发帖
驱动开发/核心开发
创建于2007-09-28

2.1w+

社区成员

硬件/嵌入开发 驱动开发/核心开发
申请成为版主
帖子事件
创建了帖子
2010-01-26 03:55
社区公告
暂无公告