单片机IIC通信_原创文档.pdfVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

1、I2C(Inter-IntegratedCircuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接

微控制器及其外围设备(特别是外部存储器件)。

2、I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。

3、I2C总线在传送数据过程中共有三种特殊类型信号,它们分别是:开始信号、结束信号和

应答信号。

4、I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用

的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。I2C总线的另一个

优点是,它支持多主机,其中任何能够进行发送和接收的设备都可以成为主机。一个主控能够

控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主机。

5、I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。各种I2C均

并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都

有唯一的地址。

下面是我的电路板单片机引脚接线情况:

第16、17号引脚接的就是SDA、SCL.

下面是SCL和SDA接的EEPROM,通过单片机的两个引脚连接一个外围存储器.

前面说IIC有三种信号

先看开始信号:

SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;

终止信号:

SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。

若用代码表示开始信号:

//只有在SCL为0时才能将SDA改变,SCL为高x相当于告诉别人SDA不会被改变了

//当在SCL为高时改变SDA状态,只会被识别成开始或终止状态

VoidStartIIC()

{

//首先我们需要将SDA和SCL置成高,变成上图最开始状态

SCL=0;

//延时

Delay();

//将SDA置高,

SDA=1;

Delay();

//再将SCL置高,此时SDA和SCL都为高电平

SCL=1;

Delay();

//一切就绪,就等着SDA在SCL为高时变低,表示开始了

SDA=0;

Delay();

//将SCL=0

SCL=0;

Delay();

}

再看看终止信号:

VoidStopIIC()

{

//终止就是要先将SCL置高,SDA置低,然后在此基础上将SDA置高

//先将SCL置0,便于将SDA改变

SCL=0;

Delay();

SDA=0;

Delay();

SCL=1;

Delay();

//此时SCL=1,SDA=0;

//将SDA=1,表示终止信号

SDA=1;

Delay();

}

之所以将SCL好SDA在0和1,就像两个相隔很远的人通过两个手电的光信号交流一样,高电

平表示打开手电,低电平表示不开手电没有光,每一秒记录一个状态。一切根据上面的图来写

程序。

IIC通信的读和写:

1,I2C与UART不同的地方首先在于先传高位,后传送低位。

2,主机写数据时,每发送一个字节,接收机需要回复一个应答位“0”,通过应答位来判断从机

是否接收成功。

3,主机读数据时,接收一个字节结束后,主机也需要发送一应答位“0”,但是当接收最后一个

字节结束后,则需发送一个非应答位“1”,发完了1后,再发一个停止信号,最终结束通信。

写:

首先I2C起始信号,然后发送首字节,即器件(EEPROM)地址。并且在读写方向位上选择“写

操作”方向。(0xa0)

第二个字节,发送数据的存储地址,就是要读取的数据所存储在EEPROM中的位置。

第三个字节,发送要存储的数据第一个字节,第二个字节……

在写数据的过程中,都要等待EEPROM返回一个“应答位”。

先大概看一下写数据的过程:

VoidWriteIIC(unsignedcharaddress,unsignedchard)

{

//开始信号

StartIIC();

//写器件地址,101

文档评论(0)

153****9248 + 关注
实名认证
文档贡献者

专注于中小学教案的个性定制:修改,审批等。本人已有6年教写相关工作经验,具有基本的教案定制,修改,审批等能力。可承接教案,读后感,检讨书,工作计划书等多方面的工作。欢迎大家咨询^

1亿VIP精品文档

相关文档