- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
IIC总结
I2C总结
SDA上的数据状态仅在SCL为低电平期间内才可改变,SCL为高电平期间SDA状态的改变则用来表示起始和停止条件。
图1 SDA传送数据时,SCL为高电平期间要求数据稳定,SCL在低电平期间允许数据变化
图2 SCL保持高电平,SDA状态的变化分别为起始信号和终止信号
起始信号:SCL保持高电平,SDA的状态由高到低,以此作为起始信号。
终止信号:SCL保持高电平,SDA的状态由低到高,以此作为终止信号。
图3 发送完数据后接收数据的一方发送应答信号
应答信号:用于指示数据传输成功的软件协议。发送器件(无论是主机或从机)在发送8位之后将释放总线。在第9个时钟周期内接收器把SDA拉至低电平以确认它已接收8位数据。
为了保证数据传送的可靠性,标准的I2C总线的数据传送有严格的时序要求。I2C总线的起始信号、终止信号、发送“0”及发送“1”的模拟时序:
图4 模拟I2C的严格时序要求
图5 编程产生起始信号
如上图,SCL为高,SDA由高到低,为起始信号。IIC_SCL最后变为0是为了不让SDA上的数据发生变化,以此钳住I2C总线,便于后续数据的发送。
图6 编程产生停止信号
如上图,SCL为高以后,SDA由低变高,为停止信号。
图7 编程等待接收端的应答信号
如上图所示,将发送数据的主机SDA设置为输入,接收从机发送的SDA信号,SDA由高变低,此时SCL保持高电平一定时间作为应答信号。
图8 编程产生主机作为接收端的应答信号
如上图所示,主机发送应答信号,SCL为低时SDA变为0,然后SCL为高保持一段时间作为应答信号。
图 9 编程实现主机发送数据
由图10可知,图9所示代码可解释如下,SCL为低时,SDA才允许变化,即将txd中的每一位信息一次给SDA,此后SCL设置为高,延时后变低,在SCL由高到低的这个过程当中,SDA中的数据打入从设备。如图11所示。
网上有关帖子:
IIC协议规定:SDA上传输的数据必须在SCL为高电平期间保持稳定,SDA上的数据只能在SCL为低电平期间变化。IIC期间在脉冲上升沿把数据放到SDA上,在脉冲下降沿从SAD上读取数据。这样的话,在SCL高电平期间,SDA上的数据是稳定的。在脉冲下降沿之后的保持时间以后,SDA上的数据可以变化,直到脉冲上升沿之前。
图10 详细的时序讲解
图11 深入理解I2C总线的时序模拟
2015年8月6日济世良驹于大连理工大学
文档评论(0)