This repository has been archived on 2025-02-28. You can view files and clone it, but cannot push or open issues or pull requests.
controller-hd/User/board/inc/eeprom_fm24.h

70 lines
2.4 KiB
C

/**
* @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
extern void eeprom_fm24_init(void); ///< 初始化
extern void eeprom_fm24_enable(void); ///< 使能
extern void eeprom_fm24_disable(void); ///< 失能
extern BOOL eeprom_fm24_read(uint32_t read_addr, uint8_t *data, uint16_t length); ///< 读取数据
extern BOOL eeprom_fm24_write(uint32_t write_addr, uint8_t *data, uint16_t length); ///< 写入数据
extern void eeprom_fm24_test(void); ///< 测试
// extern uint32_t get_base_addr(uint64_t cnt); ///< 获取FM24写入基地址
// extern BOOL fm24_crc_read_rtdata(void); ///< EEPROM FM24带CRC校验的读函数
// extern BOOL fm24_crc_write_rtdata(void); ///< EEPROM FM24带CRC校验的写函数
// extern BOOL fm24_crc_test(void); ///< EEPROM FM24 CRC读写测试
#endif // __EEPROM_FM24_H__