📄 k9fxx08s3.c
字号:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: k9fxx08s3.c
** Last modified Date: 2005-11-29
** Last Version: 1.0
** Descriptions: k9f6408/2808/5608/1208 driver in s3c2410a
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2005-11-29
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#define IN_K9FXX08S3
#include "config.h"
#define NF_nFCE_L() rNFCONF = rNFCONF & (~(1 << 11))
#define NF_nFCE_H() rNFCONF = rNFCONF | (1 << 11)
#define NF_WAITRB() while (!(rNFSTAT & 0x01))
/*********************************************************************************************************
** Function name: K9fxx08EmptyFunction
** Descriptions: 默认数据转换函数 defauld data conversion function
** Input:Data: 输入数据 Input Data
**
** Output: 转换后的数据 Output Data
**
** Created by: chenmingji
** Created Date: 2005-2-18
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 K9fxx08EmptyFunction(uint8 Data)
{
return Data;
}
/*********************************************************************************************************
** Function name: K9fxx08ReadStatus
** Descriptions: 读芯片状态 read chip state
** Input:Index: 芯片信息结构体 chip information struct
**
** Output: 状态 state
**
** Created by: chenmingji
** Created Date: 2005-2-18
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 K9fxx08ReadStatus(const K9fXX08Hardware *Index)
{
uint8 Rt;
Rt = 0xff;
if (Index != NULL)
{
NF_nFCE_L();
rNFCMD = Index->DataToK9fxx08(K9FXX_READ_STATUS);
Rt = Index->DataToMCU(rNFDATA);
NF_nFCE_H();
}
return Rt;
}
/*********************************************************************************************************
** Function name: K9fxx08OK
** Descriptions: 判断芯片操作是否完成 chip Ease or Program OK?
** Input:Index: 芯片信息结构体 chip information struct
**
** Output: TRUE: 完成 OK
** FALSE: 未完成 Not OK
**
** Created by: chenmingji
** Created Date: 2005-2-18
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
static uint8 K9fxx08OK(const K9fXX08Hardware *Index)
{
uint8 temp;
NF_WAITRB();
temp = K9fxx08ReadStatus(Index);
NF_nFCE_H();
if ((temp & K9FXX_OK) == 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
/*********************************************************************************************************
** Function name: K9fxx08SectorRead
** Descriptions: 读芯片扇区 read chip sector
** Input:Index: 芯片信息结构体 chip information struct
** Buf:数据缓冲区 data buf
** SecIndex:扇区索引 sector index
**
** Output: TRUE: 成功 OK
** FALSE: 未成功 Not OK
**
** Created by: chenmingji
** Created Date: 2005-2-18
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 K9fxx08SectorRead(const K9fXX08Hardware *Index, void *Buf, uint32 SecIndex)
{
unsigned int i;
uint8 *cp;
uint8 (* DataToK9fxx08)(uint8 Data);
cp = Buf;
if (Index != NULL)
{
DataToK9fxx08 = Index->DataToK9fxx08;
NF_nFCE_L();
rNFCMD = DataToK9fxx08(K9FXX_SET_ADDR_A);
rNFADDR = DataToK9fxx08(0);
rNFADDR = DataToK9fxx08(SecIndex & 0xff);
rNFADDR = DataToK9fxx08((SecIndex >> 8) & 0xff);
rNFADDR = DataToK9fxx08((SecIndex >> 16) & 0xff);
rNFADDR = DataToK9fxx08((SecIndex >> 24) & 0xff);
NF_WAITRB();
rNFCMD = DataToK9fxx08(K9FXX_SET_ADDR_A);
i = Index->BytsPerSec;
do
{
*cp++ = rNFDATA;
} while ( --i != 0);
NF_nFCE_H();
return TRUE;
}
return FALSE;
}
/*********************************************************************************************************
** Function name: K9fxx08SectCRead
** Descriptions: 读芯片扇区附加数据 read chip sector subjoin data
** Input:Index: 芯片信息结构体 chip information struct
** Buf:数据缓冲区 data buf
** SecIndex:扇区索引 sector index
**
** Output: TRUE: 成功 OK
** FALSE: 未成功 Not OK
**
** Created by: chenmingji
** Created Date: 2005-2-18
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 K9fxx08SectCRead(const K9fXX08Hardware *Index, void *Buf, uint32 SecIndex)
{
unsigned int i;
uint8 *cp;
uint8 (* DataToK9fxx08)(uint8 Data);
cp = Buf;
if (Index != NULL)
{
DataToK9fxx08 = Index->DataToK9fxx08;
NF_nFCE_L();
rNFCMD = DataToK9fxx08(K9FXX_SET_ADDR_C);
rNFADDR = DataToK9fxx08(0);
rNFADDR = DataToK9fxx08(SecIndex & 0xff);
rNFADDR = DataToK9fxx08((SecIndex >> 8) & 0xff);
rNFADDR = DataToK9fxx08((SecIndex >> 16) & 0xff);
rNFADDR = DataToK9fxx08((SecIndex >> 24) & 0xff);
NF_WAITRB();
rNFCMD = DataToK9fxx08(K9FXX_SET_ADDR_C);
i = Index->BytsPerSecC;
do
{
*cp++ = rNFDATA;
} while ( --i != 0);
NF_nFCE_H();
return TRUE;
}
return FALSE;
}
/*********************************************************************************************************
** Function name: K9fxx08SectorProgram
** Descriptions: 编程芯片扇区 Program chip sector
** Input:Index: 芯片信息结构体 chip information struct
** Buf:数据缓冲区 data buf
** SecIndex:扇区索引 sector index
**
** Output: TRUE: 成功 OK
** FALSE: 未成功 Not OK
**
** Created by: chenmingji
** Created Date: 2005-2-18
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 K9fxx08SectorProgram(const K9fXX08Hardware *Index, void *Buf, uint32 SecIndex)
{
unsigned int i;
uint8 *cp;
uint8 (* DataToK9fxx08)(uint8 Data);
cp = Buf;
if (Index != NULL)
{
DataToK9fxx08 = Index->DataToK9fxx08;
NF_nFCE_L();
rNFCMD = DataToK9fxx08(K9FXX_SET_ADDR_A);
rNFCMD = DataToK9fxx08(K9FXX_BLOCK_PROGRAM_1);
rNFADDR = DataToK9fxx08(0);
rNFADDR = DataToK9fxx08(SecIndex & 0xff);
rNFADDR = DataToK9fxx08((SecIndex >> 8) & 0xff);
rNFADDR = DataToK9fxx08((SecIndex >> 16) & 0xff);
rNFADDR = DataToK9fxx08((SecIndex >> 24) & 0xff);
i = Index->BytsPerSec;
do
{
rNFDATA = *cp++;
} while ( --i != 0);
rNFCMD = DataToK9fxx08(K9FXX_BLOCK_PROGRAM_2);
//NF_nFCE_H();
return K9fxx08OK(Index);
}
return FALSE;
}
/*********************************************************************************************************
** Function name: K9fxx08SectorCProgram
** Descriptions: 编程芯片扇区附加数据 Program chip sector subjoin data
** Input:Index: 芯片信息结构体 chip information struct
** Buf:数据缓冲区 data buf
** SecIndex:扇区索引 sector index
**
** Output: TRUE: 成功 OK
** FALSE: 未成功 Not OK
**
** Created by: chenmingji
** Created Date: 2005-2-18
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 K9fxx08SectorCProgram(const K9fXX08Hardware *Index, void *Buf, uint32 SecIndex)
{
unsigned int i;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -