从基于 I2C 的 RTC 读取多个字节时,似乎在读取每个字节时,其中一个值可能会增加。
例如,如果时间是:
2014-12-31 23:59:59
当您阅读此值时,时间可能会翻转到
2015-01-01 00:00:00
所以你实际上可能会阅读:
2015-01-01 23:59:59
(取决于您首先读取的值)。
那么,确保可靠读取是 rtc 驱动程序的责任吗?
从基于 I2C 的 RTC 读取多个字节时,似乎在读取每个字节时,其中一个值可能会增加。
例如,如果时间是:
2014-12-31 23:59:59
当您阅读此值时,时间可能会翻转到
2015-01-01 00:00:00
所以你实际上可能会阅读:
2015-01-01 23:59:59
(取决于您首先读取的值)。
那么,确保可靠读取是 rtc 驱动程序的责任吗?
阅读DS1337的数据表,第 9 页指出:
在读取或写入时间和日期寄存器时,使用辅助(用户)缓冲区来防止内部寄存器更新时出现错误。在读取时间和日期寄存器时,用户缓冲区在任何开始或停止以及寄存器指针回零时与内部寄存器同步。
因此,如果读取(或写入)发生在单个 I2C 操作中(没有回绕),RTC 设备保证所有内容都是同步的。
[我没有检查任何其他设备的数据表,但我认为它们的工作方式都相似。]