在main.c里面的while外面执行测试程序
void Simple_NAND_Test(void)
{
memset(write_buf, 0x55, sizeof(write_buf));
NAND_IDTypeDef nand_id={0};
NAND_AddressTypeDef nand_addr;
nand_addr.Block = 0;
nand_addr.Page = 0;
nand_addr.Plane = 0;
//
HAL_NAND_Reset(&hnand1);
//
HAL_NAND_Read_ID(&hnand1,&nand_id);
//
HAL_NAND_Erase_Block(&hnand1,&nand_addr);
//
while(HAL_NAND_GetState(&hnand1) != HAL_NAND_STATE_READY);
//
HAL_NAND_Write_Page_8b(&hnand1,&nand_addr,write_buf,1);
// HAL_NAND_Read_Status(&hnand1);
//NAND_WritePage(20,0,read_test);
//
// memset(write_buf, 0, sizeof(write_buf));
//
HAL_NAND_Read_Page_8b(&hnand1,&nand_addr,read_test,1);
// NAND_Read_Page_With_ECC(20,5,read_test);
}
执行出的结果全为0XFF |
加延时函数试试
不行,能读出ID,但是将数据写入的时候,
/ Get Data into Buffer / for (index = 0U; index < hnand->Config.PageSize; index++) { buff = (uint16_t *)deviceaddress; buff++; }
能看到寄存器的地址在变,但是后期读的时候就是读出来0XFF
[md]说明读没问题,出在写函数里面,可以减小写入数量,或者增加总线频率
写入一页4096个数据都不行,也尝试过往备用区写128个数据,读出来的都是0XFF,时钟总线频率180MHZ,应该不低了吧