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

📄 nf_drv.h

📁 c51snd1c硬盘播放器全部资料.源码.线路图.protel99se的pcb图
💻 H
📖 第 1 页 / 共 2 页
字号:
/*H**************************************************************************
* NAME:         nf_drv.h         
*----------------------------------------------------------------------------
* Copyright (c) 2003 Atmel.
*----------------------------------------------------------------------------
* RELEASE:      snd1c-refd-nf-4_0_3      
* REVISION:     1.5     
*----------------------------------------------------------------------------
* PURPOSE:
* This file contains the NF driver definitions
*****************************************************************************/

#ifndef _NF_DRV_H_
#define _NF_DRV_H_


/*_____ I N C L U D E S ____________________________________________________*/

#include "board.h"                /* board definition */


/*_____ M A C R O S ________________________________________________________*/

/************************** Read Command ************************************/
#define NF_READ_CMD                   0x00
#define NF_READ_CMD2                  0x30
#define NF_RANDOM_READ_CMD_C1         0x05
#define NF_RANDOM_READ_CMD_C2         0xE0
/************************** Read ID Command *********************************/
#define NF_READ_ID_CMD                0x90
#define NF_RESET_CMD                  0xff
/************************** Program / Copy Back command *********************/
#define NF_SEQUENTIAL_DATA_INPUT_CMD  0x80
#define NF_RANDOM_DATA_INPUT_CMD      0x85
#define NF_COPY_BACK_CMD              0x35
#define NF_PAGE_PROGRAM_CMD           0x10
#define NF_CACHE_PROGRAM_CMD          0x15
/************************** Erase command ***********************************/
#define NF_BLOCK_ERASE_CMD            0x60
#define NF_BLOCK_ERASE_CONFIRM_CMD    0xD0
/************************** Read Status command *****************************/
#define NF_READ_STATUS_CMD            0x70

#define NF_BUFFER_SIZE                (Byte)(133)

#define Nf_wait_busy()                { while (!NF_RD_BUSY); }

/* Nand Flash Driver */
#define NF_1X_512B            0
#define NF_2X_512B            1
#define NF_1X_2KB             2
#define NF_2X_2KB             3


/* Page address */
#define NF_PAGE_0                     0x00
#define NF_PAGE_1                     0x02
#define NF_PAGE_2                     0x04
#define NF_PAGE_3                     0x06
#define NF_SPARE_PAGE                 0x08

/* block address <-> sector address conversion */
/* 64 sectors in one block -> 6 bits shift     */
#define NF_SHIFT_SECTOR_BLOCK          6   
/* block address <-> zone address conversion   */
/* 1024 block in one zone -> 10 bits shift     */
#define NF_SHIFT_BLOCK_ZONE           10
/* sector address <-> zone address conversion   */
/* 65536 sectors in one zone -> 16 bits shift   */
#define NF_SHIFT_SECTOR_ZONE          16

/*_____ D E F I N I T I O N ________________________________________________*/

/* Structure to store the correspondance between logical and physical block */
typedef struct 
{
  Byte   zone;
  Uint16 logical_block;
  Uint16 physical_block;
} t_reassign_block;


/* Nand Flash CARD DEFINITION */
/* This value are only 128Mb and 256Mbytes Nand Flash with 2048 bytes page size */
#define NF_PAGE_PER_BLOCK (64)      /* pages_block value: pages in a block   */ 
#define NF_DATA_SIZE      (2048)    /* data_size   value: data_size in bytes */
#define NF_SPARE_SIZE     (64)      /* spare_size  value: spare_size in bytes*/
#define NF_BLOCK_PER_ZONE (1024)    /* 1024 block per size                   */

#if (NF_CAPACITY_AUTO_DETECT == TRUE)
  #define NF_ZONE_MAX             (Byte)(16)
  #define NF_5_CYCLE_ADDRESS_BIT  nf_5_cycle_address  
  #define NF_TYPE                 nf_device_type
  #define NF_ZONE_MAX_CPT         nf_zone_max
  #define NF_SECTOR_SIZE          (Uint32)(nf_mem_size)

  #define NF_SIZE_128MB           (Byte)(0)
  #define NF_SIZE_256MB           (Byte)(1)
  #define NF_SIZE_512MB           (Byte)(2)
  #define NF_SIZE_1024MB          (Byte)(3)
  #define NF_SIZE_2048MB          (Byte)(4)
  
  #define NF_SECTOR_SIZE_128MB    (Uint32)(63999)
  #define NF_SECTOR_SIZE_256MB    (Uint32)(127999)
  #define NF_SECTOR_SIZE_512MB    (Uint32)(255999)
  #define NF_SECTOR_SIZE_1024MB   (Uint32)(511999)
  #define NF_SECTOR_SIZE_2048MB   (Uint32)(1023999)

  #define NF_128_3V               0xF1
  #define NF_128_1_8V             0xA1

  #define NF_256_1_8V             0xAA
  #define NF_256_3V               0xDA

  #define NF_512_1_8V             0xAC
  #define NF_512_3V               0xDC

  #define NF_1024_1_8V            0xA3
  #define NF_1024_3V              0xD3

  #define NF_2048_1_8V            0xA5
  #define NF_2048_3V              0xD5



#else
  #ifdef NF_128
  #define NF_TYPE               (Byte)(0)
  #define NF_SIZE               (Uint16)(128)
  #define NF_ZONE_MAX           (Byte)(1)
  #define NF_SECTOR_SIZE        (Uint32)(63999)
  #define NF_5_CYCLE_ADDRESS    (0)
  #endif
  
  #ifdef NF_256
  #define NF_TYPE               (Byte)(1)
  #define NF_SIZE               (Uint16)(256)
  #define NF_ZONE_MAX           (Byte)(2)
  #define NF_SECTOR_SIZE        (Uint32)(127999)
  #define NF_5_CYCLE_ADDRESS    (1)
  #endif

  #ifdef NF_512
  #define NF_TYPE               (Byte)(2)
  #define NF_SIZE               (Uint16)(512)
  #define NF_ZONE_MAX           (Byte)(4)
  #define NF_SECTOR_SIZE        (Uint32)(255999)
  #define NF_5_CYCLE_ADDRESS    (1)
  #endif

  #ifdef NF_1027
  #define NF_TYPE               (Byte)(3)
  #define NF_SIZE               (Uint16)(1024)
  #define NF_ZONE_MAX           (Byte)(8)
  #define NF_SECTOR_SIZE        (Uint32)(511999)
  #define NF_5_CYCLE_ADDRESS    (1)
  #endif

  #ifdef NF_512
  #define NF_TYPE               (Byte)(4)

⌨️ 快捷键说明

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