STM8:I2C的输入时钟与系统时钟是什么关系?

[复制链接]
7305|15
手机看帖
扫描二维码
随时随地手机跟帖
pattywu|  楼主 | 2012-5-14 13:48 | 显示全部楼层 |阅读模式
最近在研究STM8的I2C,但我从手册中,看不出I2C的输入时钟与系统时钟之间的关系。
    由于没有示波器,没有测试出系统时钟与I2C时钟的关系。请调试过的朋友告之,谢了。

    为了产生正确的时序,必须配置合适的输入时钟频率:
允许的时钟范围在1MHz和50MHz之间
000001:1MHz
000010:2MHz

110010:50MHz
不允许更高的值
FREQ[5:0]:
为了产生正确的时序
允许的时钟范围在1MHz和50MH
000000:不允许
香水城| | 2012-5-14 18:33 | 显示全部楼层
1)你看的是什么资料?I2C的允许的时钟范围应该在1MHz和24MHz之间,而不是1MHz和50MHz之间。

2)I2C_FREQR寄存器的目的是告诉硬件,现在使用的系统时钟频率是多少。

3)I2C的输入时钟与系统时钟之间的关系,在I2C_CCRL和I2C_CCRH寄存器中设置。
STM8S_I2C_FREQR.GIF

使用特权

评论回复
yudengyun| | 2012-5-14 18:44 | 显示全部楼层
请问ST:I2C的允许时钟范围1MHz和24MHz之间,与平时所说的通讯速率一般模式100KHz 快速模式400KHz有什么关系呢?(浪费您点时间帮我解答下,谢谢了)

使用特权

评论回复
香水城| | 2012-5-14 18:57 | 显示全部楼层
请问ST:I2C的允许时钟范围1MHz和24MHz之间,与平时所说的通讯速率一般模式100KHz 快速模式400KHz有什么关系呢?(浪费您点时间帮我解答下,谢谢了)
yudengyun 发表于 2012-5-14 18:44


看我在2楼的第3点回答。

使用特权

评论回复
yudengyun| | 2012-5-14 19:07 | 显示全部楼层
:)谢谢,我是新手,软件的还不是很懂,我再看看资料。

使用特权

评论回复
pattywu|  楼主 | 2012-5-14 20:30 | 显示全部楼层
2# 香水城

我看到的是中文资料。
我又查了最新的英文资料,写的是24MHz。

使用特权

评论回复
rabbit0714| | 2012-11-24 12:55 | 显示全部楼层
请问系统时钟频率是不是fMASTER?

使用特权

评论回复
mengjicheng| | 2012-11-28 14:22 | 显示全部楼层
2楼香水城的可不可以这样理解,I2C_FREQR的值是表明了Fmaster值

如:HSI为16MHZ,分频系数为8,Fmaster=2mhz,此时I2C_FREQR=2,
      如果外部是20MHZ,分频是8,Fmaster=2.5mhz, 此时I2C_FREQR =2,
      如果外部是16MHZ,分频是4,Fmaster=4MHZ,此时I2C_FREQR =4,这时要选快速模式,

经过我做实验增大I2C_FREQR的值,SCL脚输出脉宽增大,也就是说输出的速率会降低,并不是你说的
"2)I2C_FREQR寄存器的目的是告诉硬件,现在使用的系统时钟频率是多少"

使用特权

评论回复
sinside| | 2013-7-17 17:28 | 显示全部楼层
实际使用结果:
I2C_FREQR=4MHz的时候这个值不知道起什么作用。
I2C_CCR =1000的时候I2C master的输出时钟是8K,可见资料里面的tMaster应该指的系统的16M(我的系统用的)。
I2C_FREQR与I2C作为master模式的输出频率好像没有什么关系。看资料里面说这个是输入频率,是不是指i2c作为slave的时候的频率的限制?(纯属猜测,资料没有相关的信息)

也许是我理解出错误打误撞,反正现在我的I2C master模式时钟是用fMaster(系统的主时钟)除以(I2C_CCR*2)得到的。

以上很多是属于实测和猜测得来。如果有完美的解释和证据,请一并指正。

使用特权

评论回复
cjhk| | 2013-7-17 19:06 | 显示全部楼层
问题解决了就好   楼主   顶一个  很不错哦

使用特权

评论回复
wuxinxinggg| | 2013-9-29 11:17 | 显示全部楼层
没有一个结论啊

使用特权

评论回复
wangdezhi| | 2013-9-29 20:25 | 显示全部楼层
来看看的。

使用特权

评论回复
shenpingbing| | 2013-9-30 10:37 | 显示全部楼层
版主学问高深莫测   膜拜一下

使用特权

评论回复
筱禾1988| | 2013-9-30 10:59 | 显示全部楼层
学习了  

使用特权

评论回复
FAQ| | 2014-4-11 23:43 | 显示全部楼层
我也有这个疑问

使用特权

评论回复
zhonghualu309| | 2014-5-30 15:20 | 显示全部楼层
楼主的问题,我刚刚搞明白。
标准模式下:
1.Fscl = Fmaster /(2*I2C_CCR);这个你可以通过修改Fmaster的值 即HSI的分频系数验证。
2.I2C->TRISER = 1000ns/(1/I2C->FREQR(MHz)) + 1;标准模式下(见数据手册)最大上升时间为1000ns,换句话说 I2C->FREQR这个值是用来控制上升时间用的,跟Fscl无关。通过这个公式你会发现快速模式下跟标准模式下I2C->FREQR的最小值的确是1跟4.
若有没解释清楚的请加QQ :362781730  .欢迎相互交流相互学习。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

608

帖子

5

粉丝