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

📄 c2635.h

📁 Flash Memory 依據標準CFI CMD做Erase/Program過程的參考碼
💻 H
📖 第 1 页 / 共 4 页
字号:
      0x600000,  /* Start offset of block 48  */
      0x620000,  /* Start offset of block 49  */
      0x640000,  /* Start offset of block 50  */
      0x660000,  /* Start offset of block 51  */
      0x680000,  /* Start offset of block 52  */
      0x6A0000,  /* Start offset of block 53  */
      0x6C0000,  /* Start offset of block 54  */
      0x6E0000,  /* Start offset of block 55  */
      0x700000,  /* Start offset of block 56  */
      0x720000,  /* Start offset of block 57  */
      0x740000,  /* Start offset of block 58  */
      0x760000,  /* Start offset of block 59  */
      0x780000,  /* Start offset of block 60  */
      0x7A0000,  /* Start offset of block 61  */
      0x7C0000,  /* Start offset of block 62  */
      0x7E0000,  /* Start offset of block 63  */
      0x800000,  /* Start offset of block 64  */
      0x820000,  /* Start offset of block 65  */
      0x840000,  /* Start offset of block 66  */
      0x860000,  /* Start offset of block 67  */
      0x880000,  /* Start offset of block 68  */
      0x8A0000,  /* Start offset of block 69  */
      0x8C0000,  /* Start offset of block 70  */
      0x8E0000,  /* Start offset of block 71  */
      0x900000,  /* Start offset of block 72  */
      0x920000,  /* Start offset of block 73  */
      0x940000,  /* Start offset of block 74  */
      0x960000,  /* Start offset of block 75  */
      0x980000,  /* Start offset of block 76  */
      0x9A0000,  /* Start offset of block 77  */
      0x9C0000,  /* Start offset of block 78  */
      0x9E0000,  /* Start offset of block 79  */
      0xA00000,  /* Start offset of block 80  */
      0xA20000,  /* Start offset of block 81  */
      0xA40000,  /* Start offset of block 82  */
      0xA60000,  /* Start offset of block 83  */
      0xA80000,  /* Start offset of block 84  */
      0xAA0000,  /* Start offset of block 85  */
      0xAC0000,  /* Start offset of block 86  */
      0xAE0000,  /* Start offset of block 87  */
      0xB00000,  /* Start offset of block 88  */
      0xB20000,  /* Start offset of block 89  */
      0xB40000,  /* Start offset of block 90  */
      0xB60000,  /* Start offset of block 91  */
      0xB80000,  /* Start offset of block 92  */
      0xBA0000,  /* Start offset of block 93  */
      0xBC0000,  /* Start offset of block 94  */
      0xBE0000,  /* Start offset of block 95  */
      0xC00000,  /* Start offset of block 96  */
      0xC20000,  /* Start offset of block 97  */
      0xC40000,  /* Start offset of block 98  */
      0xC60000,  /* Start offset of block 99  */
      0xC80000,  /* Start offset of block 100  */
      0xCA0000,  /* Start offset of block 101  */
      0xCC0000,  /* Start offset of block 102  */
      0xCE0000,  /* Start offset of block 103  */
      0xD00000,  /* Start offset of block 104  */
      0xD20000,  /* Start offset of block 105  */
      0xD40000,  /* Start offset of block 106  */
      0xD60000,  /* Start offset of block 107  */
      0xD80000,  /* Start offset of block 108  */
      0xDA0000,  /* Start offset of block 109  */
      0xDC0000,  /* Start offset of block 110  */
      0xDE0000,  /* Start offset of block 111  */
      0xE00000,  /* Start offset of block 112  */
      0xE20000,  /* Start offset of block 113  */
      0xE40000,  /* Start offset of block 114  */
      0xE60000,  /* Start offset of block 115  */
      0xE80000,  /* Start offset of block 116  */
      0xEA0000,  /* Start offset of block 117  */
      0xEC0000,  /* Start offset of block 118  */
      0xEE0000,  /* Start offset of block 119  */
      0xF00000,  /* Start offset of block 120  */
      0xF20000,  /* Start offset of block 121  */
      0xF40000,  /* Start offset of block 122  */
      0xF60000,  /* Start offset of block 123  */
      0xF80000,  /* Start offset of block 124  */
      0xFA0000,  /* Start offset of block 125  */
      0xFC0000,  /* Start offset of block 126  */
      0xFE0000,  /* Start offset of block 127  */
   }; /* EndArray BlockOffset[] */
