DKENNY 发表于 2025-7-24 16:00

BMP561 HSC(High Single-Wire Communication)协议拆解:单线通信的秘密!

本帖最后由 DKENNY 于 2025-7-24 16:17 编辑

#申请原创# #技术资源#@21小跑堂

前言
      大家好!最近在研究Geehy的 BMP561 电池电量计芯片时,碰到了一个叫 HSC(高速单线通信)的协议,觉得挺有意思!这玩意儿只用一根线就能让芯片和主控设备“聊”电池数据,省空间又高效,今天和各位简单聊一下这玩意儿。

一、HSC 协议的定义:简单说是个啥?
      HSC(High Single-Wire Communication,高速单线通信)是一种用来让芯片跟主控设备“聊天”的通信方式。它的核心特点是:
          - 只用一根线:不像 I2C 需要两根线(数据 + 时钟)或 UART 需要两根线(发送 + 接收),HSC 只用一根数据线(加上地线),省空间,适合小设备。
          - 双向通信:既能让主设备给芯片发命令(比如“测电池电压”),也能让芯片回传数据(比如“电压是 3.7V”)。
          - 开漏结构:HSC 引脚需要接一个上拉电阻(通常几千欧姆),让线路默认保持高电平(比如 3.3V),芯片只在需要时拉低电平,省电又简单。
          - 数据格式:先发 8 位地址(7 位设备地址 + 1 位读/写标志),再发 8 位或 16 位数据(HSC8 或 HSC16 模式)。
      通俗来讲,HSC 就像用一根电话线跟朋友聊天,聊的内容有固定格式:先说“找谁”(地址),再说“干啥”(读或写),最后传具体内容(数据)。整个过程高效、省线、省电,特别适合电池管理这种需要实时监控的场景。

二、HSC 协议为啥存在?有啥用?
      HSC 协议是为像 BMP561 这样的电池电量计芯片量身定做的,目标是:
      - 省空间:只用一根线,电路板设计更简单,适合手机、手表、耳机这种空间紧凑的设备。
      - 省电:BMP561 本身超低功耗(睡眠模式 8μA),HSC 协议也得省电,减少通信时的电流消耗。
      - 高效:名字叫“高速”,说明数据传得快,适合实时读取电池电压、电流、剩余容量等。
      - 可靠:支持错误检测和中断,确保数据不传错,通信完成后还能通知主设备。

   应用场景:
      - 手机或手表里,HSC 让 BMP561 每秒把电池状态(比如 80% 电量)传给主控芯片,更新屏幕显示。
      - 设置 BMP561 的工作模式(比如“每秒测一次电压”)。
      - 支持多电池管理(7 位地址允许多个设备挂在同一根线上)。
      - 安全认证(BMP561 支持 SHA-256,HSC 可能传认证数据)。

三、HSC 协议怎么工作?(快递员送信版)
      为了让第一次接触这玩意儿的兄弟更好理解,这里把 HSC 协议的通信过程通俗比喻成“快递员送信”。BMP561 是“数据工厂”,主控芯片(MCU)是“收件人”,HSC 协议是快递员的送货规则。

1. 硬件基础:开漏 + 上拉电阻
      - 开漏结构:HSC 引脚是“开漏”(Open-Drain),意思是芯片不会主动把线路拉高(比如 3.3V),只能拉低(0V)。高电平靠外部的上拉电阻(接电源)维持。
          - 比喻:像水管没水泵,靠外部“弹簧”(上拉电阻)把水位拉高。
          - 为啥这样?省电!芯片只在需要时拉低电平,平时让电阻维持高电平。
      - 单线:只有一根 HSC 引脚负责收发数据(加上地线,电源线可能也需要,具体看电路)。
      - 空闲状态:没通信时,HSC 引脚被上拉电阻拉到高电平(比如 3.3V)。


