56 lines
1.6 KiB
C
56 lines
1.6 KiB
C
|
|
/*
|
|||
|
|
*********************************************************************************************************
|
|||
|
|
* IAR Development Kits
|
|||
|
|
* on the
|
|||
|
|
*
|
|||
|
|
* M451
|
|||
|
|
*
|
|||
|
|
* Filename : spi_flash.h
|
|||
|
|
* Version : V1.00
|
|||
|
|
* Programmer(s) : Qian Xianghong
|
|||
|
|
*********************************************************************************************************
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef USER_SPI_FLASH_PRESENT
|
|||
|
|
#define USER_SPI_FLASH_PRESENT
|
|||
|
|
|
|||
|
|
#include "type.h"
|
|||
|
|
|
|||
|
|
// Flash<73>洢<EFBFBD>滮<EFBFBD><E6BBAE><EFBFBD>£<EFBFBD>
|
|||
|
|
// 0~7K: boot-loader<65><72><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LDROM<4F><4D><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ִ<EFBFBD><D6B4>
|
|||
|
|
// 8~11K: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>2K+2K<32><4B>˫<EFBFBD>ݴ洢<DDB4><E6B4A2>
|
|||
|
|
// 12~15K<35><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// 16~255K: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֿ⣬<D6BF><E2A3AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>㣬<EFBFBD>Ƿ<EFBFBD><C7B7>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>棩
|
|||
|
|
// 256~511K<31><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// 512K~8M: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>GPRS<52>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>棩
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ<EFBFBD><D6B7>8K<38><4B><EFBFBD><EFBFBD>СΪ4K<34><4B>
|
|||
|
|
#define SFLASH_CONFIG_BASE 0x2000
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ<EFBFBD><D6B7>256K<36><4B><EFBFBD><EFBFBD>СΪ256K<36><4B>
|
|||
|
|
#define SFLASH_UPGRADE_BASE 0x40000ul
|
|||
|
|
|
|||
|
|
// Flash<73>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>: 8M bytes
|
|||
|
|
#define SFLASH_SIZE 0x800000ul
|
|||
|
|
#define SFLASH_PAGE_SIZE 256
|
|||
|
|
#define SFLASH_ERASE_SIZE 256 // Page erase size
|
|||
|
|
|
|||
|
|
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void SFlash_Init();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
void SFlash_Open();
|
|||
|
|
|
|||
|
|
void SFlash_ReadID();
|
|||
|
|
uint8_t SFlash_UnlockBPR();
|
|||
|
|
uint8_t SFlash_WriteEN();
|
|||
|
|
void SFlash_ChipErase();
|
|||
|
|
void SFlash_SectorErase(uint32_t Addr);
|
|||
|
|
void SFlash_PageErase(uint32_t Addr);
|
|||
|
|
uint32_t SFlash_BufferWrite(uint32_t Addr, uint8_t *buf, uint32_t nbytes);
|
|||
|
|
uint32_t SFlash_BufferRead(uint32_t Addr, uint8_t *buf, uint32_t nbytes);
|
|||
|
|
uint32_t SFlash_BufferVerify(uint32_t Addr, uint8_t *buf, uint32_t nbytes);
|
|||
|
|
|
|||
|
|
uint16_t do_sflash_crc(unsigned long base_addr, long len);
|
|||
|
|
|
|||
|
|
#endif
|