This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] BQ76972:有关事务之间延迟的问题。

Guru**** 2470860 points
Other Parts Discussed in Thread: EV2400

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1545998/bq76972-issue-regarding-the-delay-in-between-the-transaction

器件型号:BQ76972
主题中讨论的其他器件:EV2400

工具/软件:

TI 团队大家好、

我使用 STM32U535RET6 作为主机控制器、使用支持 CRC 的事务通过 SPI 与 BQ7697204 AFE 进行通信。 主机 SPI 时钟在配置 1.25MHz  

SPI 事务序列如下所示:

SPI_SLAVE_SELECT(复位)

HAL_SPI_TransmitReceive (&hspi2、SPI_Tx、SPI_Rx、3、HAL_MAX_DELAY);

SPI_SLAVE_SELECT (SET);

delay_us (800);

SPI_SLAVE_SELECT(复位)

HAL_SPI_TransmitReceive (&hspi2、SPI_Tx、SPI_Rx、3、HAL_MAX_DELAY);

SPI_SLAVE_SELECT (SET);

例如、要读取 CellVoltage1、我在第一个事务中发送地址字节 0x14、0x00 和 CRC 字节、然后重复同一事务以接收电压数据。

当我将事务间延迟降低到 200µs 或 500µs 时、AFE 的读数会变得非常不稳定并且变化频繁。 即使存在 800µs 延迟、我仍然会观察到偶尔出现的异常值、但与较短的延迟相比、它们的频率要低得多。

由于我的 AFE 读取任务每 100ms 运行一次 、并且我需要获取所有 16 个电芯电压、3 个温度、电流和各种状态寄存器、因此 800µs 到 1000µs 或更高的巨大延迟会显著增加开销、这对于我的应用来说是不可接受的。

我希望获得有关如何在不影响与 AFE 的 SPI 通信可靠性的情况下降低此类事务间延迟的指导。




此致、

Sai Varun。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sai、

    我还没有见过缩短这一运行时间的方法、但让我与我的团队商量并返回给您。

    但是、我有一个简短的问题。

    您不使用 I2C 进行通信的原因是否有任何特别的原因? I2C 将减少执行相同操作所需的事务、并且如果利用器件内的时钟延展、则等待操作完成所花费的时间将最小化。 此外、它还支持块读取和写入。 切换到 I2C 可能会更适合您的应用。

    此致、
    Rohin Nair

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Rohin:

    我们选择 SPI 是因为 AFE (BQ7697204) 中 SPI 的最大工作频率为 2MHz、而对于 I2C、则为 400kHz。

    此致、

    Sai Varun

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sai、

    是的、SPI 的最大工作频率更高、但我们器件上的 I2C 速度更快。 所需的事务更少、并且如前所述、I2C 支持块读取/写入。

    对于您的上述问题、我没有找到任何在 SPI 上缩短此运行时间的方法。

    此致、

    Rohin Nair

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Rohin、

    我明白了你的观点。 现在、当前架构在 SPI 上进行构建和测试。 将其更改为 I2C 有点困难。  

    您能告诉我、这两者之间需要给出什么延迟、以便避免从 AFE 获得的读数波动。 或者、您能告诉我它的计算结果是怎样的吗? 由于我已经在 MSP430 控制的 EV2400 与 AFE 通信时验证了 SPI 线路、因此仅提供 232us、并且读数没有观察到波动。 但在我的例子中、即使我给 800us、我也会得到异常值。 如果我将这段时间缩短到 250uS 的频率、这些错误读数会迅速增加。

    此致、

    Sai Varun。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sai、

    让我看看这一点,明天回来回答。

    此致、

    Rohin Nair

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sai、

    我对您通过探测 SPI 线路来读取的这个时间很好奇。 您可以查看任何波形吗? 还是逻辑分析仪文件?

    要回答您的问题、很遗憾、在计算所需的确切延迟方面没有具体的方法、因为这会因您构建的系统而异。 为了获得可靠的数据、我们通常建议大约 2ms 的延迟。

    此外、我建议您访问 第 3.1 节 并尝试使用其中显示的方法从子命令读取数据。 它将有助于最大限度地减少总线流量、并有助于解决您的问题。

    如果您有任何其他问题或有任何疑问、敬请告知。

    此致、

    Rohin Nair

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Rohin:  

    我附上逻辑分析仪文件、该文件是在 MSP430 控制的 EV2400 与 AFE (BQ7697204) 通信时通过探测 SPI 线路生成的。  



    如前所述、是否可以使用子命令获取电压、电流和温度数据? 我无法使用 subcommands.e2e.ti.com/.../BQStudio-Timing.zip 获取这些读数



    此致、

    Sai Varun。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sai、

    是的、可以获取电压、电流和温度。 您是否尝试使用 TRM 中表 12-23 所示的相应子命令?

    感谢您附加逻辑分析仪文件。 请给我一些时间进行演示并查看一下。

    此致、

    Rohin Nair

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Rohin:

    是否对逻辑分析仪文件进行了任何更新?

    我已经检查了您提到的相应子命令、所有这些子命令都返回相应读数的 ADC 值。 但我需要计算值。

    此致、

    Sai Varun。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sai、

    我仍在研究逻辑分析仪文件。 请给我一些时间。 对延迟深表歉意。

    此致、

    Rohin Nair

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sai、

    我正在查看您的逻辑分析仪文件、现在看到您提到的问题。 您是否尝试过如上所述将延迟增加到 2ms、问题是否仍然存在? 请告诉我。

    此致、

    Rohin Nair

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Rohin:

    我没有使用 2ms 的延迟、因为它太大了。 您能告诉我为什么我们确实需要延迟、以便我们能够确定需要使用多长时间的延迟吗?



    此致、

    Sai Varun。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sai、

    我们的器件处理命令/子命令所需的时间将因询问的内容而异。 例如、DASTATUS1() 子命令需要大约 200us 才能将数据加载到缓冲区中。 如果您没有为器件读取提供适当的延迟时间、它将加载垃圾数据。 这是否有助于回答您的问题?

    此致、

    Rohin Nair