硬汉嵌入式论坛

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

[有问必答] 关于K9F1208芯片的COPY-BACK功能求解

[复制链接]

1

主题

2

回帖

1

积分

新手上路

积分
1
发表于 2016-3-2 16:26:24 | 显示全部楼层 |阅读模式
本人使用STM32F103ZET7,通过FSMC总线控制NAND FLASH 芯片K9F1208,能够正常读、写、擦除以及读取状态等,但是在COPY-BACK这个功能上遇到了问题,貌似无法复制数据。我的代码如下,麻烦哪位大神遇到过这个问题赐教一下:

uint32_t NAND_CopyBack(NAND_ADDRESS SourAdd, NAND_ADDRESS DestAdd)
{
    *(__IO uint8_t *)(Bank_NAND_ADDR | CMD_AREA) = NAND_CMD_AREA_A;

    *(__IO uint8_t *)(Bank_NAND_ADDR | ADDR_AREA) = 0x00;
    *(__IO uint8_t *)(Bank_NAND_ADDR | ADDR_AREA) = ADDR_1st_CYCLE(ROW_ADDRESS(SourAdd));
    *(__IO uint8_t *)(Bank_NAND_ADDR | ADDR_AREA) = ADDR_2nd_CYCLE(ROW_ADDRESS(SourAdd));
    *(__IO uint8_t *)(Bank_NAND_ADDR | ADDR_AREA) = ADDR_3rd_CYCLE(ROW_ADDRESS(SourAdd));

    *(__IO uint8_t *)(Bank_NAND_ADDR | CMD_AREA) = NAND_CMD_CPYBAK;
   
    *(__IO uint8_t *)(Bank_NAND_ADDR | ADDR_AREA) = 0x00;
    *(__IO uint8_t *)(Bank_NAND_ADDR | ADDR_AREA) = ADDR_1st_CYCLE(ROW_ADDRESS(DestAdd));
    *(__IO uint8_t *)(Bank_NAND_ADDR | ADDR_AREA) = ADDR_2nd_CYCLE(ROW_ADDRESS(DestAdd));
    *(__IO uint8_t *)(Bank_NAND_ADDR | ADDR_AREA) = ADDR_3rd_CYCLE(ROW_ADDRESS(DestAdd));
   
    *(__IO uint8_t *)(Bank_NAND_ADDR | CMD_AREA) = NAND_CMD_WRITE_TRUE1;
   
    return (NAND_GetStatus());
}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116767
QQ
发表于 2016-3-2 16:41:11 | 显示全部楼层
参看这个芯片的手册,是不是命令或者操作顺序有错,没有用过这个功能,帮顶。
回复

使用道具 举报

1

主题

2

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2016-3-2 17:29:31 | 显示全部楼层
QQ截图20160302172920.png
回复

使用道具 举报

1

主题

2

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2016-3-2 17:30:06 | 显示全部楼层
感觉并没有什么问题,命令代码也是对的,关键是最后的状态检测时Pass了的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-5 19:07 , Processed in 0.597506 second(s), 33 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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