Collect Data 功能会根据指定的设置,读取所需的结果寄存器并发送相关数据。此功能在连续转换模式下性能最佳,但不能配置 EVM 或相关的寄存器设置。收集模式通过串行 COM 端口启动和停止,但通过 USB BULK 通道发送结果。若要使用此模式,请使用以下格式:
- 启动数据采集的格式:collect timerPeriod collectFlags channelAddressIDs numDevices。
- 收集始终以小写形式完成,并且每个参数均以十进制表示值,格式如下:
- timerPeriod
- MCU 中用于数据采集样本集的时间延迟(单位为毫秒,无符号 32 位值)。
- collectFlags
- 一个数据字节,根据以下定义,对于每个寄存器值类型,1 表示收集,0 表示不收集(注意,仅在器件支持时使用能量和充电标志,否则设置为 0):
- VBUS = 0b0100000
- DIETEMP = 0b0010000
- CURRENT = 0b0001000
- POWER = 0b0000100
- ENERGY = 0b0000010
- CHARGE = 0b0000001
- channelAddressIDs
- I2C
- 这是以 LSB 开头的每个地址串连起来的 4 个 LSB。
- 例如,如果 EVM 1 在通道 0x41 上,EVM 2 在通道 0x43 上,这里的值就是 0b00110001。
- NumDevices
- 例如,要每 3.156ms 开始进行一次 VBUS 和 DIETEMP 数据采集,则对于 EVM 1 地址 = 0x44 和 EVM 2 地址 = 0x46 的两个 INA745,用户需要发送:collect 3156 48 100 2。
- 对于本例,EVM 会返回 JSON 格式的确认和状态:
- {"acknowledge":"collect 3156 48 100 2"}
- {"evm_state":"collecting"}
- USB BULK 通道接收如下格式的数据:frameID deviceNumID address registerSize data。
- 每个参数以十进制表示值,格式如下:
- frameID(1 个字节)
- deviceNumID(1 个字节)
- 对应于 EVM 编号的 ID 数字:
- 在上面的示例中,如果从地址设置为 0x44 的 EVM 1 读取,该值为 1,如果从地址设置为 0x46 的 EVM 2 读取,该值为 2。
- address(1 个字节)
- registerSize(1 个字节)
- data(一次 1 个字节)
- 停止数据采集的格式:stop
- 其中 stop 始终为小写。
- EVM 返回 JSON 格式的确认和状态:
- {"acknowledge":"stop"}
- {"evm_state":"idle"}