IIC 实时钟怎么读?
本帖最后由 xhtwork 于 2017-9-20 16:20 编辑IIC可能是最慢的总线,无硬件IIC模块的cpu用IO模拟iic读RTC的时间开销还是不小的。
为了在界面上显示准确的时间,我一直都是每秒读一次。今天听人说:他一直都开机读1次、然后自己定时、过段时间再读1次 。。。
大概估一下:如果普通晶体精度20ppm、温飘20ppm,正常情况下每小时误差应在1秒以内。
那么按理说,1小时较准1次钟就可以了。
大家是每秒都读,还是过一阵读一次?或者有什么其他思路?
另外,在多机联网需要授时的场合,大家都多长时间发一次授时信号?
如果楼主要很精密的授时,可以用GPS模块,它提供实时 时间 UART 总线 或者单总线才是最慢的总线,在里利用GPIO模拟I2C时,速度是可以保证的,依据RTC本身模块特性决定,GPIO模拟400Kb/s(I2C高速模式)是没问题的, 使用不同的RTC时间的误差不同,一般一秒读一次(需显示秒),或一分钟读一次(不需显示秒)
IO模拟时,里面的延时可以不断的减小,只要能满足你使用RTC芯片的时序就行了 保证1s内读一次就好了。 就算用模拟i2c也不会占用很多CPU资源,如果带操系统,还可以用系统延时函数,不会阻塞当前模式时序,CPU还是可以利用这段资源的。 开机读1次、然后自己定时、过段时间再读1次 。。。 这种方法可行 认同7楼的观点。
IIC花销那么少,随时都可以读。有了RTC,跟精确时间有关的都应依靠RTC,不应该像你同事那样再搞一套定时。 datouyuan 发表于 2017-9-22 10:46
认同7楼的观点。
IIC花销那么少,随时都可以读。有了RTC,跟精确时间有关的都应依靠RTC,不应该像你同事那 ...
RE 9楼:
用 io 模拟读一次 IIC 时钟的开销大概是1毫秒,对数据存取而言算比较大的开销了,心理上会感觉不舒服。但考虑到1秒读一次,确实也无所谓。
Re 7楼:
iic的延时都是us,模拟的时候一般是靠堆积空指令实现。 要是自己搞个定时,还再去搞个RTC,多余了,程序里随便找个地方插进去读一下就行了,要么就把自己的定时搞精确,不要RTC算了。 模拟的1秒钟读100次也没问题
页:
[1]