ZHCAAF8A January   2020  – June 2021

 

  1.   商标
  2. 1引言
  3. 2系统概述
    1. 2.1 软件
    2. 2.2 硬件
  4. 3系统运行
    1. 3.1 HDC2010 传感器读取
    2. 3.2 针对低功耗的 I2C 协议和数据缓冲
  5. 4测试和验证
    1. 4.1 EnergyTrace™ 结果
    2. 4.2 平均电流消耗
    3. 4.3 RAM 中数据缓冲的节能效应
  6. 5总结
  7. 6参考文献
  8. 7修订历史记录

针对低功耗的 I2C 协议和数据缓冲

在本设计中,HDC2010 传感器的多字节读取功能用于减少 I2C 通信时间;表 3-2 中介绍了单字节模式和多字节模式的区别。多字节模式只需要一个带有连续 ACK 请求的读命令即可读出从地址 0x00 开始的 4 个字节。这有助于减小代码大小,缩短 I2C 通信活动时间和降低整体系统功耗。

表 3-1 读取单字节
主器件启动从器件
地址(W)
地址启动从器件
地址 (R)
NACK停止
从器件ACKACKACK数据
表 3-2 读取多字节
主器件启动从器件
地址 (W)
地址启动从器件
地址 (R)
ACKACKNACK停止
从器件ACKACKACK数据数据

图 3-3 中,Saleae LogicPro16 分析仪的上图显示的是多字节读取,其中只读出一个写寄存器地址命令和 4 个字节(湿度和温度值),总时长为 0.1738ms。下图为要读出的每个字节值使用单独的写寄存器地址命令,总共持续 0.409ms。

GUID-76622D1F-6793-4711-9BA2-2C0AF999D5D6-low.png图 3-3 四个字节读取模式的比较(多字节读取位于顶部)

采集到的传感器数据写入用户可配置的数据缓冲区,2 个字节的温度值和 2 个字节的湿度值一个接一个地被存储。当所需的缓冲区长度被数据填满时,例如,20 分钟后 80 字节,每分钟读取 1 次,通知 Arm Cortex-M4F MCU 获取数据缓冲区并将其传输。这显著减少了协议开销,前导码和 SYNC 只有相同的 8 个字节,但现在一次有 80 个字节的有效载荷。

GUID-8AB01231-7F4B-4435-9DBA-0ADA0886F1FD-low.png图 3-4 Sensor Controller Studio 中的温度和湿度数据缓冲器

80 字节的数据缓冲区大小是任意选择的,只是为了进行测试而选择了一个合理的大小。系统设计人员可能会增加缓冲区大小以利用 SCE 内的最大可用 ULL SRAM,其数量接近 3K 字节,请参阅所提供的 CC1352P + HDC2010 传感器控制器引擎项目的资源分配情况。

如果每分钟读取一次 HDC2010 器件,则缓冲区需要存储 4 个字节 × 60 分钟 = 1 小时内 240 个数据字节。通过添加 4 个字节的前导码、4 个字节的 SYNC 字和 2 个字节的连续数据包编号,数据包总长度之和为 250 个字节。包括 wM-Bus 和低功耗蓝牙 (BLE) 在内的多种无线协议使用的数据包长度达 256 字节。

图 3-5 所示为 SCE 通过 I2C 总线与 HDC2010 传感器进行交互的情况,其中显示了通道 0(或 3.3V)上到 I2C 上拉的正脉冲和通道 2 上 HDC2010 器件的通电脉冲(低电平有效)。从断电开始,配置 HDC2010 寄存器,读出传感器数据的总时间仅为 3.36ms。

GUID-4179F5CB-D8B6-486E-84E7-3563CF32AFA9-low.png图 3-5 完成对 HDC2010 的初始 SCE 访问(I2C 上拉、配置、数据读出和断电)

请注意,如果 HDC2010 传感器不是每次都断电而是在两次测量之间保持待机状态,则所有后续数据读数都会更短。这两种解决方案均经过测试,最终固件在两次测量之间使 HDC2010 传感器保持待机模式。由于采用多字节读取模式,这会导致传感器数据读取速度非常快,时长仅为 198µs,如图 3-6 所示。

GUID-CE6A62C6-D5C2-4681-B832-39D323FD9C8F-low.png图 3-6 使用 SCE 定期读取传感器,时长为 198µs