描述
<h1><strong>基于 <code>WCH CH584/CH585</code> 的 <code>2.4G</code> 星型无线链路模块</strong></h1>
<h2><strong>1. 项目描述</strong></h2>
<p>本项目为一个可插拔的无线链路模块。
项目核心职责如下:</p>
<ul>
<li>提供单跳 <code>2.4G</code> 无线链路接入能力</li>
<li>提供 <code>1:1</code> 和 <code>1:N</code> 两类工作模式</li>
<li>提供地址化、分组化、时隙化的数据转发能力</li>
<li>对链路层传输可靠性负责</li>
<li>通过统一控制面向上位机和外部 MCU 提供配置、状态和管理能力</li>
</ul>
<p>项目默认不承担以下职责:</p>
<ul>
<li>不解析业务语义</li>
<li>不保证应用层事务一致性</li>
<li>不实现多跳自组网</li>
<li>不使用 <code>AT</code> 指令作为正式对外接口</li>
</ul>
<h2>2. 模块拆分</h2>
<h3>2.1 StarBus 模式</h3>
<p>负责 <code>1:N</code> 一主多从组网模式。</p>
<p>职责如下:</p>
<ul>
<li>主站建网与调度</li>
<li>从站入网、挂起、恢复、离线处理</li>
<li>超帧与时隙调度</li>
<li>单播、组播、广播的数据转发</li>
<li>控制面可靠传输</li>
<li>周期数据面的汇总确认</li>
</ul>
<p>设计约束如下:</p>
<ul>
<li>正式链路模式使用 <code>LLE_MODE_BASIC</code>(不启用ch584的自动ack)</li>
<li>所有 <code>TX/RX/IDLE</code> 切换由协议/调度层显式控制</li>
<li>组网模式下即使只有 <code>1</code> 个在线节点,也必须保留 <code>join/resume</code> 等待窗口</li>
</ul>
<h3>2.2 RPipe 模式</h3>
<p>负责 <code>1:1</code> 直连透传模式。</p>
<p>职责如下:</p>
<ul>
<li>单播可靠透传</li>
<li>低交互路径的数据转发</li>
<li>面向“无线串口替代线缆”的快速链路</li>
</ul>
<p>设计约束如下:</p>
<ul>
<li>当前实现以直连块级门控与可选可靠传输为主</li>
<li>可启用 <code>ack/retry/seq/dedup</code></li>
<li>不承担 <code>1:N</code> 时隙调度职责</li>
</ul>
<h2>3. 系统组成</h2>
<p>系统由以下部分组成:</p>
<ol>
<li>网关模块
<ul>
<li>连接 <code>PC</code></li>
<li>负责建网、调度、收集节点数据、下发控制命令</li>
<li>当前对 PC 的主接口为 <code>USB CDC ACM</code></li>
</ul></li>
<li>节点模块
<ul>
<li>连接本地 <code>PCB/MCU</code></li>
<li>负责接入组网、按调度收发数据</li>
<li>当前对本地控制器的主接口为 <code>UART</code></li>
</ul></li>
<li>上位机
<ul>
<li>通过统一控制面完成模式配置、参数管理、状态查询和日志采集</li>
</ul></li>
<li>本地业务 MCU
<ul>
<li>通过统一控制面或数据面驱动模块</li>
</ul></li>
</ol>
<h2>4. 工作模式</h2>
<h3>4.1 直连模式</h3>
<p>适用于:</p>
<ul>
<li>单设备无线串口透传</li>
<li>近距离替代串口线</li>
<li>上层没有独立协议的场景</li>
</ul>
<p>特征如下:</p>
<ul>
<li>单主单从</li>
<li>追求吞吐和低交互延迟</li>
<li>可选启用可靠透传</li>
<li>由 <code>RPipe</code> 负责</li>
</ul>
<h3>4.2 组网模式</h3>
<p>适用于:</p>
<ul>
<li>日志采集</li>
<li>周期性传感器上报</li>
<li>一主多从统一调度</li>
<li>分组广播控制</li>
</ul>
<p>特征如下:</p>
<ul>
<li>一主多从,最大 <code>64</code> 个地址位,主站 <code>sid=0</code>,从站 <code>sid=1..63</code></li>
<li>基于超帧和时隙调度</li>
<li>活跃节点驱动上行时隙长度</li>
<li>保留空闲 <code>join/resume</code> 窗口以支持动态扩容</li>
</ul>
<h2>5. 可靠性边界</h2>
<p>项目不追求“所有业务全部强可靠”,而采用分级策略。</p>
<h3>5.1 控制面强可靠</h3>
<p>适用对象:</p>
<ul>
<li><code>JOIN</code></li>
<li><code>RESUME</code></li>
<li><code>SUSPEND</code></li>
<li><code>CTRL_REQ / CTRL_RSP</code></li>
<li>关键参数下发</li>
</ul>
<p>机制:</p>
<ul>
<li><code>txid + seq</code></li>
<li><code>ACK/RSP</code></li>
<li>有界重传</li>
<li>去重</li>
</ul>
<h3>5.2 单播数据可选可靠</h3>
<p>适用对象:</p>
<ul>
<li>关键状态同步</li>
<li>低频重要数据</li>
<li>特定配置类业务</li>
</ul>
<p>机制:</p>
<ul>
<li>仅支持单播</li>
<li>由发送方显式设置可靠标志</li>
<li>达到重试上限后返回失败</li>
</ul>
<h3>5.3 周期数据面尽力送达</h3>
<p>适用对象:</p>
<ul>
<li>日志批量上报</li>
<li>周期传感器数据</li>
<li>高频上报流量</li>
</ul>
<p>机制:</p>
<ul>
<li>默认不做逐帧强确认</li>
<li>周期末由网关统一发送 <code>ACK_SUMMARY</code></li>
</ul>
<h3>5.4 组播/广播尽力送达</h3>
<p>适用对象:</p>
<ul>
<li>组播控制</li>
<li>广播通知</li>
</ul>
<p>机制:</p>
<ul>
<li>默认不做逐节点即时 <code>ACK</code></li>
<li>如确需确认,采用“组播发布 + 后续轮询确认”两阶段方式</li>
</ul>
<h2>6. 超帧与调度原则</h2>
<p><code>StarBus</code> 组网模式下,主站统一调度超帧。推荐超帧结构如下:</p>
<ol>
<li><code>BEACON</code></li>
<li>下行控制/数据槽</li>
<li>上行数据槽</li>
<li><code>ACK_SUMMARY</code> 槽</li>
<li><code>ACK/RSP</code> 微槽</li>
<li><code>RETRY</code> 保留槽</li>
<li><code>JOIN/RESUME</code> 槽</li>
</ol>
<p>设计原则如下:</p>
<ul>
<li>时延主要随活跃节点数增长,而非随总注册节点数增长</li>
<li>空闲监听槽数量始终保留最小可配置值</li>
<li>单节点在线时仍保留组网等待窗口,不退化为独占链路</li>
<li>节点主动挂起后不占时隙,但保留节点信息</li>
<li>节点恢复时在 <code>join/resume</code> 槽快速请求恢复</li>
</ul>
<h2>7. 对外接口设计</h2>
<p>本项目作为模块供其他项目使用,对外接口必须统一、可扩展、可远程转发。</p>
<h3>7.1 接口分层</h3>
<p>定义三类对外接口:</p>
<ul>
<li>数据面
<ul>
<li>用于业务数据传输</li>
</ul></li>
<li>控制面
<ul>
<li>用于配置、管理、状态查询、动作触发</li>
</ul></li>
<li>事件面
<ul>
<li>用于异步状态上报</li>
</ul></li>
</ul>
<h3>7.2 统一控制面原则</h3>
<p>所有正式配置和管理动作统一走 <code>CTRL_REQ / CTRL_RSP</code>,不引入 <code>AT</code> 指令。</p>
<p>统一控制面同时服务于:</p>
<ul>
<li><code>PC -> 网关模块</code></li>
<li><code>本地 MCU -> 节点模块</code></li>
<li><code>网关 -> 远端节点</code></li>
</ul>
<h3>7.3 目标类型</h3>
<p>控制命令支持三类目标:</p>
<ul>
<li><code>LOCAL</code>
<ul>
<li>作用于本机模块</li>
</ul></li>
<li><code>REMOTE_NODE</code>
<ul>
<li>作用于指定 <code>sid</code></li>
</ul></li>
<li><code>GROUP</code>
<ul>
<li>作用于指定组</li>
</ul></li>
</ul>
<h3>7.4 场景化配置模型</h3>
<p>对外配置采用“场景 + 参数表 + 动作命令”模型。</p>
<p>场景示例:</p>
<ul>
<li><code>P2P_TRANSPARENT</code></li>
<li><code>STARBUS_COLLECT</code></li>
<li><code>STARBUS_MIXED</code></li>
</ul>
<p>这样做的目的:</p>
<ul>
<li>降低用户直接配置底层时序细节的风险</li>
<li>保留统一外部接口</li>
<li>便于后续上位机做模板化配置</li>
</ul>
<h3>7.5 操作类型</h3>
<p>控制面固定以下操作:</p>
<ul>
<li><code>GET</code></li>
<li><code>SET</code></li>
<li><code>COMMIT</code></li>
<li><code>LOAD_DEFAULT</code></li>
<li><code>ACTION</code></li>
<li><code>SUBSCRIBE</code></li>
</ul>
<p>说明如下:</p>
<ul>
<li><code>GET/SET</code>:用于参数访问</li>
<li><code>COMMIT</code>:持久化当前配置</li>
<li><code>LOAD_DEFAULT</code>:恢复默认配置</li>
<li><code>ACTION</code>:执行命令动作</li>
<li><code>SUBSCRIBE</code>:订阅事件流</li>
</ul>
<h3>7.6 参数类别</h3>
<p>参数分为四类:</p>
<ul>
<li>运行时参数
<ul>
<li>可立即生效</li>
</ul></li>
<li>会话参数
<ul>
<li>本次上电有效,重启丢失</li>
</ul></li>
<li>持久参数
<ul>
<li>需显式 <code>COMMIT</code></li>
</ul></li>
<li>只读状态
<ul>
<li>不可直接写入</li>
</ul></li>
</ul>
<h2>8.当前项目状态</h2>
<p>目前软件正在开发板上推进,硬件设计暂缓。</p>
<table>
<tr>
<th>模块</th>
<th>状态</th>
<th>说明</th>
</tr>
<tr>
<td><code>USB CDC ACM</code></td>
<td>可用</td>
<td>主/从设备均可枚举,网关主控入口已接通</td>
</tr>
<tr>
<td><code>UART BSP</code></td>
<td>可用</td>
<td><code>78MHz</code> 下基础收发已验证,RX 路径已收敛为 ISR 独占硬件 FIFO</td>
</tr>
<tr>
<td><code>ulog</code></td>
<td>可用</td>
<td><code>TMOS</code> 任务驱动,支持 <code>UART/USB</code> 后端</td>
</tr>
<tr>
<td><code>StarBus</code></td>
<td>联调中</td>
<td>主从入网、控制面、周期确认路径已具备</td>
</tr>
<tr>
<td><code>RPipe</code></td>
<td>联调中</td>
<td>direct 基础通路 + mesh 端到端已通,时序优化中</td>
</tr>
<tr>
<td><code>data_plane_task</code></td>
<td>联调中</td>
<td>新增统一数据面,mesh 7/16/29 PASS,direct 1/64/180 PASS</td>
</tr>
<tr>
<td><code>mode_manager</code></td>
<td>可用</td>
<td>事件驱动模式编排,cfg_changed 回调注册正常</td>
</tr>
<tr>
<td><code>io_port</code></td>
<td>可用</td>
<td>5 个适配器均实现完整接口</td>
</tr>
<tr>
<td><code>I2C</code></td>
<td>待硬件验证</td>
<td>驱动就绪,尚未完成外设联调</td>
</tr>
</table>
评论(0)