亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sst39vf160x.txt

?? SST 系列Nor flash 的讀寫源碼
?? TXT
?? 第 1 頁 / 共 3 頁
字號:
Software Driver
SST39VF1601/SST39VF1602
16 Mbit Multi-Purpose Flash (MPF+)

June 2003

ABOUT THE SOFTWARE

This application note provides a software driver example for 39VF1601/39VF1602
16 Mbit Multi-Purpose Flash (MPF+) that can be used in any microprocessor based
system.

The SST39VF1601 supports bottom boot block protection, and the SST39VF1602 
supports top boot block protection. The boot block memory area is protected when 
WP# is low and unprotected when WP# is high.

Software driver example routines provided in this document utilize high-level
"C" programming language for broad platform support. In many cases, software 
driver routines can be inserted "as is" into the main body of code being 
developed by the system software developers. Extensive comments are included 
in each routine to describe the function of each routine. The software driver 
routines in "C" can be used with many microprocessors and microcontrollers. 

ABOUT THE SST39VF1601/SST39VF1602

Companion product datasheet for 39VF1601/39VF1602 should be reviewed in 
conjunction with this application note for a complete understanding of the device.

The C code in this document contains the following routines, which are listed
in this order:

Name                    Function
------------------------------------------------------------------
Check_SST_39VF160X      Check manufacturer and device ID
CFI_Query               CFI Query Entry/Exit command sequence
SecID_Query		SecID Query Entry/Exit command sequence
Erase_One_Sector        Erase a sector of 2048 words
Erase_One_Block         Erase a block of 32K words
Erase_Entire_Chip       Erase the contents of the entire chip
Program_One_Word        Alter data in one word
Program_One_Sector      Alter data in 2048-word sector
Program_One_Block       Alter data in 32K-word block
SecID_Lock_Status	Check the Lock Status of Security ID segment
User_SecID_Word_Program Write data into User Security ID Segment
User_SecID_Lock_Out 	Lock out the User Security ID Segment
Erase_Suspend		Suspend Sector/Block Erase operation
Erase_Resume		Resume Sector/Block Erase operation
Check_Toggle_Ready      End of internal program or erase detection using
                        Toggle bit
Check_Data_Polling      End of internal program or erase detection using
                        Data# polling

"C" LANGUAGE DRIVERS
 
/***********************************************************************/
/* Copyright Silicon Storage Technology, Inc. (SST), 1994-2003         */
/* Example "C" language Driver of 39VF160X 16 Mbit MPF+ Device	       */
/* Nelson Wang, Silicon Storage Technology, Inc.                       */
/*                                                                     */
/* Revision 1.0, June 19, 2003                                         */
/*                                                                     */
/* This file requires these external "timing"  routines:               */
/*                                                                     */
/*      1.)  Delay_10_Micro_Seconds                                    */
/*      2.)  Delay_20_Micro_Seconds                                    */
/*      3.)  Delay_150_Nano_Seconds                                    */
/*      4.)  Delay_25_Milli_Seconds                                    */
/*      5.)  Delay_50_Milli_Seconds                                    */
/***********************************************************************/

#define FALSE                   0
#define TRUE                    1

#define SECTOR_SIZE             2048    // Must be 2048 words for 39VF160X
#define BLOCK_SIZE              32768   // Must be 32K words for 39VF160X

#define SST_ID                  0x00BF  // SST Manufacturer's ID code
#define SST_39VF1601            0x234B  // SST39VF1601 device code
#define SST_39VF1602            0x234A  // SST39VF1602 device code

typedef unsigned char           BYTE;     // BYTE is 8-bit in length
typedef unsigned int            WORD;     // WORD is 16-bit in length
typedef unsigned long int       Uint32;   // Uint32 is 32-bit in length

Uint32 system_base = 0xC0000000;  // 4GByte System Memory Address.
	// This sample code uses 0xC0000000 as the system_base address.
   	// The user should modify this address accordingly.

#define sysAddress(offset) ((volatile WORD *)(system_base + offset))

#define MAX_TIMEOUT	0x07FFFFFF   // A ceiling constant used by Check_Toggle_
	// Ready() and Check_Data_Polling().
      	// The user should modify this constant accordingly.

