我用的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没有问题,已经正常读到。现在进行块擦除操作无法进行。 谢谢大家。 |