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