#endif /* USE_M29W128G_8 */

#ifdef USE_M29W128G_16 /* The M29W128G device 16 bit */
   #define MANUFACTURER_ST (0x0020)  /* ST Manufacturer Code is 0x20 */
   #define EXPECTED_DEVICE (0x227E)  /* Device code for the M29W128G */
   #define FLASH_SIZE (0x800000)       /* Total device size in Words */
   #define FLASH_WRITE_BUFFER_SIZE 32   /* Write Buffer = 32 Word */
   #define FLASH_ENHANCED_BUFFER_SIZE 256  /* Enhaced Buffer size = 256 word, available in 16 bit mode only*/
   #define FLASH_MWA 1  /* Minimum Write Access */
   #define ShAddr(A) (A)               /* Used to supports the 8bit Commands */
   #define ConvAddr(A) (A)             /* Used to supports the 8bit Commands */

   static const ubyte BlockGroupOffset[] = {        
      1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
      1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
      1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
      1,1,1,1,1,1,1,1,1
   }; 
   
   static const udword BlockOffset[] = {
      0x000000,  /* Start offset of block 0  */      
      0x010000,  /* Start offset of block 1  */
      0x020000,  /* Start offset of block 2  */
      0x030000,  /* Start offset of block 3  */
      0x040000,  /* Start offset of block 4  */
      0x050000,  /* Start offset of block 5  */
      0x060000,  /* Start offset of block 6  */
      0x070000,  /* Start offset of block 7  */
      0x080000,  /* Start offset of block 8  */
      0x090000,  /* Start offset of block 9  */
      0x0A0000,  /* Start offset of block 10  */
      0x0B0000,  /* Start offset of block 11  */
      0x0C0000,  /* Start offset of block 12  */
      0x0D0000,  /* Start offset of block 13  */
      0x0E0000,  /* Start offset of block 14  */
      0x0F0000,  /* Start offset of block 15  */
      0x100000,  /* Start offset of block 16  */
      0x110000,  /* Start offset of block 17  */
      0x120000,  /* Start offset of block 18  */
      0x130000,  /* Start offset of block 19  */
      0x140000,  /* Start offset of block 20  */
      0x150000,  /* Start offset of block 21  */
      0x160000,  /* Start offset of block 22  */
      0x170000,  /* Start offset of block 23  */
      0x180000,  /* Start offset of block 24  */
      0x190000,  /* Start offset of block 25  */
      0x1A0000,  /* Start offset of block 26  */
      0x1B0000,  /* Start offset of block 27  */
      0x1C0000,  /* Start offset of block 28  */
      0x1D0000,  /* Start offset of block 29  */
      0x1E0000,  /* Start offset of block 30  */
      0x1F0000,  /* Start offset of block 31  */
      0x200000,  /* Start offset of block 32  */
      0x210000,  /* Start offset of block 33  */
      0x220000,  /* Start offset of block 34  */
      0x230000,  /* Start offset of block 35  */
      0x240000,  /* Start offset of block 36  */
      0x250000,  /* Start offset of block 37  */
      0x260000,  /* Start offset of block 38  */
      0x270000,  /* Start offset of block 39  */
      0x280000,  /* Start offset of block 40  */
      0x290000,  /* Start offset of block 41  */
      0x2A0000,  /* Start offset of block 42  */
      0x2B0000,  /* Start offset of block 43  */
      0x2C0000,  /* Start offset of block 44  */
      0x2D0000,  /* Start offset of block 45  */
      0x2E0000,  /* Start offset of block 46  */
      0x2F0000,  /* Start offset of block 47  */
      0x300000,  /* Start offset of block 48  */
      0x310000,  /* Start offset of block 49  */
      0x320000,  /* Start offset of block 50  */
      0x330000,  /* Start offset of block 51  */
      0x340000,  /* Start offset of block 52  */
      0x350000,  /* Start offset of block 53  */
      0x360000,  /* Start offset of block 54  */
      0x370000,  /* Start offset of block 55  */
      0x380000,  /* Start offset of block 56  */
      0x390000,  /* Start offset of block 57  */
      0x3A0000,  /* Start offset of block 58  */
      0x3B0000,  /* Start offset of block 59  */
      0x3C0000,  /* Start offset of block 60  */
      0x3D0000,  /* Start offset of block 61  */
      0x3E0000,  /* Start offset of block 62  */
      0x3F0000,  /* Start offset of block 63  */
      0x400000,  /* Start offset of block 64  */
      0x410000,  /* Start offset of block 65  */
      0x420000,  /* Start offset of block 66  */
      0x430000,  /* Start offset of block 67  */
      0x440000,  /* Start offset of block 68  */
      0x450000,  /* Start offset of block 69  */
      0x460000,  /* Start offset of block 70  */
      0x470000,  /* Start offset of block 71  */
      0x480000,  /* Start offset of block 72  */
      0x490000,  /* Start offset of block 73  */
      0x4A0000,  /* Start offset of block 74  */
      0x4B0000,  /* Start offset of block 75  */
      0x4C0000,  /* Start offset of block 76  */
      0x4D0000,  /* Start offset of block 77  */
      0x4E0000,  /* Start offset of block 78  */
      0x4F0000,  /* Start offset of block 79  */
      0x500000,  /* Start offset of block 80  */
      0x510000,  /* Start offset of block 81  */
      0x520000,  /* Start offset of block 82  */
      0x530000,  /* Start offset of block 83  */
      0x540000,  /* Start offset of block 84  */
      0x550000,  /* Start offset of block 85  */
      0x560000,  /* Start offset of block 86  */
      0x570000,  /* Start offset of block 87  */
      0x580000,  /* Start offset of block 88  */
      0x590000,  /* Start offset of block 89  */
      0x5A0000,  /* Start offset of block 90  */
      0x5B0000,  /* Start offset of block 91  */
      0x5C0000,  /* Start offset of block 92  */
      0x5D0000,  /* Start offset of block 93  */
      0x5E0000,  /* Start offset of block 94  */
      0x5F0000,  /* Start offset of block 95  */
      0x600000,  /* Start offset of block 96  */
      0x610000,  /* Start offset of block 97  */
      0x620000,  /* Start offset of block 98  */
      0x630000,  /* Start offset of block 99  */
      0x640000,  /* Start offset of block 100  */
      0x650000,  /* Start offset of block 101  */
      0x660000,  /* Start offset of block 102  */
      0x670000,  /* Start offset of block 103  */
      0x680000,  /* Start offset of block 104  */
      0x690000,  /* Start offset of block 105  */
      0x6A0000,  /* Start offset of block 106  */
      0x6B0000,  /* Start offset of block 107  */
      0x6C0000,  /* Start offset of block 108  */
      0x6D0000,  /* Start offset of block 109  */
      0x6E0000,  /* Start offset of block 110  */
      0x6F0000,  /* Start offset of block 111  */
      0x700000,  /* Start offset of block 112  */
      0x710000,  /* Start offset of block 113  */
      0x720000,  /* Start offset of block 114  */
      0x730000,  /* Start offset of block 115  */
      0x740000,  /* Start offset of block 116  */
      0x750000,  /* Start offset of block 117  */
      0x760000,  /* Start offset of block 118  */
      0x770000,  /* Start offset of block 119  */
      0x780000,  /* Start offset of block 120  */
      0x790000,  /* Start offset of block 121  */
      0x7A0000,  /* Start offset of block 122  */
      0x7B0000,  /* Start offset of block 123  */
      0x7C0000,  /* Start offset of block 124  */
      0x7D0000,  /* Start offset of block 125  */
      0x7E0000,  /* Start offset of block 126  */
      0x7F0000,  /* Start offset of block 127  */
   }; /* EndArray BlockOffset[] */
