Files
CCU621M/BSP/eeprom/eeprom模块说明.md

103 lines
3.6 KiB
Markdown
Raw Permalink 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.
# eeprom 模块说明(i2c1 / fm24cl16
> 本文档描述 `CCU621_M` 工程中 `BSP/eeprom` 的职责、接口、初始化方式与测试方法。
[返回主说明](./../../README.md)
## 快速跳转
- [1. 模块职责](#1-模块职责)
- [2. 涉及文件](#2-涉及文件)
- [3. 初始化流程](#3-初始化流程)
- [4. 对外接口](#4-对外接口)
- [5. 已接入测试](#5-已接入测试)
- [6. 维护注意事项](#6-维护注意事项)
- [返回主说明 README](./../../README.md)
---
## 1. 模块职责
`BSP/eeprom` 负责 FM24CL16I2C FRAM)基础驱动能力,当前职责为:
- I2C1 引脚与时序配置;
- FRAM 地址初始化;
- FRAM 指定地址写入与读出;
- 提供上层测试调用接口(由 `app_test` 验证读写一致性)。
---
## 2. 涉及文件
| 文件 | 说明 |
|---|---|
| `BSP/eeprom/i2c1.h` | I2C1 宏配置与函数声明 |
| `BSP/eeprom/i2c1.c` | I2C1 GPIO/I2C 初始化与总线复位 |
| `BSP/eeprom/fm24cl16.h` | FM24CL16 对外接口声明 + 容量/地址分区宏 |
| `BSP/eeprom/fm24cl16.c` | FM24CL16 读写实现(`eeprom_buffer_write/read` 等) |
| `BSP/eeprom/eeprom_map.h` | 兼容头(转发到 `fm24cl16.h` |
> 说明:历史冗余文件 `eeprom_I2C_fm24cl16.c/.h` 已移除,避免双实现并存导致维护混乱。
---
## 3. 初始化流程
当前已在 `BSP/sys_drv_init.c``v_sys_hardware_init()` 中接入:
1. `gpio_config()`:配置 I2C1 对应 GPIO
2. `i2c_config()`:配置 I2C1 时序并使能;
3. `i2c_eeprom_init()`:初始化 FM24CL16 设备地址等参数。
调用位置:系统硬件初始化阶段(通信外设初始化流程中)。
---
## 4. 对外接口
### 4.1 I2C 基础接口(`i2c1.c`
- `void gpio_config(void);`
- `void i2c_config(void);`
- `void i2c_bus_reset(void);`
### 4.2 EEPROM 接口与地址分区(`fm24cl16.h` + `fm24cl16.c`
- `void i2c_eeprom_init(void);`
- `void eeprom_buffer_write(uint8_t *p_buffer, uint16_t write_address, uint16_t number_of_byte);`
- `void eeprom_buffer_read(uint8_t *p_buffer, uint16_t read_address, uint16_t number_of_byte);`
- `void eeprom_driver_init(void);`
- 容量/范围宏:`FRAM_SIZE_BYTES``FRAM_START_ADDR``FRAM_END_ADDR` 等;
- 分区宏:`EEPROM_ADDR_CHGRCD_MNG``EEPROM_ADDR_HISALARM_MNG``EEPROM_ADDR_UNSETTLED_MNG``EEPROM_ADDR_CARD_MNG``EEPROM_ADDR_A_LOG_DATA``EEPROM_ADDR_B_LOG_DATA`
> 说明:`eeprom_page_write()` 为驱动内部函数,已收敛为 `fm24cl16.c` 内部 `static`,不再对外暴露。
---
## 5. 已接入测试
`app/app_init/app_test.c` 中,测试流程已统一由 `v_app_test_periodic()` 调度,并受总开关控制:
- `APP_TEST_ENABLE`:0 时不编译测试实现,仅保留空函数桩;
- EEPROM 基础读写:固定地址 32B;
- EEPROM 多地址测试:覆盖分区起点与测试窗口地址,执行备份-写读校验-恢复;
- EEPROM 速度测试:在测试窗口执行循环读写并统计吞吐;
- Flash 测试:固定地址测速 + 1MB 步长 32MB 全空间校验。
---
## 6. 维护注意事项
1. 保持 EEPROM 仅一套实现,避免同名接口重复定义;
2. 修改 I2C 引脚/时序时,同步更新 `i2c1.h` 与硬件原理图;
3. 增加上层功能前,先通过 `u8_app_test_eeprom_rw_once()` 回归;
4. EEPROM 驱动已引入互斥访问,新增调用方需避免在中断上下文直接调用阻塞式接口;
5. 建议业务数据区与测试区分离(例如测试使用 `0x0600` 起始窗口),避免互相覆盖。
---
## 关联文档
- 主索引:[`CCU621_M/README.md`](./../../README.md)
- 本文位置:`BSP/eeprom/eeprom模块说明.md`