# RelayArray-64 **Repository Path**: max-uuc/RelayArray-64 ## Basic Information - **Project Name**: RelayArray-64 - **Description**: 8*8固态继电器,控制数据的一个板子 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-23 - **Last Updated**: 2026-07-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RelayArray-64 **版本:1.0.0**(首个正式发布) 8×8 固态继电器矩阵控制板固件与配套文档。MCU 通过 RS-485 接收主机指令,驱动 64 路继电器通道,并支持地址管理、开关寿命统计与报警阈值。 | 项 | 说明 | |----|------| | 仓库 | [gitee.com/max-uuc/RelayArray-64](https://gitee.com/max-uuc/RelayArray-64) | | MCU | STM32F103VET6 @ 72 MHz | | RTOS | FreeRTOS V10.3.1 | | 通信 | RS-485(USART1,115200 8N1) | | 通道 | 8 组 × 8 路(A–H / CH1–8) | | 工具链 | CMake ≥ 3.22 + `arm-none-eabi-gcc`(推荐 CLion) | 英文说明见 [README.en.md](README.en.md)。 --- ## 目录结构 ``` RelayArray-64/ ├── Docs/ # 协议说明、思维导图、Git 协作手册 ├── RelayArray_FW/ # 固件工程(CubeMX + CMake) │ ├── Core/ # CubeMX 生成代码、FreeRTOS 任务入口 │ ├── CppInterface/ # 业务逻辑:协议、继电器、EEPROM │ ├── RTT/ # SEGGER RTT 调试输出 │ ├── Drivers/ # HAL / CMSIS │ ├── Middlewares/ # FreeRTOS │ ├── config/ # OpenOCD(DAPLink / J-Link / ST-Link) │ └── RelayArray_FW.ioc # CubeMX 工程 ├── 问题汇总.md # 已知硬件/丝印问题 ├── README.md └── README.en.md ``` --- ## 功能概览(v1.0) - 单路 / 整组 / 全板继电器开合控制 - 固定 8 字节二进制帧协议(帧头 `0xFA` + 校验和) - 设备地址设置与广播寻址;主站可扫描在线从站 - 开关次数读写、寿命报警阈值与报警状态查询 - M24C64 EEPROM 持久化(软 I2C) - FreeRTOS 双任务:串口协议处理 + 硬件周期刷新 协议细节与示例帧见 [Docs/固态继电器.pdf](Docs/固态继电器.pdf)。 --- ## 快速开始 ### 环境 1. 安装 [GNU Arm Embedded Toolchain](https://developer.arm.com/downloads/-/gnu-rm)(`arm-none-eabi-gcc`) 2. 安装 CMake ≥ 3.22 3. 推荐使用 CLion 打开 `RelayArray_FW/`;也可用命令行配置 ### 编译 ```bash cd RelayArray_FW cmake -B build -DCMAKE_BUILD_TYPE=Debug cmake --build build ``` 产物:`build/RelayArray_FW.elf`(及同目录 `.bin` / `.hex`,视生成器而定)。 ### 下载与调试 `RelayArray_FW/config/` 下提供 OpenOCD 配置: | 文件 | 探针 | |------|------| | `DAPLink.cfg` | CMSIS-DAP | | `JLink.cfg` | SEGGER J-Link(含 RTT TCP 9090) | | `STlink.cfg` | ST-Link | 在 IDE 中选择对应配置,或通过 OpenOCD + GDB 下载到目标板。 ### 通信自检 - 默认从站地址:`0x01`(主站逻辑地址:`0x00`) - 广播地址:`0xFF` - 示例(组 A、CH3 打开):`FA 00 01 00 02 01 00 FE` 更多命令表见协议 PDF,源码常量见 `RelayArray_FW/CppInterface/include/ProtocolAppLayer.h`。 --- ## 软件架构 ``` 主机 (RS-485) │ 8 字节帧 @ 115200 ▼ USART1 + DMA ──► Serial ──► ProtocolAppLayer │ ▼ RelayArrayManager │ ┌─────────────┼─────────────┐ ▼ ▼ ▼ Uln2003Driver M24C64 EEPROM 在线节点表 (64 路 GPIO) (软 I2C) ``` | 模块 | 路径 | 职责 | |------|------|------| | 协议层 | `CppInterface/ProtocolAppLayer.*` | 组帧解析与命令分发 | | 矩阵管理 | `CppInterface/RelayArrayManager.*` | 8×8 状态、寿命、阈值 | | 驱动 | `CppInterface/Uln2003Driver.*` | 分组 GPIO 输出 | | 串口 | `CppInterface/Serial.*` | RS-485 收发、日志 | | 存储 | `CppInterface/M24C64.*` + `soft_i2c.*` | EEPROM | | 任务 | `Core/Src/freertos.c` | `SerialTask` / `HardwareTask` | --- ## 文档 | 文档 | 说明 | |------|------| | [Docs/固态继电器.pdf](Docs/固态继电器.pdf) | 通信协议与命令手册 | | [Docs/固态继电器.xmind](Docs/固态继电器.xmind) | 协议/功能思维导图 | | [Docs/Git协作手册.md](Docs/Git协作手册.md) | 分支、提交、发布与 Tag 约定 | | [问题汇总.md](问题汇总.md) | 已知丝印等问题 | --- ## 版本说明 | 版本 | 说明 | |------|------| | **1.0.0** | 首版:基本开合控制、地址管理、次数/报警、EEPROM、RS-485 协议可用 | 后续变更请按 [Git 协作手册](Docs/Git协作手册.md) 打 Tag(如 `v1.0.1`),并在此表追加一行。 --- ## 参与贡献 简要流程: 1. 从 `master` 拉功能分支(如 `feat/xxx`、`fix/xxx`) 2. 本地编译验证后再提交 3. Push 后在 Gitee 提 Pull Request / Merge Request 4. 合并后由维护者按需打版本 Tag 完整约定见 **[Docs/Git协作手册.md](Docs/Git协作手册.md)**。 --- ## 许可与归属 商业项目仓库,默认仅限授权协作方使用。未单独声明开源许可证时,版权归项目所有者所有。