网站大量收购独家精品文档,联系QQ:2885784924

SMBUS__I2C_bus详解.ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SMBUS i2c详解 Liuzhi, Sep 2010 liuzhizhiyi@163.com I2c, smbus只定义了协议 一个bus,一个master,多个slave。 每一次读写都由master发起。 两根线的总线架构 Sclk,高有效,高的时候,决定是start/stop,字节的读取,等等。 START: S STOP P Start: 在clk为高的情况下,data由高变低为start。 Stop:在clk为高的情况下,data由低变高是stop。 都是由master发起。 数据的有效期 只有在clk为高的时候,数据才有效。Clk为低,数据无效。 ACK 每一个字节完成,都会有一个ack,无论由master还是slave发出。 Ack的具体就是低有效。 一般是在第九位发出。 如果没有ack,表明错误发生。 Slave地址的协议 Start之后,第一个byte总是由master广播给slave们,格式如下:7位的地址,跟着一个 读写位,读为1,写为0。 数据传输:Master Send 可以看到,当master发了最后一个字节之后,就不用管ack还是没有,就可以结束了。 数据传输:Master Receive 可以看到,当master读取到自己想要的数据后。也可以不理最后一个ack,发出stop。 一个完整的读数据的实现。 因为读数据需要有offset。所以offset需要先用写协议告诉slave,然后再读。 所以一个完整的写协议就是: S 7_BIT_ADD W A OFFSET A RS 7_BIT_ADD R A DATA A P 有所疑问,要周一看看具体波形。 理论波形 具体的测试波形:写 写的数据解析 数据位是S 001100000 001000000 001001110 P 翻译一下就是30 20 27,slave address 18 (30/2) offset 20, data 27. 具体的实测波形:读 读数据解析 二进制串为S 001111000 000010000 {RS} 001111010 110111101 P 翻译就是3C 08 3D DE 另外可以看出,RS restart 和start波形很相似,而且P之前slave没有ack,就说明slave不准备再提供数据了。说明是byte读。 如果要读多byte,因为这个是st的sensor,所以在offset位最高位写1就行了。这是st的private规定。 一些保留的地址 有可能厂商规定不一样 具体厂商的实现可能不一样 Intel南桥有自己的io操作。 Oaktrail购买的一个ip。 Winbond ec的smbus。 都有软件操作上的不同,但是最终表现在波形协议是一样的。 Slave的一些特殊实现 有些slave也有自己的特殊的地方,比如ST的sensor规定,如果要读取多个byte,那么offset的最高位就要是1。 * * SR: repeat start. *

文档评论(0)

wxc6688 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档