2. 数据怎么传?(时序和格式)
      HSC 的数据传输靠高低电平的时间长短来表示 0 和 1(具体时间由协议定义,比如短脉冲是 0,长脉冲是 1)。数据包分两部分:
      1. 地址帧(8 位):
         - 前 7 位:设备地址(比如 BMP561 的地址`1011001`,区分多个设备)。
         - 第 8 位:读/写标志(0 = 写,1 = 读)。
         - 比喻:像信封上的收件人地址和“寄/取”标签。
    2. 数据帧(8 位或 16 位):
         - 写操作:主设备发 8 位或 16 位数据给 BMP561(比如“测电压”命令)。
         - 读操作:BMP561 回传 8 位或 16 位数据(比如电压值 3.7V)。
         - 比喻:像信里的具体内容。


3. 通信流程:一步步拆解
      假设 MCU 想从 BMP561 读电池电压,HSC 协议的步骤是:
       1. 启动通信(快递员敲门):
         - MCU 拉低 HSC 引脚一段时间(比如 tHW1,协议定义的启动检测时间),告诉 BMP561:“我要开始通信了!”
         - 然后发 8 位地址帧,比如`1011001 | 1`(地址`1011001`,读标志 1),表示“我要读你的电压寄存器”。
       2. BMP561 响应(工厂准备包裹):
         - BMP561 检测到启动信号和地址帧,确认是找自己(地址匹配)且是读命令。
         -它从内部寄存器(比如电压寄存器)取出数据(比如 3.7V,换算成二进制可能是`00001110`)。
       3. 数据传输(快递员送包裹):
         - BMP561 通过 HSC 引脚把数据发回 MCU(8 位或 16 位,取决于 HSC8 或 HSC16 模式)。
         - 数据是一位位(bit)发的,0 和 1 用高低电平时间表示(比如短时间低电平 = 0,长时间低电平 = 1)。
         - 比喻:快递员按顺序把包裹里的东西一件件递给你。
       4. 错误检查和中断(签收包裹):
         - HSC 支持错误帧检测(比如校验和或 CRC),确保数据没传错。
         - 传输完,BMP561 可能触发中断信号(比如拉低 HSC 引脚),通知 MCU:“数据送完了!”
         - MCU 收到数据,检查无误后处理(比如显示“3.7V”)。
       5.结束或重置(快递员回家或换新任务):
         - 通信结束,HSC 引脚被上拉电阻拉回高电平,进入空闲状态。
         - 如果通信出错或想重新开始,MCU 可以发送Break 信号(拉低 HSC 引脚超过 190us,即tB时间),重置通信。
         - 重置后,等 40us(恢复时间),就能开始下一次通信。

4. Break 信号:重启通信的“杀手锏”
      - 如果通信卡住了(比如 BMP561 没回应),MCU 可以拉低 HSC 引脚超过 190us(tB),强制重置。
      - 比喻:像按下电脑的重启键,强迫所有人重新开始。
      - 40us 后(恢复时间),可以发起新通信。


四、HSC 协议的时序图
      我这里画一个简化的 HSC 时序图,展示读操作的信号变化。假设高电平是 3.3V,低电平是 0V,0 和 1 用不同时间长度表示(具体可见手册)。


      说明:
      - 空闲:HSC 引脚被上拉电阻拉到高电平(3.3V)。
      - Start:MCU 拉低引脚 tHW1 时间,启动通信。
      - Address+R/W:发送 8 位(7 位地址 + 1 位读/写,1=读)。
      - Data:BMP561 回传 8 位电压数据(比如 00001110)。
      - ACK:BMP561 拉低引脚,表示传输完成(中断)。
      - Break(未画出):如果出错,拉低 >190us (tB) 重置。
      注:具体时间(tHW1、tB等)还是得看 BMP561 数据手册,可能以微秒为单位。

五、HSC 协议的优点和局限性

优点

优点
描述

超省线
只用一根线(HSC 引脚),电路设计简单,特别适合空间紧凑的设备,比如 TWS 耳机。

高速
名字叫“高速”,可能比传统单线协议(如 1-Wire,速度几十 kbps)快,可能达到几百 kbps。

省电
开漏结构结合 BMP561 超低功耗(深睡模式 8μA),非常适合电池供电的设备。

可靠
支持错误帧检测(防止数据传错)和中断(通知传输完成),通信稳定可靠。

灵活
支持 8 位或 16 位数据传输,适应不同场景;7 位地址支持多个设备挂在同一根线上。


