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

[复制链接]
9377|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

主题

620

帖子

5

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