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