houmous 发表于 2012-4-11 15:27:50

关于如何进行K9F5616flash的块擦除操作

我用的STM32F103片子,按照实验例程里的程序进行块擦除操作。
uint32_t FSMC_NAND_EraseBlock(NAND_ADDRESS Address)
{
 *(vu16 *)(NAND_FLASH_START_ADDR | CMD_AREA) = NAND_CMD_ERASE0;
 *(vu16 *)(NAND_FLASH_START_ADDR | ADDR_AREA) = ADDR_1st_CYCLE(ROW_ADDRESS); 
 *(vu16 *)(NAND_FLASH_START_ADDR | ADDR_AREA) = ADDR_2nd_CYCLE(ROW_ADDRESS); 
 
 *(vu16 *)(NAND_FLASH_START_ADDR | CMD_AREA) = NAND_CMD_ERASE1;
 
  while( GPIO_ReadInputDataBit(GPIOG, GPIO_Pin_6) == 0 );
 
  return (FSMC_NAND_GetStatus());
}
程序如上,在发送完块擦除命令后,等待R/B引脚变高,然后读FLASH的状态,每次读到的都是忙,并且I/O0位为“1”,最后都是超时失败。
FLASH是16位数据I/O口的,我读FLASH的ID没有问题,已经正常读到。现在进行块擦除操作无法进行。
谢谢大家。
页: [1]
查看完整版本: 关于如何进行K9F5616flash的块擦除操作