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.

[参考译文] BQ32002:如何对所有日期和时间信息进行一致的读写

Guru**** 2382450 points
Other Parts Discussed in Thread: BQ32000, BQ32002
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/1399788/bq32002-how-to-make-consistent-read-or-write-of-all-date-and-time-information

器件型号:BQ32002
Thread 中讨论的其他器件:BQ32000

工具与软件:

 BQ32002 (和 BQ32000)具有  用于指示日期和时间部分的单独寄存器、所有这些寄存器都可以  通过 I2C 单独读取和写入。

但是、如果进行了单独的 I2C 访问、并且秒寄存器 在访问分钟和秒寄存器之间从59换到00、则读取或写入的时间将会是错误的。

但是、寄存器 放置 在 I2C 地址空间中的连续地址处、由此、 从地址0x00开始的原子 I2C 读取或写入操作将涵盖日期和时间的所有寄存器。

 对多字节的这种原子 I2C 操作是否可以确保  对所有寄存器进行一致的读写操作、并提供数据和时间信息、以便所有寄存器在时间和日期的同时进行读取或写入时 的采样?

读取 Linux 驱动程序代码表明这一点、但一般文档中没有明确说明、因此非常感谢您的澄清。

提前感谢:-)

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

    尊敬的 Morten:

    我在数据表的下图中找到、这是您指的原子读取吗?

    我相信这是一个稳健的操作,至少我没有从客户投诉。

    最大 I2C 时钟频率高达400kHz、只需8/400k = 20µs 即可获取第二个信息、另一个20µs 则可获取微小信息。 所以您描述的问题通常不会发生。  

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

    尊敬的 Noel:

    感谢您 如此迅速地关注我们。

    您附带的 I2C 访问图完全是我所指的原子读取、其中单个 I2C 访问会利用地址自动递增来读取多个寄存器。  写入也可以采用类似的情况。

    我还 假设这是读取和写入一组一致的日期和时间寄存器的正确方法、但文档中没有明确说明这种方法。

    正如您所注意的、读取秒和分钟寄存器之间的时间差可能约为20 µs 。  如果在分钟寄存器发生变化时发生这种情况(每60秒发生一次)、则会导致分钟和秒寄存器组的读数不一致、从而导致时间错误。    因此、此类错误的概率为20 µs / 60 s = 333 * 10**-9、或每300万个读数中有一个读数。    每1ms 可以轻松读取一次日期和时间、因此每秒1000次、这在某些系统中可能很方便。  这样做将得到1000个读数/秒* 3600秒/小时= 360万个读数/小时。  因此、在该使用场景中、 平均 每个小时发生一次误差(MTBF 为1小时)。  这种错误率非常大、在大多数系统中很可能是不可接受的。

    因此、在此基础上、如果您能帮助确定 一个可靠的方法来读取和写入一组一致的日期和时间寄存器、我将不胜感激。

    提前感谢:-D

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

    尊敬的 Morten:

    我在下面的链接中找到了更详细的 I2C 操作、应该可以清除您的问题。  

    e2e.ti.com/.../latching-of-time-registries-during-readout

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

    尊敬的 Noel:

    感谢您再次观看本视频。

    该链接向我显示"Page not found"(找不到页面)消息。  也许这是一个 TI 内部页面、因为 URL 的一部分是"clock-timing--internal-forum"。

    请您 通过此论坛提供该文件吗?

    或者、您可以确认对读取和写入执行原子 I2C 操作可确保日期和时间访问一致。

    感谢您的支持。

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

    尊敬的 Morten:

    抱歉、我没有意识到这是一个内部帖子。

    详细信息如下:

    实际上、RTC 中存储了该时间的两个副本。   一个副本就是我们所说的"阴影"时间。   该寄存器每秒直接由 RTC 递增一次。   无法通过 I2C 直接读取影子寄存器。   时间的另一个副本是"可读的"。   这是客户可以通过 I2C 读取的寄存器。

    如果在一个 I2C 事务(一个启动、一个停止)中读取或写入所有寄存器、bq32000和 bq32002将防止在 I2C 读取或写入期间发生时间翻转。   如果客户作为单独事务序列读取每个寄存器、则时间可能会在序列中的任何停止和启动之间翻转。

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

    尊敬的 Noel:

    再次感谢您的耐心参与。

    也感谢您提供全面而详细的回答。  

    这一答复解决了我的关切、令人放心的是、正如我所期望的优质产品那样、处理一致的读写是在设计中的。

    美好的一天:-)