71 lines
1.9 KiB
Markdown
71 lines
1.9 KiB
Markdown
# Driver_M24Cxx(可移植 EEPROM 驱动)
|
||
|
||
这是一个面向 M24Cxx / AT24Cxx 系列 EEPROM 的可移植驱动模块。
|
||
|
||
核心特性:
|
||
|
||
- 不依赖特定 MCU/SDK(不绑定 STM32 HAL)
|
||
- 支持页写自动拆分
|
||
- 通过回调适配底层总线
|
||
|
||
## 目录结构
|
||
|
||
- `module/Int_EEPROM24xx.h`:驱动接口定义
|
||
- `module/Int_EEPROM24xx.c`:驱动实现
|
||
- `examples/adapter_template.c`:适配层模板
|
||
|
||
## 你需要实现的 3 个函数
|
||
|
||
移植时,你只需要实现这三个底层函数,然后在配置结构体里挂接:
|
||
|
||
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,
|
||
.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));
|
||
```
|
||
|
||
## 参数说明
|
||
|
||
- `dev_addr`:设备地址(7bit 或左移后地址,取决于你的底层驱动规范)
|
||
- `page_size`:页大小(必须与芯片手册一致)
|
||
- `mem_addr_size`:地址字节数(1 或 2)
|
||
- `write_cycle_ms`:每次页写后的写周期等待
|
||
|
||
## 常见问题
|
||
|
||
- 写入失败:优先检查 `page_size` 和 `write_cycle_ms`
|
||
- 读写偏移错乱:检查 `mem_addr_size`(1 字节 / 2 字节)
|
||
- 跨平台报错:说明底层回调未按目标 SDK 正确实现。
|