📄 nand.c
字号:
/*************************************Seekfor Embedded DOS v1.0***************************************************
****** *** ***** ****** **** ****** v1.0
** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** **
** ***** ***** ** **** ******* ***** ******** ***** ** ** ** ** **
*** ** ** ** ** ** ** ** ** ** *** ** ** ** ** ** ** ** ***
** ******* ******* **** ** ** ** ** ******* ** ** ** ** **
** ** ** ***** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
****** ***** ***** ******** ****** ***** ****** ***** ****** **** ******
<1)基本描述
Seekfor Embedded DOS v1.0是嵌入式的一个类DOS操作系统,支持FAT16/FAT32.
<2)文件描述
文件名:nand.c
功能:k9f1208操作
<3>如需更新版本软件,请联系:
QQ:82054357
Mail:Seek_for@163.com
MSN:sfrad32@hotmail.com
**************************************************************************************************************/
#ifndef __NAND_C__
#define __NAND_C__
#include "dos.h"
/**BOOL NAND_erase(DWORD dwSectors,DWORD dwBytesPerSector,void*user_data)*********************
功能:
NAND扇区擦除
入口:
DWORD dwSectors:逻辑扇区号
DWORD dwBytesPerSector:每扇区字节数
void*user_data:用户数据
出口:
成功返回1,否则返回0
调用者:
任意
备注:
无
***********************************************************************************************/
BOOL NAND_erase(DWORD dwSectors,DWORD dwBytesPerSector,void*user_data)
{
BYTE addr;
rNFCMD=0x60;
dwSectors<<=5;
addr=(BYTE)dwSectors;
rNFADDR=addr;
addr=(BYTE)(dwSectors>>8);
rNFADDR=addr;
addr=(BYTE)((dwSectors>>16)&0x01);
rNFADDR=addr;
rNFCMD=0xd0;
rNFCMD=0x70;
while (!(rNFSTAT&0x01));
return 1;
}
BOOL NAND_read(DWORD dwSectors,BYTE*buffer,DWORD dwBytesPerSector,void*user_data)
{
DWORD i,j;
BYTE addr;
dwSectors<<=5;
rNFCMD=0x00;
rNFADDR=0x00;
addr=(BYTE)(dwSectors);
rNFADDR=addr;
addr=(BYTE)((dwSectors>>8));
rNFADDR=addr;
addr=(BYTE)((dwSectors>>16)&0x01);
rNFADDR=addr;
for(i=0;i<32;i++)
{
while(!(rNFSTAT&0x01));
for(j=0;j<512;j++)
{
*buffer++=rNFDATA;
}
while(j++<528) addr=rNFDATA;
}
return 1;
}
BOOL NAND_write(DWORD dwSectors,BYTE*buffer,DWORD dwBytesPerSector,void*user_data)
{
DWORD i,j;
BYTE addr;
dwSectors<<=5;
for(i=0;i<32;i++,dwSectors++)
{
rNFCMD=0x80;
rNFADDR=0x00;
addr=(BYTE)(dwSectors);
rNFADDR=addr;
addr=(BYTE)(dwSectors>>8);
rNFADDR=addr;
addr=(BYTE)((dwSectors>>16)&0x01);
rNFADDR=addr;
for(j=0;j<512;j++) rNFDATA=*buffer++;
for(;j<528;j++) rNFDATA=0xff;
rNFCMD=0x10;
while(!(rNFSTAT&0x01));
}
return 1;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -