hard_flash_at45db.h 2.3 KB

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