Skip to content

txp666/HARTLink

Repository files navigation

HARTLink

中文 | English

CH32L103 HART 手操器与 USB 透传固件

Firmware CI Latest release PolyForm Noncommercial 1.0.0

型号 HARTLinkM1 · 固件 V1.0.1 · HART 1200 baud 8O1

ModeSignal 网页上位机

HARTLink 是一套基于 CH32L103 的便携式 HART 调试固件,集成本地 SSD1306 OLED 菜单、旋转编码器操作、基础 HART 只读命令、设备轮询、USB CDC 透传和 USB HID IAP 升级。

项目定位是“小手操器完成简单查看,上位机完成复杂操作”。本机菜单只开放安全、无输入的读取功能;参数写入、维护命令和 DD 相关复杂解析交给上位机,减少现场误操作风险。

本项目采用源码开放、非商业许可。个人学习、研究、实验及非商业组织可以按许可证使用;商业生产、销售、付费集成或用于商业产品需要取得书面授权。详见 LICENSE

实物照片

HARTLink 连接 HART 回路进行现场测量
连接 HART 回路,读取现场设备过程变量
HARTLink 掌上尺寸
掌上尺寸与本机 OLED 操作界面

下载固件

前往 GitHub Releases 下载已编译固件。

文件 用途
HARTLink.hex 完整固件,包含 Bootloader 和应用程序;用于首次烧录或完整恢复
HARTLink_app.hex 仅应用程序;用于设备的 USB HID IAP 升级
HARTLink.bin 应用程序 Bin,供其他烧录工具使用
HARTLink_boot.hex / HARTLink_boot.bin 独立 Bootloader,通常仅开发和维护时使用

当前稳定版本:v1.0.1

主要特性

功能 说明
本地手操 128×64 SSD1306 OLED、旋转编码器、蜂鸣器、中英文菜单
HART 通信 1200 baud、8O1,支持短地址发现、长地址读命令和自适应前导数
基础命令 Cmd0/1/2/3/7/9/12/13/14/15/20/48 等安全只读命令
设备发现 扫描轮询地址 0-15,缓存设备身份和长地址
数据显示 PV/SV/TV/QV、环路电流、量程、状态和常用工程单位
结果滚动 长结果先停留 0.8 秒,再循环滚动,适配小尺寸 OLED
USB 上位机 USB CDC 虚拟串口,原始 HART 帧双向透传
总线保护 上位机通信活跃时本机显示 HOST BUSY,不会抢占 HART 总线
在线升级 常驻 Bootloader,支持 USB HID IAP 和备用 USART1 IAP
参数保存 亮度、蜂鸣器音量和语言保存到独立 Flash 设置区
自动发布 GitHub Actions 自动编译;版本标签自动创建 Release 和固件资产

硬件与软件概览

项目 配置
MCU CH32L103C8T6,RISC-V,48 MHz
显示 SSD1306 OLED
操作 A/B 相旋转编码器、按键、蜂鸣器
HART 物理层 USART2,1200 baud,8 数据位、奇校验、1 停止位
上位机接口 USB CDC,设备名 HARTLink CDC
IAP 接口 USB HID 1A86:FE17,设备名 CH32L103 IAP
备用 IAP USART1,PA9/PA10,115200 8N1

应用与 Bootloader 均使用 48 MHz HSI + USBCLK Div1。HART 串口位于 PCLK1 24 MHz 域,由硬件分频产生 1200 baud。

使用示意

HARTLink 独立 24V 回路与 PLC DCS 回路接线示意

方案 A 中,HARTLink 的红、黑表笔跨接在 250 Ω 回路电阻两端;方案 B 中,表笔并联在 HART 现场仪表两端。接线前请确认回路极性、设备供电、回路负载和现场安全条件。

快速开始

  1. 首次使用时,用 WCH-Link 或常规下载器烧录完整固件 HARTLink.hex
  2. 连接 HART 回路并给设备上电,等待 OLED 显示 HARTLink V1.0.1
  3. 长按编码器进入主菜单,选择 Device -> Scan 0-15 搜索现场设备。
  4. 找到设备后,可在 HART CmdsPollingDiagnostics 中查看基础变量和状态。
  5. 需要 DD、写参数或维护操作时,通过 USB 连接 ModeSignal 网页上位机,由上位机发送完整 HART 帧。

