查看: 1904|回复: 21
|
I2C 谁会?
[复制链接]
|
|
发表于 23-8-2007 10:27 PM
|
显示全部楼层
原帖由 darlling5147 于 23-8-2007 08:52 PM 发表
由于我不知道如何把我要问的东西翻译成华语,请斑竹多多见谅
anyone know how does the I2C frequency of a device to be set? how the data hold and delay time to be set?
URGENT, PLS DO LET ME KNOW ...
f clki2c是SCL的clock frequency,最高可以去到400khz.
对已经内建i2c hardware 的mcu来讲, 应该会有一个register让你设定f clk.
如果mcu没有内建i2c, 不必特别注意f clk,只要不超过400khz就可以了。 通常只有high speed mcu才有能力generate 400khz clk.
大概算过, 如果一个40MIPS的mcu要generate 400khz,大概每50 machine cycle就得interrup一次。+_+.
如果data transfer rate很重要的话, 就用timer interrupt 自己generate f clk,这样就可以了。
关于holdtime, setup time, delay time等, 就用programming来解决。
这个我不太懂要怎样解释。 |
|
|
|
|
|
|
|
发表于 24-8-2007 01:57 AM
|
显示全部楼层
原帖由 fritlizt 于 23-8-2007 10:27 PM 发表
f clki2c是SCL的clock frequency,最高可以去到400khz.
对已经内建i2c hardware 的mcu来讲, 应该会有一个register让你设定f clk.
如果mcu没有内建i2c, 不必特别注意f clk,只要不超过400khz就可以了。 ...
我是darlling5147,借用朋友的account来回复。
我想知道我要如何设定hold time 和 setup time? 再datasheet里面有它的limit(max), 他们是如何设定的呢?有formula吗?
谢谢你的帮忙,真得很感激!!!!
|
|
|
|
|
|
|
|
发表于 24-8-2007 11:26 AM
|
显示全部楼层
原帖由 yee_wawa 于 24-8-2007 01:57 AM 发表
我是darlling5147,借用朋友的account来回复。
我想知道我要如何设定hold time 和 setup time? 再datasheet里面有它的limit(max), 他们是如何设定的呢?有formula吗?
谢谢你的帮忙,真得很感激! ...
最好是把你的应用, 清清楚楚的讲出来, 不要只是讲I2C。
1. 是什么MCU? (master)
2. 是什么i2C device? (Slave)
3. 你用什么语言?
4. 你要做什么?你的应用?
5. 试过Google了吗?
上面1,2,3,4 不知道的话, 我可能帮不了你, 或不会给你有效的回覆。 |
|
|
|
|
|
|
|
楼主 |
发表于 25-8-2007 09:01 AM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 25-8-2007 09:50 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 25-8-2007 04:03 PM
|
显示全部楼层
原帖由 darlling5147 于 25-8-2007 09:50 AM 发表
做什么 I2C的速度是 : standard = 100kbps, fast mode = 400kps, high speed mode = 3.4mbps?
为什么不是其他的value叻?
我怎样可以知道的答案了?
我想知道我要如何设定hold time 和 setup time? 再datasheet里面有它的limit(max), 他们是如何设定的呢?有formula吗?
set time, hold time 你需要看timing diagram才能明白。 言语上很难跟你解释。 又不懂那是什么devices.+_+
这个是没有formula的,另一方面看可以说是hardware limitation.
做什么 I2C的速度是 : standard = 100kbps, fast mode = 400kps, high speed mode = 3.4mbps?
为什么不是其他的value叻?
这个就是standard,就好像在问为什么ethernet有10Mbps, 100Mbps, 1Gbps不过没有其他value.
其实这只是一个standard reference,.不一定要100kbps, 400kbps, 3.4mbps,只要clock rate 在supported 范围之内就可以了。
根据我经验,大概是这样。等pic斑竹来证实。 |
|
|
|
|
|
|
|
发表于 25-8-2007 08:01 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 25-8-2007 08:58 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 25-8-2007 09:02 PM
|
显示全部楼层
原帖由 时日无多 于 25-8-2007 08:01 PM 发表
这里有I2C的SPEC。可以去看看,能了解更多关于I2C。
http://www.nxp.com/acrobat_download/literature/9398/39340011.pdf
对,这是最好的。 |
|
|
|
|
|
|
|
楼主 |
发表于 26-8-2007 08:27 AM
|
显示全部楼层
非常非常谢谢你的解说。。。。
非常非常的详细。。。。。
你非常非常得厉害叻!!!!!
原帖由 pic 于 25-8-2007 08:58 PM 发表
你读了i2C Bus Specification 吗?
set data hold time 和 data setup time, 那是在MCU programming里的事。
请读i2C Bus Specification 。
I2C, 是Philips在20年前发明的, 用作I ... |
|
|
|
|
|
|
|
楼主 |
发表于 26-8-2007 08:54 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 26-8-2007 04:43 PM
|
显示全部楼层
原帖由 darlling5147 于 26-8-2007 08:54 AM 发表
我有以下疑问:
首先,下面的论点是你要用不同的Clock rate, 而立的。 如你是用正规的100kbps,400kbps, 可以跳过1,2,3。你是把问题拆开来问了。
1。 你明白你很特别 《---------什么意思?
你要设计与众不同的。。。不是用正规的100kbps,400kbps
2。 MCU是microcontroller unit吗?
是。
3。 你的Master 和Slave I2C device, 都是你用MCU做的。 《-------不太明白
简单说, 在一个最简单i2c 的bus上,一定有一个Master, 一个Slave。 (multi-master 我们不谈)
Slave 是被动的, Master 是主动的, I2C EEprom 如24LCxxx是Slave。Master 多是MCU。
你如用不正规的clock rate /bps,没有这种 Slave, 所以你用MCU来做。
i2C 是一种Bus, 一种 通讯协议(Communication Protocol )。
i2C是很复杂的, 比RS232复杂多了。也不是随便看了Spec就会的,你真正要学的话, 你要实验。
我很尊敬钦佩设计出I2C的人(Philips的设计), 只用两条线,就能通讯, 对短距离,低速,低成本,i2C 是很赞的。
还有, 请大家注意, 网友Chan1314的头像就是I2C的logo。 |
|
|
|
|
|
|
|
楼主 |
发表于 26-8-2007 05:15 PM
|
显示全部楼层
原帖由 pic 于 26-8-2007 04:43 PM 发表
首先,下面的论点是你要用不同的Clock rate, 而立的。 如你是用正规的100kbps,400kbps, 可以跳过1,2,3。你是把问题拆开来问了。
你要设计与众不同的。。。不是用正规的100kbps,400kbps
是。 ...
arigato.......谢谢指导!!!
我会慢慢思考。。。。。 |
|
|
|
|
|
|
|
楼主 |
发表于 26-8-2007 05:28 PM
|
显示全部楼层
原帖由 pic 于 26-8-2007 04:43 PM 发表
Slave 是被动的, Master 是主动的, I2C EEprom 如24LCxxx是Slave。Master 多是MCU。
你如用不正规的clock rate /bps,没有这种 Slave, 所以你用MCU来做。
。。。。。Master 多是MCU。你如用不正规的clock rate /bps,没有这种 Slave, 所以你用MCU来做。
你以上的意思是,打个比喻: 我的master是100kbps,而我的slave是200kbps, 由于我的master support不到slave的clock rate, 我得用mcu来做我所要得slave,不能用市场上买到的现成品(slave),对吗?
|
|
|
|
|
|
|
|
楼主 |
发表于 26-8-2007 05:54 PM
|
显示全部楼层
原帖由 fritlizt 于 23-8-2007 10:27 PM 发表
f clki2c是SCL的clock frequency,最高可以去到400khz.
对已经内建i2c hardware 的mcu来讲, 应该会有一个register让你设定f clk.
如果mcu没有内建i2c, 不必特别注意f clk,只要不超过400khz就可以了。 ...
对已经内建i2c hardware 的mcu来讲, 应该会有一个register让你设定f clk.
以上的意思是说
对已经内建i2c hardware 的mcu来讲,我们可以自己set clock rate? |
|
|
|
|
|
|
|
发表于 27-8-2007 09:17 AM
|
显示全部楼层
原帖由 darlling5147 于 26-8-2007 05:28 PM 发表
。。。。。Master 多是MCU。你如用不正规的clock rate /bps,没有这种 Slave, 所以你用MCU来做。
你以上的意思是,打个比喻: 我的master是100kbps,而我的slave是200kbps, 由于我的master support不到 ...
Master 和Slave 的速度要一样。 |
|
|
|
|
|
|
|
楼主 |
发表于 27-8-2007 11:45 AM
|
显示全部楼层
原帖由 pic 于 27-8-2007 09:17 AM 发表
Master 和Slave 的速度要一样。
如果我的slave速度慢过master,可以吗?还是master何slave一定要一样? |
|
|
|
|
|
|
|
发表于 27-8-2007 02:51 PM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 27-8-2007 06:20 PM
|
显示全部楼层
回复 #19 pic 的帖子
答案是:slave 和master都要一样速度!!!。。。。。
对吗?哈哈哈。。
谢谢你的用心良苦。。。。 |
评分
-
查看全部评分
|
|
|
|
|
|
| |
本周最热论坛帖子
|