ShipCentralControl/Loader_DTU/User/spi_Flash.h

65 lines
1.9 KiB
C
Raw Normal View History

2025-04-03 15:56:06 +08:00
/*
*********************************************************************************************************
* 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~14K<34><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 15K: SFLASH<53><48>FRAMһ<4D><D2BB><EFBFBD>Ա<EFBFBD>ʶ<EFBFBD><CAB6>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ<D6BE><CEBB>CRC<52>ȣ<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~8189K: <20><>ʷ<EFBFBD><CAB7>¼ (64 x (122847 + 1) = 7678K
// 8190K~8191K: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2K)
// <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
#define SFLASH_FRAM_VALID_INFO_BASE 0x3C00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ<EFBFBD><D6B7>256K<36><4B><EFBFBD><EFBFBD>СΪ256K<36><4B>
#define SFLASH_UPGRADE_BASE 0x40000ul
// <20><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ<EFBFBD><D6B7>512K
#define SFLASH_DATA_BASE 0x80000ul
// <20><><EFBFBD>ݼ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>122847+1<><31><EFBFBD><EFBFBD>
#define SFLASH_DATA_COUNT 122847ul
// 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>
// <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