IIC 实时钟怎么读?

[复制链接]
2022|14
 楼主| xhtwork 发表于 2017-9-20 15:51 | 显示全部楼层 |阅读模式
本帖最后由 xhtwork 于 2017-9-20 16:20 编辑

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

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

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




评论

怎么联系你  发表于 2019-11-15 16:44
feelhyq 发表于 2017-9-20 16:17 | 显示全部楼层
如果楼主要很精密的授时,可以用GPS模块,它提供实时 时间
feelhyq 发表于 2017-9-20 16:20 | 显示全部楼层
UART 总线 或者单总线才是最慢的总线,在里利用GPIO模拟I2C时,速度是可以保证的,依据RTC本身模块特性决定,GPIO模拟400Kb/s(I2C高速模式)是没问题的,

评论

你说得对,uart比iic慢。是我没说清楚,我本意是跟并口、spi比较。  发表于 2017-9-20 16:24
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次也没问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

154

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部