hard_flash_gd25q16.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #pragma once
  2. #include "ver_config.h"
  3. #ifdef GD25Q16_FLASH
  4. #include "stdint.h"
  5. #define AT45DB_BUFFER_1_WRITE 0x84 /* 写入第一缓冲区 */
  6. #define AT45DB_BUFFER_2_WRITE 0x87 /* 写入第二缓冲区 */
  7. #define AT45DB_BUFFER_1_WRITE_FLASH 0x82 /* 写入第一缓冲区 */
  8. #define AT45DB_BUFFER_2_WRITE_FLASH 0x85 /* 写入第二缓冲区 */
  9. #define AT45DB_BUFFER_1_READ 0xD4 /* 读取第一缓冲区 */
  10. #define AT45DB_BUFFER_2_READ 0xD6 /* 读取第二缓冲区 */
  11. #define AT45DB_B1_TO_MM_PAGE_PROG_WITH_ERASE \
  12. 0x83 /* 将第一缓冲区的数据写入主存储器(擦除模式)*/
  13. #define GD25Q16_MM_PAGE_PROG_WITH_ERASE \
  14. 0x02 /* 将第二缓冲区的数据写入主存储器(擦除模式)*/
  15. #define AT45DB_MM_PAGE_TO_B1_XFER \
  16. 0x53 /* 将主存储器的指定页数据加载到第一缓冲区 */
  17. #define AT45DB_MM_PAGE_TO_B2_XFER \
  18. 0x55 /* 将主存储器的指定页数据加载到第二缓冲区 */
  19. #define AT45DB_PAGE_ERASE 0x81 /* 页删除(每页512/528字节) */
  20. #define AT45DB_SECTOR_ERASE 0x7C /* 扇区擦除(每扇区128K字节)*/
  21. #define GD25Q16SECTOR_ERASE 0x20 /* 扇区擦除(每扇区4K字节)*/
  22. #define GD25Q16_READ_STATE_REGISTER 0X05 /* 读取状态寄存器 */
  23. #define GD25Q16_WRITE 0x02 /* 写入数据 */
  24. #define AT45DB_BLACK_ERASE 0x50 /* 块删除(每块4KByte)*/
  25. #define GD25Q16_MM_PAGE_READ 0X03 /* 直接读主存储器的内存页*/
  26. #define AT45DB_Continuous_Read 0x0B
  27. #define GD25Q16_WRITE_ENABLE 0x06 /* 写使能 */
  28. #define GD25Q16_WRITE_DISABLE 0x04 /* 写禁止 */
  29. #define FLASH_PAGE_TOTAL 4096 // 0..4095
  30. #define FLASH_PAGE_SIZE 512
  31. #define FLASH_SIZE_KBYTE 2112
  32. //浮点 联合体
  33. typedef union {
  34. float value;
  35. unsigned char byte[4];
  36. } f_bytes;
  37. //整数 联合体
  38. typedef union {
  39. short value;
  40. unsigned char byte[2];
  41. } i_bytes;
  42. void flash_at45db_init(void);
  43. uint8_t AT45DB_Check(void);
  44. uint8_t AT45DB_IS_BUSY(void);
  45. void AT45DB_Read_Bytes(uint32_t add, uint8_t *pdata, uint16_t len);
  46. void AT45DB_Write_Bytes(uint32_t add, uint8_t *pdata, uint16_t len);
  47. int16_t AT45DB_Read_int16(uint32_t add);
  48. void AT45DB_Write_int16(uint32_t add, int16_t wvalue);
  49. void AT45DB_ReadPage(uint16_t Page_Add, uint8_t *pdata);
  50. void AT45DB_WritePage(uint16_t page, uint8_t *Data);
  51. void AT45DB_WriteBytes_OnOnePage(uint16_t page, uint8_t *Data, uint16_t len);
  52. void gd25q16_cs_high();
  53. void gd25q16_cs_low();
  54. #endif