本机操作

场景 旋转 短按 长按
主页 切换底部快捷操作 执行当前操作 进入主菜单
主菜单 移动选中项 进入页面/执行 返回主页
子页面 移动选中项或调节数值 确认/执行 返回或放弃修改

编码器按键每 5 ms 采样,消抖 30 ms,长按阈值 800 ms。A/B 相通过双边沿 EXTI 和 Gray 状态表解码,机械抖动产生的反向边沿会抵消,每个完整卡点对应菜单一步。

菜单与命令边界

页面 功能
HART Cmds Cmd0/1/2/3/7/12/13/14/15/20 等安全读命令
Device 扫描地址 0-15、刷新身份、修改本地轮询地址、清除缓存
Polling 开关本地轮询、选择 Cmd1/Cmd3、调整周期和轮询地址
Diagnostics Cmd48 附加状态、Cmd9 设备变量状态、清除缓存
System 亮度、蜂鸣器、语言、保存设置、版本信息、IAP 模式

Cmd11/21 需要 Tag 或 Long Tag 输入;Cmd6/17/18/19/22/38 会修改设备状态。本机菜单不提供这些命令,上位机透传仍可发送完整 HART 帧。

本机执行 Cmd1/2/3/9/48 等长地址命令前,必须先通过 Cmd0 或扫描取得设备长地址。尚未发现设备时会显示 SCAN FIRST,避免使用短地址直接读取变量导致无效 ACK。

显示与状态说明

结果使用清晰的字段名和常用缩写:PV、SV、TV、QV 表示四个动态变量;过程值、环路电流、量程、设备状态等信息会按页面空间组合显示。常用 HART 单位会转换为 kPaMPabarpsidegCmA%L/minm3/h 等工程单位,未识别的厂商扩展单位显示为 unit#N

提示 含义
TX CMDx 本机命令已发送
ACK OK 收到对应 ACK,响应码为 0
ACK WARN 收到带数据的设备警告响应,继续显示可解析结果
ACK ERROR 收到非零错误响应
NO RESPONSE 等待 ACK 超时
HOST BUSY 上位机透传活跃,本机命令未发送
SCAN FIRST 尚未取得长地址,需先执行 Cmd0 或扫描

结果超过底部显示宽度时,会先停留 0.8 秒,再以每 0.25 秒一个字符循环滚动,中间保留 3 个空格。

USB 上位机接口

推荐使用 ModeSignal 网页上位机。无需安装桌面客户端,使用支持 Web Serial 的 Chrome 或 Edge 即可连接 HARTLink。

网页连接

  1. 使用 USB 数据线连接电脑与 HARTLink,等待系统识别 HARTLink CDC 虚拟串口。
  2. 在 Chrome 或 Edge 中打开 https://modusignal.cn/。Web Serial 需要 HTTPS 或 localhost 环境。
  3. 点击页面的串口连接按钮,在浏览器授权窗口中选择 HARTLink CDC 对应的 COM 口。
  4. 连接成功后设置轮询地址,先执行设备扫描或 Cmd0,再进行变量读取、轮询或其他上位机操作。
  5. 使用本机菜单前先停止上位机轮询;上位机仍在通信时 OLED 会显示 HOST BUSY

正常运行时设备枚举为 HARTLink CDC。除版本查询外,CDC 收到的数据会按原始字节透传到 HART 物理层,HART 返回数据也会原样上传。

查询型号和版本:

TX: HARTLINK:VERSION?\r\n
RX: HARTLINK:VERSION=V1.0.1;MODEL=HARTLinkM1\r\n

命令末尾可使用 \r\n\n 或不带换行。只有整段数据精确匹配查询命令时才由本机响应,其余内容保持透传。建议在当前 HART 请求/响应结束后查询,避免设备信息与现场响应混在同一数据流中。

上位机通信优先级高于本机命令。USB 最近有输入或仍有待转发数据时,本机不会抢占总线,也不会执行 Flash 擦写。

IAP 升级

推荐使用仓库内的 WCHMcuIAP_WinAPP.exe 或 WCH 官方 IAP 工具:

  1. System -> IAP Mode 进入升级模式;也可以按住编码器上电。
  2. 设备重新枚举为 CH32L103 IAP,VID/PID 为 1A86:FE17
  3. 工具选择 USB HID,加载 HARTLink_app.hex 并下载。
  4. 下载完成后 Bootloader 自动启动应用,设备重新枚举为 HARTLink CDC

