Collect Data(采集数据)功能也可以通过串行 COM 端口启动和停止,但结果将通过 USB BULK 通道发送。为此,使用以下格式:
- 启动数据采集的格式:collect timerPeriod collectFlags channelAddressIDs numDevices
- 每个参数以十进制表示值,格式如下:
- timerPeriod:内部计时器中用于数据采集样本集的延迟(单位为毫秒,无符号 32 位值)。
- collectFlags:一个数据字节,根据以下定义,对于每个寄存器值类型,1 表示收集,0 表示不收集(注意,仅在器件支持时使用能量和充电标志,否则设置为 0):
- VSHUNT = 0b1000000
- VBUS = 0b0100000
- CURRENT = 0b0001000
- POWER = 0b0000100
- channelAddressIDs
- 这是以 LSB 开头的每个地址串连起来的 4 个 LSB。
- 例如,EVM 1 在通道 0x41 上,EVM 2 在通道 0x43 上,这里的值就是 0b00110001
- NumDevices 是串连起来的 EVM 数量 (1-4)。
- 例如,若要开始每 10ms 对 VSHUNT、VBUS、CURRENT 和 POWER 采集一次数据,则对于 EVM 1 SW0 = GND、EVM 2 SW0 = VS、EVM 3 SW0 = SDA、EVM 4 SW0 = SCL 的 4 个 INA236,需要发送:collect 10 108 12816 4
- 对于本例,EVM 会返回 JSON 格式的确认和状态:
{"acknowledge":"collect 10 108 12816 4"}
{"evm_state":"collecting"}
-
注意,对于上面的 rreg 和 wreg 函数,EVM 会在采集时返回“collecting”而非“idle”。
- USB BULK 通道接收如下格式的数据:frameID deviceNumID address registerSize data
- 每个参数以十进制表示值,格式如下:
- frameID(1 字节):始终读为 0。用于确保数据对齐。
- deviceNumID(1 字节):对应于 EVM 编号的 ID 数字:
- 在上例中,若从 EVM 1、EVM 2、EVM 3、EVM 4 读取,此数字分别为 1、2、3、4。
- 地址(1 字节):从器件读取的寄存器地址。
- registerSize(1 字节):后面数据的字节数。
- 数据(一次 1 个字节):字节形式的寄存器数据值,首先是最高有效字节。
- 停止数据采集的格式:stop
- EVM 会返回 JSON 格式的确认和状态:
{"acknowledge":"stop"}
{"evm_state":"idle"}