# ecg **Repository Path**: YIJia_Kitchen_Bath/ecg ## Basic Information - **Project Name**: ecg - **Description**: nordic+max sensor - **Primary Language**: C - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-01 - **Last Updated**: 2026-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ECG 数据采集与存储系统 这是一个基于 Zephyr RTOS 的嵌入式系统,旨在实现 ECG(心电图)数据的实时采集、存储至 NAND Flash 闪存以及通过蓝牙 (BLE) 传输文件信息。 ## 更新记录 | 版本号 | 更新内容 | 编写者 | 日期 | |--------|----------|--------|------| | 1.0.3 | 增加文件创建和关闭时间记录,支持通过蓝牙发送文件列表 | 邓维安 | 2026-04-20 | | 1.0.2 | 修复 itoa 隐式声明警告,替换为 snprintf | 邓维安 | 2026-04-17 | | 1.0.1 | 重写文件系统,支持多文件操作 | 邓维安 | 2026-04-15 | | 1.0.0 | 初始 SPI NAND Flash 驱动 | 邓维安 | 2026-04-15 | ## 1. 项目概述 本项目集成了一个完整的 ECG 数据处理链路: - **数据采集**:通过 SPI 接口驱动 MAX30003 传感器获取高精度 ECG 信号。 - **数据存储**:实现了一套针对 W25N04KV NAND Flash 的自定义文件系统 (`nand_fs`),支持文件的创建、写入、读取、删除及列表查询。 - **时间戳管理**:利用 RTC (实时时钟) 为采集的数据和文件提供精确的时间标记。 - **无线传输**:通过蓝牙 Nordic UART Service (NUS) 将存储在 Flash 中的文件列表和相关信息实时传输至上位机。 ## 2. 核心功能 - **MAX30003 ECG 采集**:通过 `protocentral_max30003` 驱动实现心电信号的连续采集。 - **自定义 NAND 文件系统**: - 针对 NAND Flash 特性(页/块结构)设计的轻量级文件系统。 - 支持基本文件操作:`open`, `read`, `write`, `close`, `unlink`, `list`。 - 具备文件统计功能(总容量与已用容量)。 - **实时时钟 (RTC)**:提供年/月/日 时:分:秒 的时间管理,用于文件创建和关闭时间的记录。 - **BLE NUS 通信**:实现透明传输,可通过蓝牙发送文件索引、大小及时间戳信息。 ## 3. 硬件架构 - **主控**:Nordic nRF 系列 SoC (运行 Zephyr RTOS)。 - **存储**:W25N04KV NAND Flash (通过 SPI 接口连接)。 - **传感器**:MAX30003 ECG 前端 (通过 SPI 接口连接)。 - **调试接口**:SEGGER RTT / UART Console。 ## 4. 软件结构 ```text src/ ├── ble_nus.c/h # 蓝牙 NUS 服务实现,负责数据发送 ├── ecg_task.c/h # ECG 数据采集任务 ├── save_ecg_task.c/h # 将 ECG 数据保存至 NAND Flash 的任务 ├── file_task.c/h # 文件管理通用任务 ├── nand_fs.c/h # 自定义 NAND 文件系统逻辑 ├── w25n04.c/h # W25N04 NAND Flash 驱动 ├── real_time.c/h # RTC 时间管理实现 ├── real_time_task.c/h # 时间同步与维护任务 ├── protocentral_max30003.c/h # MAX30003 传感器驱动 ├── max_spi.c/h # 传感器 SPI 传输层 └── linked_list.c/h # 链表工具类 board/ └── *.overlay # 硬件设备树覆盖配置 (SPI, GPIO, RTC 等) ``` ## 5. 配置与编译 ### 依赖项 - Zephyr SDK - nRF Connect SDK (NCS) ### 编译步骤 1. 配置构建目标(例如 `nrf52840dk_nrf52840`)。 2. 执行编译: ```bash west build -b ``` 3. 烧录程序: ```bash west flash ``` ## 6. 使用说明 - **文件保存**:系统在 `REAL` 状态下会自动创建并记录 ECG 数据文件。 - **文件列表查询**:通过蓝牙触发或定时任务,系统会调用 `nand_fs_list` 并通过 BLE NUS 发送当前存储的所有文件详情(名称、大小、创建/关闭时间)。 - **日志查看**:可通过 RTT Viewer 或串口终端查看系统初始化、文件系统挂载及运行状态。