打印
[疑难问答]

关于I2C 的问题

[复制链接]
2992|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qfengbj|  楼主 | 2010-7-5 23:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用单片机模拟I2C,当传输完毕后,把SCL拉低,下次工作前先把SCL拉高,这样操作会产生什么样的影响?
沙发
ershisi| | 2010-7-6 21:54 | 只看该作者
SCL线上产生自己的时钟来传输I2C总线上的数据,数据只在时钟的高电平周期有效

使用特权

评论回复
板凳
xiaomifan| | 2010-7-6 23:06 | 只看该作者
I2C总线进行数据传送时,要求SCL为高电平时,SDA上的数据必需保持稳定,换言之,当SCL为高电平时,SDA的电平不能变换,只有当SCL为低电平时,SDA的电平才能变。

使用特权

评论回复
地板
yidou| | 2010-7-6 23:08 | 只看该作者
楼上说得对。
I2C总线通信时,需要遵照一定的协议,以下为一次通信过程:
由主机发送起始信号,启动I2C总线。时序为,在SCL为高电平期间,SDA出现一个下降沿。
主机发送寻址信号,即告诉特定的设备,接下来的命令是发给它的。地址分为7位和10位,以7位为例,高7位为设备地址,最低位表示读或写,1表示读,0表示写。
应答信号,I2C协议规定,每传送一个字节数据(包括地址及命令)后,都要有一个接收设备返回的应答信号,以确定信号是否被接收设备正确接收到了。其时序为,在SCL信号为高电平期间,接收设备把SDA电平拉低。
数据传输,当主机发送发址并收到应答后,就可以发送数据了,但是发送数据只能每次发送一位,并且每发送一位后都需要收到接收机的应答。或主机为接收设备时,主机对最后一个字节不应答,表示向发送设备说,数据传送结束。
发送停止信号,在全部数据传送完毕后,主机发送停止信号,时序为,在SCL为高电平期间,SDA上产生一个上升沿。

使用特权

评论回复
5
huamunv| | 2010-7-8 20:27 | 只看该作者
SCL 和SDA 两条线,具体说来一共就是五种操作:SCL 拉高,SCL 置低,SDA 输出高,SDA 输出低,及SDA设置为输入口

使用特权

评论回复
6
麻辣鸭脖子| | 2010-7-8 21:38 | 只看该作者
这个可以找到很详细的资料

使用特权

评论回复
7
wuzhaolie| | 2010-7-9 22:28 | 只看该作者
讲得挺好的

使用特权

评论回复
8
麻辣鸭脖子| | 2010-7-10 16:25 | 只看该作者
I2C协议看起来相对复杂,但是在单片机里面实现,其实就是用两个IO口,来模拟SCL和SDA的电平变化。

使用特权

评论回复
9
tcc8073| | 2010-7-16 13:42 | 只看该作者
只要保持SCL是低电平,SDA电平做任何跳变都没有什么问题,不会影响数据的读写

使用特权

评论回复
10
sa2852| | 2010-10-12 22:02 | 只看该作者
:)正解

使用特权

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

本版积分规则

0

主题

158

帖子

1

粉丝