重构为初始化传入读写延时函数的接口

This commit is contained in:
2026-02-27 16:31:10 +08:00
parent 44399a1e5d
commit 47f95b9caa
4 changed files with 114 additions and 120 deletions

View File

@@ -6,65 +6,51 @@
- 不依赖特定 MCU/SDK不绑定 STM32 HAL
- 支持页写自动拆分
- 通过回调适配底层总线
- 用户传入 I2C 读、I2C 写、毫秒延时三个函数后即可直接使用
## 目录结构
- `module/Int_EEPROM24xx.h`:驱动接口定义
- `module/Int_EEPROM24xx.h`:驱动接口
- `module/Int_EEPROM24xx.c`:驱动实现
- `examples/adapter_template.c`适配层模板
- `examples/adapter_template.c`移植模板
## 你需要实现的 3 个函数
## 使用步骤
移植时,你只需要实现这三个底层函数,然后在配置结构体里挂接:
1.`module/Int_EEPROM24xx.h/.c` 加入你的工程。
2. 在你的平台实现三个函数:
- `your_i2c_read(...)`
- `your_i2c_write(...)`
- `your_delay_ms(...)`
3. 调用 `Int_EEPROM24xx_Init(...)` 完成初始化。
4. 直接调用 `Int_EEPROM24xx_Read/Write` 进行访问。
1. `bus_read`:从 EEPROM 读数据
2. `bus_write`:向 EEPROM 写数据
3. `delay_ms`:毫秒延时
> 这也是本仓库提交信息里的重点:**需要自己实现读、写、延时这三个函数**。
## 快速接入
### 1) 将模块加入工程
把以下文件加入你的工程:
- `module/Int_EEPROM24xx.h`
- `module/Int_EEPROM24xx.c`
### 2) 实现底层适配函数
参考 `examples/adapter_template.c`,按你的平台替换 I2C 读写与延时实现。
### 3) 初始化设备描述并调用 API
## 示例
```c
static const IntEEPROM24xx_t g_eeprom = {
.ctx = your_bus_context,
IntEEPROM24xx_Config_t cfg = {
.dev_addr = (0x50u << 1),
.page_size = 8u,
.mem_addr_size = 1u,
.write_cycle_ms = 6u,
.timeout_ms = 100u,
.bus_read = your_bus_read,
.bus_write = your_bus_write,
.delay_ms = your_delay_ms,
};
Int_EEPROM24xx_Read(&g_eeprom, 0x00, rx_buf, sizeof(rx_buf));
Int_EEPROM24xx_Write(&g_eeprom, 0x00, tx_buf, sizeof(tx_buf));
Int_EEPROM24xx_Init(&cfg, your_i2c_read, your_i2c_write, your_delay_ms);
Int_EEPROM24xx_Write(0x00, tx_buf, tx_len);
Int_EEPROM24xx_Read(0x00, rx_buf, rx_len);
```
## 参数说明
- `dev_addr`设备地址7bit 或左移后地址,取决于你的底层驱动规范)
- `dev_addr`设备地址7bit 或左移后地址,取决于底层驱动规范)
- `page_size`:页大小(必须与芯片手册一致)
- `mem_addr_size`地址字节数1 或 2
- `write_cycle_ms`:每次页写后的写周期等待
- `timeout_ms`:底层总线访问超时
## 常见问题
## 注意事项
- 写入失败:优先检查 `page_size``write_cycle_ms`
- 读写偏移错乱:检查 `mem_addr_size`1 字节 / 2 字节)
- 跨平台报错:说明底层回调未按目标 SDK 正确实现
- 驱动内部会自动按页拆分写入,避免跨页写异常。
- 若你的器件使用 2 字节地址,请设置 `mem_addr_size = 2`
- 若写后立即读失败,请适当增大 `write_cycle_ms`