在工科男的世界里,连IIC都能想象成浪漫的牵手,而一个对单片机充满热爱的工科男,有什么理由不去认识它,学会它,并去驾驭它啊!当然,在我知道的世界里,貌似大学老师从来都没有真正教过,也难怪那么多工科男抱怨不懂得牵手妹子,深受单身的痛苦!原来是没有学会牵手妹子的绝招,没有学会IIC啊!嘿嘿,,,,
学会IIC,学会搭讪妹子!开始恋爱之旅,做个浪漫的工科男吧!
——————————————————————————————————————
IIC在单片机的学习中是一种非常重要的传输协议,也是比较难懂的,但也是单片机学习的过程中必然要去面对,且必须学会的,因为太多太多的芯片就是靠它与单片机牵手相爱的啊!比如最常见的24C02,温度传感器芯片LM75,AD/DA转换芯片PCF8591.,,,,等等,从而足以看出IIC是如何风骚的沟通桥梁了吧?它不仅能搭讪一个妹子,而是好多妹子啊!!!
本小节目录:
10.1,IIC总线介绍
10.2,IIC总线的数据传送
10.3,数据传送格式
10.4,简介AT24C02使用及程序分析
10.1)IIC总线介绍
1)简介
IIC是Philips公司推出的串行总线标准(为二线制)。
总线上扩展的外围器件及外设接口通过总线寻址,因其具有接口线少,控制简单,通信速率高,稳定等优点得以广泛被利用
I2C总线即为:串行数据线SDA和串行时钟线SCL构成的,可发送和接收数据
2) IIC总线结构图
图 1 IIC总线器件连接图
IIC总线通过上拉电阻接正电源。同时总线上器件都采用漏极开路结构与总线相连,当总线空闲时,两根线均为高电平。当总线上任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。
在C51中我们一般称单片机为主机,总线上的器件称为从机。
10.2)IIC的数据传送
1)数据位的有效性规定
I2C总线进行数据传送时,时钟信号为高电平期间,数据线(SDA)上的数据必须保持稳定,只有在时钟线(SCL)上的信号为低电平期间,数据线(SDA)上的高电平或低电平状态才允许变化。
将SCL比喻为妹子,你不就像SDA了吗?当妹子(SCL)高兴时,你要保持高兴的稳定状态,当妹子(SCL)心情低落生气时,你才可以高兴的哄她开心,或者对她生气呀!
图2 IIC总线数据位的有效规定
2)起始信号和终止信号
图3 IIC启动信号和终止信号
SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;
SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。
开始追妹子的特征,妹子(SCL)心里会偷偷高兴的(高电平),你知道吗?这时的你(SDA)是不是该低下你高高的头,厚着脸皮去给妹子调情呀?
终止追妹子(SCL)的特征,妹子已经高兴的答应做你女朋友了!你(SDA)是不是也该抬头做好男生,接着高兴的陪着妹子了呀?
/************************************************
函数名字: IIC_Start(),IIC_Stop()
函数功能: 主机(单片机)发出起始信号,终止信号
函数入口: void
函数出口: void
起始过程: 当SCL为高电平期间,SDA一个下降沿 即为起始信号
终止过程: 当SCL为低电平期间,SDA一个上升沿 即为终止信号
*************************************************/
void IIC_Start(void)
{
SDA=1; NOP4();
SCL=1; NOP4();
SDA=0; NOP4();
}
void IIC_Stop(void)
{
SDA=0; NOP4();
SCL=1; NOP4();
SDA=0; NOP4();
}
特别提醒:
1,主机才会发出起始和终止信号,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。
2,主机输出起始信号后,IIC总线处于被占用状态,SDA,SCL都将被置于低电平
主机输出终止信号后,IIC总线处于空闲状态,SDA,SCL都将被置于高电平
10.3) 数据传送格式
(1)字节传送与应答
图4 数据传送格式与应答
每一个字节必须是8位传送。数据传送时,从最高位(MSB)开始传送,每一字节后面都必须跟随一位应答位(即一帧共有9位)。
遇到以下特别情况处理:
1,从机由于某种原因不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。
2,主机接收从机数据的最后一字节之前的每一字节均需要向从机发送应答,当主机接收到从机数据的最后一字节时,它要向从机发出一个“非应答”信号以便从机结束传送,从机随后释放SDA线,以便允许主机产生终止信号。
(2)数据帧格式
IIC总线上传送的数据信号,包括地址,数据,应答信号等。
在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/W),用“0”表示主机发送数据(W),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。
(3)数据传送的3种组合方式
a、主机向从机发送数据,数据传送方向在整个传送过程中不变,先发送从机地址(器件地址),接着发送数据(或命令字节)
b、主机在第一个字节后,立即由从机读数据
c、在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好相反,主机每读取一字节发送 应答信号,当读取到最后一字节后,主机发送非应答信号
说明:1,方框加粗线表可以重复(可以是多字节及相应的应答位)
2,标有底色的部分表主机发送,无底色表从机发送
3,0,1分别表写(W),读(R)
4,S,P分别表起始(Start)/停止(Stop)信号
5,A表应答(低电平),A(__)b表示非应答。
10.4)简介AT24C02使用及程序分析
图5 24C02芯片管脚图
1) A0,A1,A2为 器件地址选择
2) SCL,SDA分别为串行时钟,串行数据线
3) WP为:写保护(高电平时有效,0 → 读写正常;1 → 只能读,不能写)
图6 麦光实验板 24C02连接单片机原理图
简单说明:
(1)WP直接接地,意味着不写保护;SCL、SDA分别接单片机P3.6、P1.3;由于AT24C02内部总线是漏极开路形式的,必须接上拉电阻(R2、R13)。
(2)A2、A1、A0全部接地。24C02地址组成形式为:1010 A2A1A0 R/W(R/W由读写决定),既然A2、A1、A0 都接地了,因此该芯片的地址就是:1010 000 R/W。
(3)剩下部分由于章节过长,若想了解更多,或许需要者,请与下面下载24C02数据手册,以及程序分析!
——————————————————————————-————————————
IIC虽然能令单片机勾搭许许多多的器件,即使你学会IIC的秘籍,或许也学会了勾搭妹子的搭讪技巧,但别忘了你是工科男,专一是你的本性,脚踏实地是你的原则呀!
于2014年03月31日晚
shihlin_812989226 2014-4-15 16:09
谢谢分享!
用户421675 2014-4-5 13:16
用户567054 2014-4-4 12:21
用户430155 2014-4-3 10:46
用户754253 2014-4-3 08:58
用户403664 2014-4-2 17:03
644398774_263592779 2014-4-1 19:41
用户403664 2014-4-1 10:19