⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 k9fxx08.c

📁 周立公开发板
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			k9fxx08.c
** Last modified Date:  2005-2-18
** Last Version:		1.0
** Descriptions:		k9f6408/2808/5608/1208 driver
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2005-2-18
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"

#define IN_K9FXX08
#define NULL            0 
/*********************************************************************************************************
** 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)
    {
        Index = Index;
        *(Index->CLE) = Index->DataToK9fxx08(K9FXX_READ_STATUS);
        Rt = Index->DataToMCU(*(Index->Data));
    }
    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;
    
    while (1)
    {
        K9FXX_WAIT();
        temp = K9fxx08ReadStatus(Index);
        if ((temp & K9FXX_BUSY) != 0)
        {
            break;
        }
    }
    
    temp = K9fxx08ReadStatus(Index);
    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;
    volatile uint8 *CLE;
    volatile uint8 *ALE;
    volatile uint8 *Data;
    uint8 *cp;
    uint8 (* DataToK9fxx08)(uint8 Data);
    
    cp = Buf;
    if (Index != NULL)
    {
        CLE = Index->CLE;
        ALE = Index->ALE;
        Data = Index->Data;
        DataToK9fxx08 = Index->DataToK9fxx08;
        
        *CLE = DataToK9fxx08(K9FXX_SET_ADDR_A);
        *ALE = DataToK9fxx08(0);
        *ALE = DataToK9fxx08(SecIndex & 0xff);
        *ALE = DataToK9fxx08((SecIndex >> 8) & 0xff);
        *ALE = DataToK9fxx08((SecIndex >> 16) & 0xff);
        *ALE = DataToK9fxx08((SecIndex >> 24) & 0xff);
    
        while (1)
        {
            if ((K9fxx08ReadStatus(Index) & K9FXX_BUSY) != 0)
            {
                break;
            }
        }
    
        *CLE = DataToK9fxx08(K9FXX_SET_ADDR_A);
        
        i = Index->BytsPerSec;
        do
        {
            *cp++ = *Data;
        } while ( --i != 0);
        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;
    volatile uint8 *CLE;
    volatile uint8 *ALE;
    volatile uint8 *Data;
    uint8 *cp;
    uint8 (* DataToK9fxx08)(uint8 Data);
    
    cp = Buf;
    if (Index != NULL)
    {

        CLE = Index->CLE;
        ALE = Index->ALE;
        Data = Index->Data;
        DataToK9fxx08 = Index->DataToK9fxx08;
        
        *CLE = DataToK9fxx08(K9FXX_SET_ADDR_C);
        *ALE = DataToK9fxx08(0);
        *ALE = DataToK9fxx08(SecIndex & 0xff);
        *ALE = DataToK9fxx08((SecIndex >> 8) & 0xff);
        *ALE = DataToK9fxx08((SecIndex >> 16) & 0xff);
        *ALE = DataToK9fxx08((SecIndex >> 24) & 0xff);
    
        while (1)
        {
            if ((K9fxx08ReadStatus(Index) & K9FXX_BUSY) != 0)
            {
                break;
            }
        }
    
        *CLE = DataToK9fxx08(K9FXX_SET_ADDR_C);
    
        i = Index->BytsPerSecC;
        do
        {
            *cp++ = *Data;
        } while ( --i != 0);
        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;
    volatile uint8 *CLE;
    volatile uint8 *ALE;
    volatile uint8 *Data;
    uint8 *cp;
    uint8 (* DataToK9fxx08)(uint8 Data);
    
    cp = Buf;
    if (Index != NULL)
    {
        CLE = Index->CLE;
        ALE = Index->ALE;
        Data = Index->Data;
        DataToK9fxx08 = Index->DataToK9fxx08;
   
        *CLE = DataToK9fxx08(K9FXX_SET_ADDR_A);
        *CLE = DataToK9fxx08(K9FXX_BLOCK_PROGRAM_1);
        *ALE = DataToK9fxx08(0);
        *ALE = DataToK9fxx08(SecIndex & 0xff);
        *ALE = DataToK9fxx08((SecIndex >> 8) & 0xff);
        *ALE = DataToK9fxx08((SecIndex >> 16) & 0xff);
        *ALE = DataToK9fxx08((SecIndex >> 24) & 0xff);
        
        i = Index->BytsPerSec;
        do
        {
            *Data = *cp++;
        } while ( --i != 0);

        *CLE = DataToK9fxx08(K9FXX_BLOCK_PROGRAM_2);
        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;
    volatile uint8 *CLE;
    volatile uint8 *ALE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -