/** * @file eeprom_fm24.h * @author xxx * @date 2023-08-30 14:05:55 * @brief FM24系列EEPROM驱动 https://zhuanlan.zhihu.com/p/598934638 * @copyright Copyright (c) 2023 by xxx, All Rights Reserved. */ #ifndef __EEPROM_FM24_H__ #define __EEPROM_FM24_H__ #include "main.h" //========在此设定芯片地址============= #define W_ADD_COM 0xa0 // 写字节命令及器件地址(根据地址实际情况改变), 1010 A2 A1 A0 0 #define R_ADD_COM 0xa1 // 读命令字节及器件地址(根据地址实际情况改变), 1010 A2 A1 A0 1 //=======在此设定芯片型号, 1代表24C01; 16代表24C16; 512代表24C512 //=======在此设定芯片型号, 1代表24C01; 16代表24C16; 512代表24C512 #define e2prom 256 // #if e2prom == 1 #define FM24_PAGE_SIZE 16 #define FM24_SIZE (128 * 8) #elif e2prom == 2 #define FM24_PAGE_SIZE 16 #define FM24_SIZE (256 * 8) #elif e2prom == 4 #define FM24_PAGE_SIZE 32 #define FM24_SIZE (512 * 8) #elif e2prom == 8 #define FM24_PAGE_SIZE 64 #define FM24_SIZE (1024 * 8) #elif e2prom == 16 #define FM24_PAGE_SIZE 128 #define FM24_SIZE (2048 * 8) #elif e2prom == 32 #define FM24_PAGE_SIZE 128 #define FM24_SIZE (4096 * 8) #elif e2prom == 64 #define FM24_PAGE_SIZE 256 #define FM24_SIZE (8192 * 8) #elif e2prom == 128 #define FM24_PAGE_SIZE 256 #define FM24_SIZE (16384) #elif e2prom == 256 #define FM24_PAGE_SIZE 512 #define FM24_SIZE (32768) // 32K #elif e2prom == 512 #define FM24_PAGE_SIZE 512 #define FM24_SIZE (65536) #endif /** * @brief Initializes the FM24 EEPROM module. */ extern void eeprom_fm24_init(void); /** * @brief Deinitializes the FM24 EEPROM module. */ extern void eeprom_fm24_dinit(void); /** * @brief Enables the FM24 EEPROM module. */ extern void eeprom_fm24_enable(void); /** * @brief Disables the FM24 EEPROM module. */ extern void eeprom_fm24_disable(void); /** * @brief Reads data from the FM24 EEPROM module. * @param read_addr The starting address to read from. * @param data Pointer to the buffer to store the read data. * @param length The number of bytes to read. * @return TRUE if the read operation is successful, FALSE otherwise. */ extern BOOL eeprom_fm24_read(uint32_t read_addr, uint8_t *data, uint16_t length); /** * @brief Writes data to the FM24 EEPROM module. * @param write_addr The starting address to write to. * @param data Pointer to the data to be written. * @param length The number of bytes to write. * @return TRUE if the write operation is successful, FALSE otherwise. */ extern BOOL eeprom_fm24_write(uint32_t write_addr, uint8_t *data, uint16_t length); /** * @brief Performs a test on the FM24 EEPROM module. */ extern void eeprom_fm24_test(void); #endif // __EEPROM_FM24_H__