#endif /* USE_M29W128G_16 */

#define NUM_BLOCKS (sizeof(BlockOffset)/sizeof(BlockOffset[0]))
/******************************************************************************
    Standard functions
*******************************************************************************/ 
  ReturnType  Flash( CommandType cmdCommand, ParameterType *fp );
  ReturnType  FlashBlockErase( uBlockType ublBlockNr );
  ReturnType  FlashCheckCompatibility( void );   
  ReturnType  FlashChipErase( ReturnType  *rpResults );
  ReturnType  FlashMultipleBlockErase(uBlockType ublNumBlocks,uBlockType *ublpBlock,ReturnType * rpResult);
  ReturnType  FlashProgram( udword udMode, udword udAddrOff, udword udNrOfElementsInArray, void *pArray );
 uCPUBusType  FlashRead( udword udAddrOff );
  ReturnType  FlashReadCfi( uword uwCFIFunc, uCPUBusType *ucpCFIValue );
  ReturnType  FlashReadDeviceId( uCPUBusType *ucpDeviceID);
  ReturnType  FlashReadManufacturerCode( uCPUBusType *ucpManufacturerCode);
  ReturnType  FlashReadMultipleDeviceId(uword uwDeviceIdNr, uCPUBusType *ucpDeviceId );
  ReturnType  FlashReset( void );
  ReturnType  FlashResume( void );
  ReturnType  FlashSingleProgram( udword udAddrOff, uCPUBusType ucVal );
  ReturnType  FlashSuspend( void );
            void  FlashWrite( udword udAddrOff, uCPUBusType ucVal );


/******************************************************************************
    Fast program functions
*******************************************************************************/ 
ReturnType  FlashBufferProgram( udword udMode,udword udAddrOff, udword udNrOfElementsInArray, void *pArray );
ReturnType  FlashBufferProgramAbort( void );
ReturnType  FlashBufferPrdogramConfirm( udword udAddrOff );
ReturnType  FlashWriteProgramBuffer(udword udMode,udword udAddrOff, udword udNrOfElementsInArray, void *pArray );

#if defined(USE_M29W128G_16)/* In 16 bit Mode */
ReturnType  FlashEnhancedBufferProgram(udword udAddrOff, void *pArray );
ReturnType  FlashEnhancedBufferProgramConfirm( udword udAddrOff );
ReturnType  FlashUnlockBypassEnhancedBufferProgram( udword udAddrOff, void *pArray );
#endif

ReturnType  FlashUnlockBypass( void );
ReturnType  FlashUnlockBypassProgram (udword udAddrOff, udword NumWords, void *pArray);
          void  FlashUnlockBypassReset( void );
ReturnType  FlashUnlockBypassBlockErase( uBlockType ublBlockNr);
ReturnType  FlashUnlockBypassBufferProgram( udword udMode,udword udAddrOff, udword udNrOfElementsInArray, void *pArray );
ReturnType  FlashUnlockBypassChipErase( void );
ReturnType  FlashUnlockBypassMultipleBlockErase(uBlockType ublNumBlocks,uBlockType *ublpBlock,ReturnType * rpResult);



/******************************************************************************
    Utility functions
*******************************************************************************/ 
static ReturnType FlashCheckBlockEraseError( uBlockType ublBlock );
static ReturnType FlashDataToggle( void );

⌨️ 快捷键说明

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