#pragma once #include "ver_config.h" #ifdef GD25Q16_FLASH #include "stdint.h" #define AT45DB_BUFFER_1_WRITE 0x84 /* 写入第一缓冲区 */ #define AT45DB_BUFFER_2_WRITE 0x87 /* 写入第二缓冲区 */ #define AT45DB_BUFFER_1_WRITE_FLASH 0x82 /* 写入第一缓冲区 */ #define AT45DB_BUFFER_2_WRITE_FLASH 0x85 /* 写入第二缓冲区 */ #define AT45DB_BUFFER_1_READ 0xD4 /* 读取第一缓冲区 */ #define AT45DB_BUFFER_2_READ 0xD6 /* 读取第二缓冲区 */ #define AT45DB_B1_TO_MM_PAGE_PROG_WITH_ERASE \ 0x83 /* 将第一缓冲区的数据写入主存储器(擦除模式)*/ #define GD25Q16_MM_PAGE_PROG_WITH_ERASE \ 0x02 /* 将第二缓冲区的数据写入主存储器(擦除模式)*/ #define AT45DB_MM_PAGE_TO_B1_XFER \ 0x53 /* 将主存储器的指定页数据加载到第一缓冲区 */ #define AT45DB_MM_PAGE_TO_B2_XFER \ 0x55 /* 将主存储器的指定页数据加载到第二缓冲区 */ #define AT45DB_PAGE_ERASE 0x81 /* 页删除(每页512/528字节) */ #define AT45DB_SECTOR_ERASE 0x7C /* 扇区擦除(每扇区128K字节)*/ #define GD25Q16SECTOR_ERASE 0x20 /* 扇区擦除(每扇区4K字节)*/ #define GD25Q16_READ_STATE_REGISTER 0X05 /* 读取状态寄存器 */ #define GD25Q16_WRITE 0x02 /* 写入数据 */ #define AT45DB_BLACK_ERASE 0x50 /* 块删除(每块4KByte)*/ #define GD25Q16_MM_PAGE_READ 0X03 /* 直接读主存储器的内存页*/ #define AT45DB_Continuous_Read 0x0B #define GD25Q16_WRITE_ENABLE 0x06 /* 写使能 */ #define GD25Q16_WRITE_DISABLE 0x04 /* 写禁止 */ #define FLASH_PAGE_TOTAL 4096 // 0..4095 #define FLASH_PAGE_SIZE 512 #define FLASH_SIZE_KBYTE 2112 //浮点 联合体 typedef union { float value; unsigned char byte[4]; } f_bytes; //整数 联合体 typedef union { short value; unsigned char byte[2]; } i_bytes; void flash_at45db_init(void); uint8_t AT45DB_Check(void); uint8_t AT45DB_IS_BUSY(void); void AT45DB_Read_Bytes(uint32_t add, uint8_t *pdata, uint16_t len); void AT45DB_Write_Bytes(uint32_t add, uint8_t *pdata, uint16_t len); int16_t AT45DB_Read_int16(uint32_t add); void AT45DB_Write_int16(uint32_t add, int16_t wvalue); void AT45DB_ReadPage(uint16_t Page_Add, uint8_t *pdata); void AT45DB_WritePage(uint16_t page, uint8_t *Data); void AT45DB_WriteBytes_OnOnePage(uint16_t page, uint8_t *Data, uint16_t len); void gd25q16_cs_high(void); void gd25q16_cs_low(void); #endif