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

📄 aplif.c

📁 Falsh 读写的demo
💻 C
字号:
/*
*********************************************************************************************************
* File     : Aplif.C
* Contents :
*
* $Date    : 09/18/06    Kimi    v0.1
* $Date    : 10/18/06    Kimi    v0.2
* $Date    : 11/02/06    Kimi    v1.0
*
* Copyright (c) 2006 Fameg, Inc. All rights reserved
*********************************************************************************************************
*/

#include "aplif.h"

//----------------------------------------------------------------------------
// Description:
//
//----------------------------------------------------------------------------
void  Nand_Command (INT8U command)
{
    while (!AplifIdle());                              // Wait until APLIF ready

    APLIFWAVESEL    = 0x1B;                            // Single Write Select Waveform 0

    APLIFS_DATX_L   = command;                         // Trigger Single Byte Write

    while (!AplifIdle());                              // Wait until APLIF ready
}

//----------------------------------------------------------------------------
// Description:
//
//----------------------------------------------------------------------------
void  NanD_Address (INT8U address)
{
    while (!AplifIdle());                              // Wait until APLIF ready

    APLIFWAVESEL    = 0x5B;                            // Single Write Select Waveform 1

    APLIFS_DATX_L   = address;                         // Trigger Single Byte Write

    while (!AplifIdle());                              // Wait until APLIF ready
}

//----------------------------------------------------------------------------
// Description:
//
//----------------------------------------------------------------------------
BYTE  NanD_Read (void)
{
    BYTE    retval;

    while (!AplifIdle());                              // Wait until APLIF ready

    APLIFWAVESEL    = 0x2B;                            // Single Read Select Waveform 2

    retval          = APLIFS_DATX_L;                   // Trigger Single Byte Read

    while (!AplifIdle());                              // Wait until APLIF ready

    retval          = APLIFS_DAT_L;                    // Get Real Data

    return retval;
}

//----------------------------------------------------------------------------
// Description:
//
//----------------------------------------------------------------------------
#pragma OPTIMIZE(0)
void  Nand_ReadSector (void)
{
    INT8U   temp;

    while (!AplifIdle());                              // Wait until APLIF ready

    APLIFWAVESEL    = 0x2A;                            // FIFO Read Select Waveform 2

    APLIFTCH        = 0x02;                            // TC = 512
    APLIFTCL        = 0x00;

    temp            = EPBAPLIFTRIG;                    // Trigger FIFO Read

    while (!AplifIdle());                              // Wait until APLIF ready
}

//----------------------------------------------------------------------------
// Description:
//
//----------------------------------------------------------------------------
#pragma OPTIMIZE(0)
void  Nand_WriteSector (void)
{
    EPACNT0L        = 0x00;                            // EPA CNT = 512, For USB 1.1
    EPACNTH         = 0x0A;
    EPAFIFOCS       = EPAFIFOCS | bmFIFO0_FULL_WE | bmFIFO0_FULL;
    SFI_SKIP        = 0x01;                            // Pass FIFO from USB to SFI

    while (!AplifIdle());                              // Wait until APLIF ready

    APLIFWAVESEL    = 0x2C;                            // FIFO Write Select Waveform 3

    APLIFTCH        = 0x02;                            // TC = 512
    APLIFTCL        = 0x00;

    EPAAPLIFTRIG    = 0xAA;                            // Trigger FIFO Write

    while (!AplifIdle());                              // Wait until APLIF ready
}

//----------------------------------------------------------------------------
// Description:
//
//----------------------------------------------------------------------------
void  Nand_ReadSpare (void)
{
    INT8U   temp;

    EPCCTRL         = 0x3E;                            // EPC Bulk In

    while (!AplifIdle());                              // Wait until APLIF ready

    APLIFWAVESEL    = 0x2A;                            // FIFO Read Select Waveform 2

    APLIFTCH        = 0x00;                            // TC = 64
    APLIFTCL        = HEADER_SIZE;

    temp            = EPCAPLIFTRIG;                    // Trigger FIFO Read

    while (!AplifIdle());                              // Wait until APLIF ready

    memcpy(SpareArea, (INT8U xdata *)DMA_FIFOC0, HEADER_SIZE);
    SFI_SKIP        = 0x84;
}

//----------------------------------------------------------------------------
// Description:
//
//----------------------------------------------------------------------------
void  Nand_WriteSpare (void)
{
    EPCCTRL         = 0x3A;                            // EPC Bulk Out

    EPCCNT0L        = HEADER_SIZE;
    EPCCNTH         = 0x08;
    memcpy((INT8U xdata *)DMA_FIFOC0, SpareArea, HEADER_SIZE);
    EPCFIFOCS       = EPCFIFOCS | bmFIFO0_FULL_WE | bmFIFO0_FULL;
    SFI_SKIP        = 0x04;

    while (!AplifIdle());                              // Wait until APLIF ready

    APLIFWAVESEL    = 0x2C;                            // FIFO Write Select Waveform 3

    APLIFTCH        = 0x00;                            // TC = 64
    APLIFTCL        = HEADER_SIZE;

    EPCAPLIFTRIG    = 0xAA;                            // Trigger FIFO Write

    while (!AplifIdle());                              // Wait until APLIF ready
}

⌨️ 快捷键说明

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