Files
Driver_M24Cxx/module/Int_EEPROM24xx.h

61 lines
2.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef INT_EEPROM24XX_H
#define INT_EEPROM24XX_H
#include <stdint.h>
#include <stddef.h>
typedef int32_t IntEEPROM_Result_t;
#define INT_EEPROM_OK 0
#define INT_EEPROM_ERR_ARG -1
#define INT_EEPROM_ERR_IO -2
/* 底层总线读回调:
* ctx : 用户上下文(可传 I2C 句柄、驱动实例等)
* dev_addr : 器件地址(格式由你的平台驱动决定)
* mem_addr : EEPROM 内存地址
* mem_addr_size : 地址字节数1 或 2
* timeout_ms : 访问超时(毫秒)
*/
typedef IntEEPROM_Result_t (*IntEEPROM_BusRead_t)(void *ctx,
uint16_t dev_addr,
uint32_t mem_addr,
uint8_t mem_addr_size,
uint8_t *buf,
uint16_t len,
uint32_t timeout_ms);
/* 底层总线写回调,参数含义同读回调 */
typedef IntEEPROM_Result_t (*IntEEPROM_BusWrite_t)(void *ctx,
uint16_t dev_addr,
uint32_t mem_addr,
uint8_t mem_addr_size,
const uint8_t *buf,
uint16_t len,
uint32_t timeout_ms);
typedef void (*IntEEPROM_DelayMs_t)(void *ctx, uint32_t delay_ms);
typedef struct
{
void *ctx; /* 用户上下文 */
uint16_t dev_addr; /* 器件地址 */
uint16_t page_size; /* 页大小(字节) */
uint8_t mem_addr_size; /* 地址字节数1 或 2 */
uint32_t write_cycle_ms; /* 每次页写后等待时间ms */
uint32_t timeout_ms; /* 总线访问超时ms */
IntEEPROM_BusRead_t bus_read;
IntEEPROM_BusWrite_t bus_write;
IntEEPROM_DelayMs_t delay_ms;
} IntEEPROM24xx_t;
/* 读取 EEPROM。
* 返回 INT_EEPROM_OK 表示成功。
*/
IntEEPROM_Result_t Int_EEPROM24xx_Read(const IntEEPROM24xx_t *dev, uint32_t mem_addr, uint8_t *buf, uint16_t len);
/* 写入 EEPROM内部会自动按页拆分写入。 */
IntEEPROM_Result_t Int_EEPROM24xx_Write(const IntEEPROM24xx_t *dev, uint32_t mem_addr, const uint8_t *buf, uint16_t len);
#endif