// --------------------------------------------------------------------
//                       EXTERNAL ROUTINES
// --------------------------------------------------------------------
extern void     Delay_10_Micro_Seconds();
extern void     Delay_20_Micro_Seconds();
extern void     Delay_150_Nano_Seconds();
extern void     Delay_25_Milli_Seconds();
extern void     Delay_50_Milli_Seconds();
// --------------------------------------------------------------------

int Check_SST_39VF160X(void);
void CFI_Query(WORD*);
void SecID_Query(WORD*, WORD*);
int Erase_One_Sector(Uint32);
int Erase_One_Block (Uint32);
void Erase_Entire_Chip(void);
int Program_One_Word (WORD*, Uint32);
int Program_One_Sector (WORD*, Uint32);
int Program_One_Block (WORD *Src, Uint32 Dst);
int SecID_Lock_Status(void);
int User_SecID_Word_Program (WORD*, WORD*, int);
void User_SecID_Lock_Out (void);
void Erase_Suspend (void);
void Erase_Resume (void);
int Check_Toggle_Ready (Uint32);
int Check_Data_Polling (Uint32, WORD);


/************************************************************************/
/* PROCEDURE:   Check_SST_39VF160X                                      */
/*                                                                      */
/* This procedure decides whether a physical hardware device has a      */
/* SST39VF160X 16 Mbit MPF+ Device installed or not.         		*/
/*                                                                      */
/* Input:                                                               */
/*          None                                                        */
/*                                                                      */
/* Output:                                                              */
/*          return TRUE:  indicates a SST39VF160X                       */
/*          return FALSE: indicates not a SST39VF160X                   */
/************************************************************************/
int Check_SST_39VF160X(void)
{
    WORD SST_id1;
    WORD SST_id2;
    int  ReturnStatus;

    //  Issue the Software Product ID code to 39VF160X
    *sysAddress(0x5555) = 0x00AA;  // write data 0x00AA to device addr 0x5555
    *sysAddress(0x2AAA) = 0x0055;  // write data 0x0055 to device addr 0x2AAA
    *sysAddress(0x5555) = 0x0090;  // write data 0x0090 to device addr 0x5555
    Delay_150_Nano_Seconds();   // Tida Max 150ns for 39VF160X

    // Read the product ID from 39VF160X
    SST_id1  = *sysAddress(0x0000);   // get first ID byte
    SST_id2  = *sysAddress(0x0001);   // get second ID byte

    // ------------------------------------------------------------
    // Determine whether there is a SST 39VF1601 installed or not
    // use the following code:

    if ((SST_id1 == SST_ID) && (SST_id2 == SST_39VF1601))
            ReturnStatus = TRUE;
    else
            ReturnStatus = FALSE;
    // ------------------------------------------------------------
    // Or determine whether there is a SST 39VF1602 installed or not
    // use the following code:
     
    if ((SST_id1 == SST_ID) && (SST_id2 == SST_39VF1602))
            ReturnStatus = TRUE;
    else
            ReturnStatus = FALSE;
    // ------------------------------------------------------------

    // Issue the Software Product ID Exit code, thus returning the
    // 39VF160X to the normal operation.
    *sysAddress(0x5555) = 0x00AA;  // write data 0x00AA to device addr 0x5555
    *sysAddress(0x2AAA) = 0x0055;  // write data 0x0055 to device addr 0x2AAA
    *sysAddress(0x5555) = 0x00F0;  // write data 0x00F0 to device addr 0x5555
    Delay_150_Nano_Seconds();   // Tida Max 150ns for 39VF160X
                                    
    return (ReturnStatus);
}


/************************************************************************/
/* PROCEDURE:   CFI_Query                                               */
/*                                                                      */
/* This procedure should be used to query for CFI information           */
/*                                                                      */
/* Input:                                                               */
/*          Src	Source address to store CFI_Query data string		*/
/*                                                                      */
/* Output:                                                              */
/*          None                                                        */
/************************************************************************/
void CFI_Query(WORD *Src)
{ 
    //  Issue the CFI Query entry code to 39VF160X
    *sysAddress(0x5555) = 0x00AA;  // write data 0x00AA to device addr 0x5555
    *sysAddress(0x2AAA) = 0x0055;  // write data 0x0055 to device addr 0x2AAA
    *sysAddress(0x5555) = 0x0098;  // write data 0x0098 to device addr 0x5555
    Delay_150_Nano_Seconds();     // insert delay time = Tida

    // ----------------------------------------------------------
    //  Perform all CFI operations here:
    //  CFI_Query_address is from 0010H--0034H

    for (WORD index = 0x0010; index <= 0x0034; index++)
    {
     	 *Src = *sysAddress(index);
         ++Src;
	// CFI query data is stored in user-defined memory space.
    }
    // ----------------------------------------------------------

        // Issue the CFI Exit code thus returning the 39VF160X
        // to the read operating mode

    *sysAddress(0x5555) = 0x00AA;  // write data 0x00AA to device addr 0x5555
    *sysAddress(0x2AAA) = 0x0055;  // write data 0x0055 to device addr 0x2AAA
    *sysAddress(0x5555) = 0x00F0;  // write data 0x00F0 to device addr 0x5555
    Delay_150_Nano_Seconds();     // insert delay time = Tida
}


/************************************************************************/
/* PROCEDURE:   SecID_Query                                             */
/*                                                                      */
/* This procedure should be used to query for Security ID information.  */
/*                                                                      */
/* Input:                                                               */
/*          SST_SecID	Source address to store SST SecID string	*/
/*          User_SecID	Source address to store User SecID string	*/
/*                                                                      */
/* Output:                                                              */
/*          None                                                        */
/************************************************************************/
void SecID_Query(WORD *SST_SecID, WORD *User_SecID)
{
         //  Issue the SecID Entry code to 39VF160X
    *sysAddress(0x5555) = 0x00AA;  // write data 0x00AA to device addr 0x5555

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产嫩草影院久久久久| 欧美日韩国产一区| 中文字幕不卡在线播放| 国产超碰在线一区| 国产精品久久影院| 日本韩国欧美在线| 日韩精品一级二级 | 老司机精品视频一区二区三区| 欧美少妇性性性| 丝袜美腿亚洲色图| 欧美精品一区二区三区蜜臀| 成人综合婷婷国产精品久久蜜臀| 国产精品久久看| 91在线精品一区二区| 亚洲国产精品一区二区久久| 欧美一区二区三区系列电影| 蜜臀av一区二区在线观看| 久久久久久毛片| 91麻豆精品视频| 日本最新不卡在线| 国产区在线观看成人精品| 色婷婷激情综合| 九一九一国产精品| 中文字幕一区二区三区精华液| 欧美三级蜜桃2在线观看| 精品亚洲免费视频| 亚洲男同1069视频| 精品电影一区二区| 在线亚洲高清视频| 国产美女久久久久| 亚洲成人黄色影院| 国产精品电影一区二区| 91精品国产麻豆国产自产在线| 风流少妇一区二区| 免费成人在线网站| 亚洲视频一区在线| 久久亚洲欧美国产精品乐播| 欧美午夜寂寞影院| 成人中文字幕合集| 久久精品免费观看| 亚洲一区二区视频在线观看| 国产欧美日韩精品在线| 337p亚洲精品色噜噜| 91在线国产福利| 国产激情91久久精品导航| 亚洲gay无套男同| 中文字幕一区在线观看| 精品理论电影在线观看| 欧美年轻男男videosbes| 一本大道av一区二区在线播放| 国产综合色在线视频区| 天天影视网天天综合色在线播放| 国产精品国产自产拍高清av| 精品国产乱码久久久久久牛牛| 欧美体内she精高潮| 99视频有精品| 国产盗摄精品一区二区三区在线| 日韩不卡免费视频| 午夜欧美在线一二页| 亚洲精品成a人| 国产精品免费免费| 国产欧美综合在线观看第十页| 日韩欧美不卡在线观看视频| 欧美日本视频在线| 欧美亚洲动漫精品| 日本道色综合久久| 一本色道久久综合狠狠躁的推荐 | 免费不卡在线观看| 国产一区不卡在线| 美腿丝袜亚洲综合| 免费在线欧美视频| 日本网站在线观看一区二区三区 | 极品少妇xxxx偷拍精品少妇| 免费成人性网站| 日韩专区中文字幕一区二区| 香蕉乱码成人久久天堂爱免费| 亚洲乱码日产精品bd| 最新成人av在线| 国产精品国产三级国产a| 成人免费在线观看入口| 亚洲欧洲av在线| 亚洲欧美日韩综合aⅴ视频| 亚洲免费成人av| 亚洲一二三四在线观看| 亚洲成人www| 久久电影网站中文字幕| 国产精品99久久久久久似苏梦涵 | 91免费观看国产| 91激情五月电影| 欧美色综合天天久久综合精品| 欧美无乱码久久久免费午夜一区| 在线欧美小视频| 在线综合亚洲欧美在线视频| 精品美女被调教视频大全网站| 2024国产精品| 亚洲欧美综合色| 亚洲成人免费在线观看| 日本少妇一区二区| 国产一区二区毛片| 成人精品国产一区二区4080| 91免费国产在线观看| 欧美精品在线观看播放| 日韩精品一区二区三区在线 | 亚洲精选一二三| 视频在线观看一区| 国产成人综合亚洲网站| 色偷偷久久一区二区三区| 欧美日韩成人在线一区| 久久久天堂av| 一卡二卡三卡日韩欧美| 免费成人av在线| 成人av集中营| 91麻豆精品国产91久久久久久久久 | 精品久久久久香蕉网| 中文幕一区二区三区久久蜜桃| 亚洲精品v日韩精品| 精品无人码麻豆乱码1区2区 | 欧洲av在线精品| 久久久久高清精品| 亚洲综合一区二区三区| 国产在线不卡视频| 欧美日韩一区国产| 久久夜色精品国产噜噜av| 亚洲一区影音先锋| 国产麻豆精品在线观看| 欧洲精品在线观看| 国产日韩精品一区二区浪潮av| 亚洲bt欧美bt精品| voyeur盗摄精品| 中文字幕人成不卡一区| 日韩高清国产一区在线| 不卡的av在线播放| 日韩一区二区视频在线观看| 亚洲视频香蕉人妖| 国产精品综合二区| 91精品综合久久久久久| 亚洲女同女同女同女同女同69| 卡一卡二国产精品| 欧美在线观看一二区| 中文子幕无线码一区tr| 另类中文字幕网| 91精品在线免费观看| 亚洲一区二区三区四区在线| 成人综合婷婷国产精品久久免费| 日韩欧美在线一区二区三区| 亚洲综合色丁香婷婷六月图片| 国产精品一区二区久久不卡 | 亚洲丶国产丶欧美一区二区三区| 成人一级视频在线观看| 精品捆绑美女sm三区| 日韩高清不卡一区二区| 欧美日韩一区在线观看| 亚洲一区二区偷拍精品| 色婷婷av一区| 最近中文字幕一区二区三区| 国产成人精品网址| 久久精品人人爽人人爽| 六月丁香婷婷色狠狠久久| 欧美一级二级三级蜜桃| 亚洲第一激情av| 色婷婷久久久综合中文字幕| 亚洲婷婷国产精品电影人久久| 风流少妇一区二区| 中文字幕第一页久久| 国产成人高清在线| 欧美高清在线一区二区| 成人av网站免费| 亚洲欧美一区二区视频| 99精品国产视频| 欧美激情在线看| 99精品视频在线观看免费| 中文字幕一区视频| 色综合夜色一区| 亚洲免费观看高清完整版在线| 91网站在线播放| 一区二区在线免费观看| 欧美体内she精高潮| 丝袜亚洲另类欧美| 精品国产污污免费网站入口| 国产综合久久久久久鬼色| 91精品国产91久久久久久一区二区| 亚洲成av人在线观看| 欧美一区二视频| 国产一区二区三区观看| 中文字幕在线视频一区| 色哟哟精品一区| 日韩成人免费看| 国产日韩精品一区二区浪潮av| 99久久er热在这里只有精品15| 亚洲一区成人在线| 日韩欧美一级二级三级久久久| 国产乱一区二区| 一区二区三区四区视频精品免费 | 91在线视频网址| 午夜国产精品影院在线观看| 日韩欧美中文一区二区| 成人精品免费视频| 亚洲精品乱码久久久久久黑人| 欧美挠脚心视频网站| 国产老肥熟一区二区三区|