不要用 WCHISPStudio 下载 HARTLink_app.hex。WCHISPStudio 使用芯片 BootROM ISP 协议,本项目的应用升级使用自带 Bootloader 的 IAP 协议。

按住编码器进入 IAP 后,蜂鸣器短响两次,Bootloader 会一直停留在升级模式,直到下载完成或设备重新上电。

串口 IAP 排查

USART1 备用通道使用 PA9/PA10、115200 8N1。若串口 IAP 工具在擦除阶段提示读取长度错误,可先关闭占用串口的软件,再运行:

powershell -NoProfile -ExecutionPolicy Bypass -File tools/iap_probe.ps1 -Port COM17

正常返回:

RX(6): AA 55 00 00 55 AA
ACK OK

Flash 布局

区域 地址 说明
Bootloader 0x0000-0x4FFF 常驻启动和 IAP
应用程序 0x5000-0xF7FF HARTLink 主固件
设置区 0xF800-0xFFFF 亮度、音量、语言
IAP 请求页 0x08004F00,256 B Bootloader 分区内的升级请求标志

设置区与应用区分离,保存参数和应用升级不会相互覆盖。

从源码构建

环境

  • Windows 10/11
  • MounRiver Studio 2 自带的 WCH RISC-V Embedded GCC,或兼容的 riscv-none-embed-* 工具链
  • GNU Make
  • PowerShell 5 或更高版本

默认 Makefile 使用以下工具链目录:

C:/MounRiver/MounRiver_Studio2/resources/app/resources/win32/components/WCH/Toolchain/RISC-V Embedded GCC/bin

编译完整固件:

make all

使用其他工具链目录:

make all TOOLCHAIN="D:/toolchains/riscv/bin"

当前验证的固件大小:

app:  text=42884 data=96  bss=6908
boot: text=7440  data=56  bss=1856

CI 与发布

GitHub Actions 在每次 push、Pull Request 和手动触发时构建固件,并上传 Actions Artifact。推送 v* 标签会自动创建 GitHub Release,并发布完整固件、应用固件和 Bootloader 文件。

git tag -a v1.0.2 -m "Release v1.0.2"
git push origin v1.0.2

工作流配置见 .github/workflows/firmware.yml

项目结构

Bootloader/        常驻 Bootloader 与 IAP
Core/              WCH RISC-V 核心支持代码
Debug/             调试支持
Ld/                应用和 Bootloader 链接脚本
Peripheral/        WCH CH32L103 外设库
Startup/           启动文件
User/App/          HART 协议、业务逻辑和 UI
User/Bsp/          OLED、编码器、蜂鸣器、USB、HART 物理层
User/Drv/          SSD1306 驱动与字体
User/Sys/          系统初始化、时钟和任务调度
tools/             固件合并和 IAP 诊断脚本

参与贡献

欢迎提交 Issue 和 Pull Request。建议修改保持以下原则:

  • 小手操器只承担简单、明确、低风险的查看操作。
  • 写入、维护、DD 解析等复杂操作保留给上位机。
  • 不降低上位机透传优先级,不让本机 UI 抢占现场总线。
  • 修改 Flash 布局、Bootloader 或 HART 写命令时,需要说明兼容性和现场风险。

许可证

HARTLink 自研固件、软件、文档、图片、硬件设计文件及衍生产品资料采用 PolyForm Noncommercial License 1.0.0,仅允许非商业用途。商业使用、生产销售、转售、付费集成或用于商业产品/服务,需获得版权所有者的单独书面授权。

Core/Peripheral/Startup/ 及其他带 WCH 版权头的文件属于南京沁恒微电子提供的第三方代码,继续适用文件内原始声明,不因本项目许可证而重新授权;相关代码仅可用于南京沁恒生产的微控制器。

免责声明

本项目按“现状”提供,不附带任何保证。HART 设备可能连接实际工业过程,使用前应确认回路、设备地址、命令类型和安全条件。涉及参数写入、量程修改、回路测试或维护模式的操作,应由具备相应权限和经验的人员执行。

About

Portable CH32L103 HART handheld communicator and USB CDC bridge with OLED UI, safe reads, polling, IAP, and ModeSignal web host.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages