2026-02-27 15:51:32 +08:00
|
|
|
|
# Driver_M24Cxx(可移植 EEPROM 驱动)
|
|
|
|
|
|
|
|
|
|
|
|
这是一个面向 M24Cxx / AT24Cxx 系列 EEPROM 的可移植驱动模块。
|
|
|
|
|
|
|
|
|
|
|
|
核心特性:
|
|
|
|
|
|
|
|
|
|
|
|
- 不依赖特定 MCU/SDK(不绑定 STM32 HAL)
|
|
|
|
|
|
- 支持页写自动拆分
|
2026-02-27 16:31:10 +08:00
|
|
|
|
- 用户传入 I2C 读、I2C 写、毫秒延时三个函数后即可直接使用
|
2026-02-27 15:51:32 +08:00
|
|
|
|
|
|
|
|
|
|
## 目录结构
|
|
|
|
|
|
|
2026-02-27 16:31:10 +08:00
|
|
|
|
- `module/Int_EEPROM24xx.h`:驱动接口
|
2026-02-27 15:51:32 +08:00
|
|
|
|
- `module/Int_EEPROM24xx.c`:驱动实现
|
2026-02-27 16:31:10 +08:00
|
|
|
|
- `examples/adapter_template.c`:移植模板
|
2026-02-27 15:51:32 +08:00
|
|
|
|
|
2026-02-27 16:31:10 +08:00
|
|
|
|
## 使用步骤
|
2026-02-27 15:51:32 +08:00
|
|
|
|
|
2026-02-27 16:31:10 +08:00
|
|
|
|
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` 进行访问。
|
2026-02-27 15:51:32 +08:00
|
|
|
|
|
2026-02-27 16:31:10 +08:00
|
|
|
|
## 示例
|
2026-02-27 15:51:32 +08:00
|
|
|
|
|
|
|
|
|
|
```c
|
2026-02-27 16:31:10 +08:00
|
|
|
|
IntEEPROM24xx_Config_t cfg = {
|
2026-02-27 15:51:32 +08:00
|
|
|
|
.dev_addr = (0x50u << 1),
|
|
|
|
|
|
.page_size = 8u,
|
|
|
|
|
|
.mem_addr_size = 1u,
|
|
|
|
|
|
.write_cycle_ms = 6u,
|
|
|
|
|
|
.timeout_ms = 100u,
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2026-02-27 16:31:10 +08:00
|
|
|
|
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);
|
2026-02-27 15:51:32 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 参数说明
|
|
|
|
|
|
|
2026-02-27 16:31:10 +08:00
|
|
|
|
- `dev_addr`:设备地址(7bit 或左移后地址,取决于底层驱动规范)
|
2026-02-27 15:51:32 +08:00
|
|
|
|
- `page_size`:页大小(必须与芯片手册一致)
|
|
|
|
|
|
- `mem_addr_size`:地址字节数(1 或 2)
|
|
|
|
|
|
- `write_cycle_ms`:每次页写后的写周期等待
|
2026-02-27 16:31:10 +08:00
|
|
|
|
- `timeout_ms`:底层总线访问超时
|
2026-02-27 15:51:32 +08:00
|
|
|
|
|
2026-02-27 16:31:10 +08:00
|
|
|
|
## 注意事项
|
2026-02-27 15:51:32 +08:00
|
|
|
|
|
2026-02-27 16:31:10 +08:00
|
|
|
|
- 驱动内部会自动按页拆分写入,避免跨页写异常。
|
|
|
|
|
|
- 若你的器件使用 2 字节地址,请设置 `mem_addr_size = 2`。
|
|
|
|
|
|
- 若写后立即读失败,请适当增大 `write_cycle_ms`。
|