xhtwork 发表于 2017-9-20 15:51

IIC 实时钟怎么读?

本帖最后由 xhtwork 于 2017-9-20 16:20 编辑

IIC可能是最慢的总线,无硬件IIC模块的cpu用IO模拟iic读RTC的时间开销还是不小的。
为了在界面上显示准确的时间,我一直都是每秒读一次。今天听人说:他一直都开机读1次、然后自己定时、过段时间再读1次 。。。

大概估一下:如果普通晶体精度20ppm、温飘20ppm,正常情况下每小时误差应在1秒以内。
那么按理说,1小时较准1次钟就可以了。

大家是每秒都读,还是过一阵读一次?或者有什么其他思路?
另外,在多机联网需要授时的场合,大家都多长时间发一次授时信号?




feelhyq 发表于 2017-9-20 16:17

如果楼主要很精密的授时,可以用GPS模块,它提供实时 时间

feelhyq 发表于 2017-9-20 16:20

UART 总线 或者单总线才是最慢的总线,在里利用GPIO模拟I2C时,速度是可以保证的,依据RTC本身模块特性决定,GPIO模拟400Kb/s(I2C高速模式)是没问题的,

ningling_21 发表于 2017-9-20 16:25

使用不同的RTC时间的误差不同,一般一秒读一次(需显示秒),或一分钟读一次(不需显示秒)

feelhyq 发表于 2017-9-20 16:27

IO模拟时,里面的延时可以不断的减小,只要能满足你使用RTC芯片的时序就行了

xyz549040622 发表于 2017-9-20 16:34

保证1s内读一次就好了。

Prry 发表于 2017-9-20 18:20

就算用模拟i2c也不会占用很多CPU资源,如果带操系统,还可以用系统延时函数,不会阻塞当前模式时序,CPU还是可以利用这段资源的。

山东电子小菜鸟 发表于 2017-9-20 20:52

开机读1次、然后自己定时、过段时间再读1次 。。。 这种方法可行

datouyuan 发表于 2017-9-22 10:46

认同7楼的观点。

IIC花销那么少,随时都可以读。有了RTC,跟精确时间有关的都应依靠RTC,不应该像你同事那样再搞一套定时。

xhtwork 发表于 2017-9-22 21:08

datouyuan 发表于 2017-9-22 10:46
认同7楼的观点。

IIC花销那么少,随时都可以读。有了RTC,跟精确时间有关的都应依靠RTC,不应该像你同事那 ...

RE 9楼:
用 io 模拟读一次 IIC 时钟的开销大概是1毫秒,对数据存取而言算比较大的开销了,心理上会感觉不舒服。但考虑到1秒读一次,确实也无所谓。

Re 7楼:
iic的延时都是us,模拟的时候一般是靠堆积空指令实现。

chineseboyzxy 发表于 2017-9-23 10:34

要是自己搞个定时,还再去搞个RTC,多余了,程序里随便找个地方插进去读一下就行了,要么就把自己的定时搞精确,不要RTC算了。

路驹 发表于 2019-11-15 16:43

ayb_ice 发表于 2019-11-15 17:12

模拟的1秒钟读100次也没问题
页: [1]
查看完整版本: IIC 实时钟怎么读?