局限性

局限性
描述

非标准协议
HSC 可能是 Geehy 专有协议,公开资料少,需要查官方数据手册或联系技术支持。

单线限制
单线通信速度可能不如多线协议(像 SPI),长距离传输可能会有信号衰减。

需要上拉电阻
电路需要额外加一个上拉电阻,略增加成本(不过电阻很便宜)。

调试复杂
新手可能需要示波器或逻辑分析仪看信号,调试得依赖数据手册。


六、HSC 协议 vs. 其他协议(I2C 和 UART)
      这里对比一下 BMP561 支持的 I2C 和 UART,让你更清楚 HSC 的定位:

      1. I2C(Inter-Integrated Circuit)
         - 硬件:两线(SDA 数据 + SCL 时钟),也需要上拉电阻。
         - 速度:BMP561 支持 100/400kHz。
         - 特点:支持多设备(地址机制),适合短距离。
         - 和 HSC 对比:
         - I2C 用两根线,HSC 只要一根,更省引脚。
         - HSC 可能更简单(无时钟线),但速度可能不如 I2C 的 400kHz(具体看实现)。
         - I2C 是标准协议,资料多;HSC 资料少。
      2. UART(通用异步收发器)
         - 硬件:两线(TX 发送 + RX 接收),无需上拉电阻。
         - 速度:可调波特率(几千到几百万 bps)。
         - 特点:点对点,适合长距离,需约定波特率。
         - 和 HSC 对比:
         - UART 两根线,HSC 一根,HSC 更省空间。
         - UART 没地址机制,HSC 有 7 位地址,支持多设备。
         - HSC 可能为电池管理优化,UART 更通用。
      3. HSC 的独特之处:
         - 单线设计,超省空间。
         - 针对电池管理优化(比如 BMP561 的电压、电流传输)。
         - Break 信号和中断机制,通信更灵活可靠。

七、HSC 协议的实际应用
      HSC 协议在 BMP561 的电池管理场景中大显身手:
      - 实时监控:手机、手表用 HSC 读 BMP561 的电池电压(3.7V)、电流(100mA)、剩余容量(80%)。
      - 配置芯片:通过 HSC 设置 BMP561 的测量频率或模式(比如“省电模式”)。
      - 多电池管理:7 位地址支持多颗 BMP561 挂在同一根线上,适合并联电池。
      - 安全认证:传输 SHA-256 认证数据,确保电池通信安全。

八、新手怎么上手 HSC 协议?
      1. 查数据手册:去Geehy官网下载 BMP561 数据手册,里面有 HSC 的详细时序、速率、引脚定义。
      2. 用评估板:Geehy的 BMP561EVM 评估板支持 HSC 接口,买一块接上电池和 MCU 实验。
      3. 学类似协议:HSC 和 I2C 有点像,先学 I2C(网上教程多,比如 Arduino I2C 库),HSC 应该差不多。
    4. 调试工具:用示波器或逻辑分析仪看 HSC 引脚的波形,确认高低电平时间(tHW1、tB等)。
      5. 问技术支持:Geehy有社区或技术支持,资料少时可以直接问。

九、总结:HSC 协议的核心要点
      - 是什么:HSC 是一种单线、双向、开漏的通信协议,用于 BMP561 和主控芯片交换电池数据。
      - 怎么工作:通过高低电平时间传数据,先发 8 位地址(7 位地址 + 读/写),再传 8/16 位数据,支持 Break 重置和中断。
      - 优点:省线、省电、高速、可靠,适合电池管理。
      - 局限:非标准协议,资料少,调试需官方支持。
      - 建议:查数据手册,用评估板实验,必要时问Geehy技术支持。

      这玩意儿我也是第一次接触哈,以上仅是我个人学习的一些总结,有啥问题或补充,欢迎讨论交流。
      这里补上BMP561的一些资料,官网上有,也可以直接去官网上获取。

1.
2.



寂静小夜曲 发表于 2025-7-29 07:24

感觉挺像是脉宽调制的实现方式。
页: [1]
查看完整版本: BMP561 HSC(High Single-Wire Communication)协议拆解:单线通信的秘密!