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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sst39vf640x_driver.c

?? 單片機驅動SST公司16位Nor flash器件SST640X的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/***************************************************************************************************Software DriverSST39VF6401/SST39VF640264 Mbit Multi-Purpose Flash (MPF+)June 2003 ABOUT THE SOFTWAREThis application note provides a software driver example for 39VF6401/39VF640264 Mbit Multi-Purpose Flash (MPF+) that can be used in any microprocessor basedsystem.The SST39VF6401 supports bottom boot block protection, and the SST39VF6402 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 SST39VF6401/SST39VF6402Companion product datasheet for 39VF6401/39VF6402 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 listedin this order:Name                    Function------------------------------------------------------------------Check_SST_39VF640X      Check manufacturer and device IDCFI_Query               CFI Query Entry/Exit command sequenceSecID_Query		SecID Query Entry/Exit command sequenceErase_One_Sector        Erase a sector of 2048 wordsErase_One_Block         Erase a block of 32K wordsErase_Entire_Chip       Erase the contents of the entire chipProgram_One_Word        Alter data in one wordProgram_One_Sector      Alter data in 2048-word sectorProgram_One_Block       Alter data in 32K-word blockSecID_Lock_Status	Check the Lock Status of Security ID segmentUser_SecID_Word_Program Write data into User Security ID SegmentUser_SecID_Lock_Out 	Lock out the User Security ID SegmentErase_Suspend		Suspend Sector/Block Erase operationErase_Resume		Resume Sector/Block Erase operationCheck_Toggle_Ready      End of internal program or erase detection using                        Toggle bitCheck_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 39VF640X 64 Mbit MPF+ Device	       *//* Jerry Deng, 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 39VF640X#define BLOCK_SIZE              32768   // Must be 32K words for 39VF640X#define SST_ID                  0x00BF  // SST Manufacturer's ID code#define SST_39VF6401            0x236B  // SST39VF6401 device code#define SST_39VF6402            0x236A  // SST39VF6402 device codetypedef unsigned char           BYTE;     // BYTE is 8-bit in lengthtypedef unsigned int            WORD;     // WORD is 16-bit in lengthtypedef unsigned long int       Uint32;   // Uint32 is 32-bit in lengthUint32 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_39VF640X(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_39VF640X                                      *//*                                                                      *//* This procedure decides whether a physical hardware device has a      *//* SST39VF640X 64 Mbit MPF+ Device installed or not.         		*//*                                                                      *//* Input:                                                               *//*          None                                                        *//*                                                                      *//* Output:                                                              *//*          return TRUE:  indicates a SST39VF640X                       *//*          return FALSE: indicates not a SST39VF640X                   *//************************************************************************/int Check_SST_39VF640X(void){    WORD SST_id1;    WORD SST_id2;    int  ReturnStatus;    //  Issue the Software Product ID code to 39VF640X    *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 39VF640X    // Read the product ID from 39VF640X    SST_id1  = *sysAddress(0x0000);   // get first ID byte    SST_id2  = *sysAddress(0x0001);   // get second ID byte    // ------------------------------------------------------------    // Determine whether there is a SST 39VF6401 installed or not    // use the following code:    if ((SST_id1 == SST_ID) && (SST_id2 == SST_39VF6401))            ReturnStatus = TRUE;    else            ReturnStatus = FALSE;    // ------------------------------------------------------------    // Or determine whether there is a SST 39VF6402 installed or not    // use the following code:         if ((SST_id1 == SST_ID) && (SST_id2 == SST_39VF6402))            ReturnStatus = TRUE;    else            ReturnStatus = FALSE;    // ------------------------------------------------------------    // Issue the Software Product ID Exit code, thus returning the    // 39VF640X 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 39VF640X                                        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 39VF640X    *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 39VF640X        // 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){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人动漫一区二区三区| 亚洲日本韩国一区| 热久久免费视频| 日韩视频免费观看高清完整版在线观看| 亚洲一区二区在线视频| 欧美日韩小视频| 捆绑紧缚一区二区三区视频| www久久精品| 国产风韵犹存在线视精品| 中日韩av电影| 91黄色免费版| 久久精品国产77777蜜臀| 久久久亚洲精品一区二区三区| 国产精品亚洲综合一区在线观看| 国产日本欧美一区二区| 色婷婷精品大视频在线蜜桃视频| 亚洲高清中文字幕| 日韩欧美久久久| 白白色 亚洲乱淫| 婷婷开心激情综合| 久久久国产午夜精品| 一本在线高清不卡dvd| 午夜欧美在线一二页| 国产亚洲综合性久久久影院| 日本精品一区二区三区四区的功能| 亚洲mv大片欧洲mv大片精品| 久久综合狠狠综合久久综合88| av一区二区久久| 日韩va欧美va亚洲va久久| 国产精品美女久久久久高潮| 欧美日韩精品一区二区三区蜜桃 | 久久久精品tv| 色婷婷综合久色| 老司机午夜精品99久久| 亚洲欧洲精品成人久久奇米网| 91麻豆精品国产91久久久资源速度| 国产mv日韩mv欧美| 日日夜夜精品免费视频| 国产精品毛片a∨一区二区三区 | 91蜜桃传媒精品久久久一区二区| 天堂影院一区二区| 中文字幕在线免费不卡| 欧美成人福利视频| 欧美视频一区二区三区在线观看| 国产在线视频精品一区| 亚洲一二三四久久| 中日韩免费视频中文字幕| 91精品国产综合久久精品性色| 99r国产精品| 国产成人综合在线| 喷水一区二区三区| 亚洲一区二区三区四区五区黄| 国产欧美精品一区aⅴ影院| 在线电影院国产精品| 色婷婷精品久久二区二区蜜臂av| 国产精品69毛片高清亚洲| 青草av.久久免费一区| 亚洲午夜久久久久久久久久久| 国产精品久久久久久户外露出 | 中文字幕av一区二区三区| 日韩美女视频在线| 3atv一区二区三区| 精品视频1区2区3区| 一本到不卡免费一区二区| 岛国精品在线观看| 国产一区二区福利| 激情图区综合网| 精品在线一区二区| 免费看欧美女人艹b| 日韩福利视频网| 日日夜夜精品视频天天综合网| 亚洲成人第一页| 亚洲国产美女搞黄色| 一区二区三区不卡视频| 成人免费小视频| 亚洲男人的天堂在线观看| 亚洲欧美激情小说另类| 亚洲免费观看高清完整版在线| 最新热久久免费视频| 国产精品美女久久久久久2018| 国产精品美女一区二区在线观看| 日本一区二区三区视频视频| 国产日韩欧美a| 国产农村妇女毛片精品久久麻豆 | 免费看欧美美女黄的网站| 男女视频一区二区| 国产一区视频在线看| 国产在线一区观看| 国产成人av网站| 成人av免费在线观看| 91香蕉视频mp4| 91成人国产精品| 91麻豆精品91久久久久同性| 精品久久国产字幕高潮| 久久嫩草精品久久久久| 中文字幕乱码日本亚洲一区二区| 国产精品美女久久久久av爽李琼| 亚洲精品视频免费看| 亚洲mv在线观看| 韩国女主播成人在线观看| 国产成人精品一区二区三区四区 | 日韩在线a电影| 韩国v欧美v日本v亚洲v| 成人视屏免费看| 在线视频观看一区| 日韩午夜三级在线| 中文字幕精品在线不卡| 亚洲在线免费播放| 久久国产精品第一页| 99久久国产综合色|国产精品| 欧美偷拍一区二区| 欧美精品一区二区三| 中文字幕综合网| 久久精品理论片| 99精品1区2区| 日韩精品一区二区三区中文不卡| 中文字幕精品在线不卡| 亚洲一级不卡视频| 国产成人精品亚洲午夜麻豆| 欧美色欧美亚洲另类二区| 久久综合九色综合欧美就去吻| 中文字幕中文在线不卡住| 午夜伊人狠狠久久| 高清在线不卡av| 欧美军同video69gay| 欧美国产激情一区二区三区蜜月| 亚洲国产成人porn| 国产成人免费9x9x人网站视频| 欧美日韩一区二区在线观看| 久久精品视频网| 午夜亚洲福利老司机| 成人免费视频播放| 日韩三级电影网址| 一区二区三区不卡视频在线观看| 国产精品一二三四五| 欧美丰满少妇xxxxx高潮对白| 国产精品午夜免费| 久久99精品国产| 欧美日韩精品一区二区三区四区 | 久久综合色之久久综合| 亚洲精品久久7777| 福利一区二区在线| 欧美大片国产精品| 亚洲高清在线视频| 97se亚洲国产综合自在线| 久久综合av免费| 蜜臂av日日欢夜夜爽一区| 欧美视频自拍偷拍| 樱花影视一区二区| 99久久精品情趣| 日本一区二区三区久久久久久久久不 | 麻豆成人av在线| 欧美日韩视频在线观看一区二区三区 | 日韩一区二区三区av| 亚洲黄网站在线观看| eeuss鲁一区二区三区| 久久九九全国免费| 激情综合色综合久久| 欧美电视剧在线看免费| 日本女优在线视频一区二区| 91精品综合久久久久久| 亚洲mv在线观看| 欧美高清www午色夜在线视频| 亚洲欧美日韩国产手机在线| 成人免费视频视频在线观看免费| 久久久电影一区二区三区| 国内精品在线播放| 精品久久99ma| 激情深爱一区二区| 久久久99精品免费观看不卡| 国产成人av电影| 国产精品免费视频观看| 成人网页在线观看| 亚洲视频香蕉人妖| 色激情天天射综合网| 亚洲尤物在线视频观看| 在线欧美日韩国产| 亚洲最大色网站| 欧美日韩国产三级| 日本麻豆一区二区三区视频| 欧美sm极限捆绑bd| 国产美女精品一区二区三区| 蜜桃传媒麻豆第一区在线观看| 欧美精品一卡二卡| 久久99国产精品久久99| 久久噜噜亚洲综合| eeuss影院一区二区三区 | 欧美日本国产视频| 美女任你摸久久 | 欧美mv日韩mv国产网站| 国产主播一区二区| 亚洲人成精品久久久久| 在线观看日产精品| 日本不卡视频在线| 中国色在线观看另类| 色综合天天综合网国产成人综合天| 亚洲自拍偷拍图区| 日韩欧美久久久| 99国产精品一区| 欧美a级一区二区|