📄 edit1.c
字号:
void Read_Page(unsigned int block,unsigned int page,unsigned char *buffer)
{
int i;
//unsigned char *source = buffer;
unsigned int blockPage = (block << 5) + page;
ST_CMD();
//------------------------------------------
Nand_IO = 0x00;
ST_ADR();
Nand_IO = 0;
Nand_IO = blockPage & 0xff;
Nand_IO = (blockPage >> 8) & 0xff;
//------------------------------------------
for(i = 0;i<10;i++);
ST_DAT();
WAIT_RB();
for(i = 0;i < 528; i ++)buffer = Nand_IO;
for(i=0;i<528;i++)Uart_Printf("read page %x buffer[%d] = 0x%x\n",blockPage,i,buffer);
ST_INVALID();
}
int Write_Page(unsigned int block,unsigned int page,unsigned char *buffer)
{
unsigned int blockPage = (block<<5) + page;
int i;
unsigned char *source;
source = buffer;
ST_CMD();
//------------------------------------------
Nand_IO = 0x80;
ST_ADR();
Nand_IO = 0;
Nand_IO = blockPage & 0xff;
Nand_IO = (blockPage >> 8)&0xff;
//------------------------------------------
ST_DAT();
for(i = 0;i<528;i++)Nand_IO = source;
for(i=0;i<528;i++)Uart_Printf("write page %x buffer[%d] = 0x%x\n",blockPage,i,source);
ST_CMD();
Nand_IO = 0x10;
for(i=0;i<10;i++);
WAIT_RB();
Nand_IO = 0x70;
ST_DAT();
for(i = 0;i<3;i++);
if(Nand_IO & 0x1 == 0)
{
ST_INVALID();
return 0;
}
else
{
ST_INVALID();
return 1;
}
}
//64M的比32M的地址多了一位,而这位刚好要在用一个送地址周期才可以把那位送进去,也就是程序修改如下:
//------------------------------------------
Nand_IO = 0;
Nand_IO = blockPage & 0xff;
Nand_IO = (blockPage >> 8)&0xff;
//------------------------------------------
//改为
//------------------------------------------
Nand_IO = 0;
Nand_IO = blockPage & 0xff;
Nand_IO = (blockPage >> 9) & 0xff;
Nand_IO = (blockPage >> 17) & 0x01;
//------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -