| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #ifndef __FLASH_H
- #define __FLASH_H
- #include <stm32f10x.h>
- #define FLASH_PAGE_SIZE 256
- #define FLASH_SECTOR_SIZE 4096
- #define FLASH_SECTOR_COUNT 512
- #define FLASH_BLOCK_SIZE 65536
- #define FLASH_PAGES_PER_SECTOR FLASH_SECTOR_SIZE/FLASH_PAGE_SIZE
- #define SPI_FLASH_CS PCout(4) //选中FLASH
- ////////////////////////////////////////////////////////////////////////////
- //W25X16读写
- #define FLASH_ID 0XEF14
- //指令表
- #define W25X_WriteEnable 0x06
- #define W25X_WriteDisable 0x04
- #define W25X_ReadStatusReg 0x05
- #define W25X_WriteStatusReg 0x01
- #define W25X_ReadData 0x03
- #define W25X_FastReadData 0x0B
- #define W25X_FastReadDual 0x3B
- #define W25X_PageProgram 0x02
- #define W25X_BlockErase 0xD8
- #define W25X_SectorErase 0x20
- #define W25X_ChipErase 0xC7
- #define W25X_PowerDown 0xB9
- #define W25X_ReleasePowerDown 0xAB
- #define W25X_DeviceID 0xAB
- #define W25X_ManufactDeviceID 0x90
- #define W25X_JedecDeviceID 0x9F
- uint8_t SPI_Flash_Init(void);
- u16 SPI_Flash_ReadID(void); //读取FLASH ID
- u8 SPI_Flash_ReadSR(void); //读取状态寄存器
- void SPI_FLASH_Write_SR(u8 sr); //写状态寄存器
- void SPI_FLASH_Write_Enable(void); //写使能
- void SPI_FLASH_Write_Disable(void); //写保护
- void SPI_Flash_Read(u8* pBuffer,u32 ReadAddr,u16 NumByteToRead); //读取flash
- void SPI_Flash_Write(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite);//写入flash
- void SPI_Flash_Erase_Chip(void); //整片擦除
- void SPI_Flash_Erase_Sector(u32 Dst_Addr);//扇区擦除
- void SPI_Flash_Wait_Busy(void); //等待空闲
- void SPI_Flash_PowerDown(void); //进入掉电模式
- void SPI_Flash_WAKEUP(void); //唤醒
- void W25X_Read_Sector(uint32_t nSector, u8* pBuffer);
- void W25X_Write_Sector(uint32_t nSector, u8* pBuffer);
- #endif
|