Collect Data 功能会根据指定的设置,读取所需的结果寄存器并发送相关数据。此功能在连续转换模式下性能最佳,但不能为您配置 EVM 或相关的寄存器设置。收集模式通过串行 COM 端口启动和停止,但通过 USB BULK 通道发送结果。若要使用此模式,请使用以下格式:
- 启动数据采集的格式:collect timerPeriod collectFlags channelAddressIDs numDevices
- 收集始终以小写形式完成,并且每个参数均以十进制表示值,格式如下:
- timerPeriod
- MCU 中用于数据收集样本集的计时器延迟(单位为 µs,无符号 32 位值)。
- collectFlags
- 根据以下定义,一个数据字节具有 1(表示要收集每个寄存器值类型)和 0(表示不收集每个寄存器值类型):
- VSHUNT = 0b1000
- VBUS = 0b0100
- CURRENT = 0b0010
- POWER = 0b0001
- channelAddressIDs
- 这是以 LSB 开头的每个 I2C 地址串连起来的 4 个 LSB。
- 例如,如果 EVM 1 在地址 0x41 上,EVM 2 在通道 0x43 上,这里的值就是 0b00110001
- NumDevices
- 例如,要每 2.2ms 开始进行一次 VSHUNT 和 VBUS 数据收集,则对于 EVM 1 地址 = 0x41 和 EVM 2 地址 = 0x43 的两个 INA231EVM,发送:collect 2200 12 49 2。
- 对于本例,EVM 会返回 JSON 格式的确认和状态:
- {"acknowledge":"collect 2200 12 49 2"}
- {"evm_state":"collecting"}
- USB BULK 通道接收如下格式的数据:frameID deviceNumID address registerSize data
- 每个参数以十进制表示值,格式如下:
- frameID(1 个字节)
- deviceNumID(1 个字节)
- 对应于 EVM 编号的 ID 数字:
- 在上面的示例中,如果从地址设置为 0x41 的 EVM 1 读取,该值将为 1,如果从地址设置为 0x43 的 EVM 2 读取,该值将为 2。
- address(1 个字节)
- registerSize(1 个字节)
- data(一次 1 个字节)
- 停止数据采集的格式:stop
- 其中 stop 始终为小写。
- EVM 返回 JSON 格式的确认和状态:
- {"acknowledge":"stop"}
- {"evm_state":"idle"}