关于i2c通信的问题

[复制链接]
2749|8
 楼主| 万山21 发表于 2011-7-15 08:23 | 显示全部楼层 |阅读模式
大哥大姐们,想请教个问题。我看了i2c的通信协议,然后去看别人的程序,大部分内容结合协议都能理解,但有一个问题不懂,就是,我发现每传送一个数据都需给scl一个脉冲,先置1再置0,可这点好像在协议上并没有规定啊!能扯上关系的顶多也就是“SDA在SCL为高时必须保持不变,而在SCL为低时变化数据才有效”,可这也不能得出让SCL置1再置0的结论吧!
dqyubsh 发表于 2011-7-15 08:38 | 显示全部楼层
那你能得出什么结论,

这句话的意思是,当读取I2C数据时,在SCL的下降沿采集SDA线的数据(0或者1)。所以,要在SCL下降沿之前准备好SDA,并在SCL下降沿期间一直维持SDA不变。发送数据过程也是一样的。

找个I2C器件,看一下时序图。
dqyubsh 发表于 2011-7-15 08:47 | 显示全部楼层
我最近也在弄I2C,发现以下几个问题:
1,从设备是硬电路的I2C器件,如EEPROM,IO扩展芯片,这个过程比较顺畅,接几个器件都很容易。
2,从设备是处理器,如AVR的TWI,则通讯过程很繁琐,搞了一天还没搞定。(郁闷,不如用硬器件扩展了)
3,轻易不要试图模拟I2C,你的能力可能会遭遇巨大挑战。如果模拟I2C做通讯,那你估计要干N天。
fubehyin 发表于 2011-7-15 09:12 | 显示全部楼层
那个是数据的起始标志。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 万山21 发表于 2011-7-15 09:27 | 显示全部楼层
是在SCL上升沿之前准备好SDA,并在SCL上升沿期间一直维持SDA不变吧?
 楼主| 万山21 发表于 2011-7-15 09:29 | 显示全部楼层
是在SCL上升沿之前准备好SDA,并在SCL上升沿期间一直维持SDA不变吧?
fubehyin 发表于 2011-7-15 11:11 | 显示全部楼层
6# 万山21
所有带时序的数据不都这样么
Light_David 发表于 2011-7-16 01:27 | 显示全部楼层
不知道我有么有看懂楼主的问题,
SCL每次都要上跳下跳是因为同步时序(序列)啊,类似SPI的下降沿将数据锁存;
每跳一次代表传送一个位,如果不跳了只变SDA,那没意义了,
也就是说SCL是同步信号,I2C是同步通讯,每一位都要跟着SCL的信号电平进行
不像串口异步通讯可以不用SCL
 楼主| 万山21 发表于 2011-7-16 18:16 | 显示全部楼层
诶~,八楼说的是那个意思!哈哈。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

267

帖子

1

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