实验八系列单片机IIC_第1页
实验八系列单片机IIC_第2页
实验八系列单片机IIC_第3页
实验八系列单片机IIC_第4页
实验八系列单片机IIC_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验八51系列单片机读写I2C总线I2C总线是Philips公司推出的一种双向二线制总线,全称为芯片间总线(InterIntegrateCircuitBUS)。其在芯片间使用两根连线实现全双工同步数据传送,一条数据线(SDA)和一条串行时钟线(SCL),可以很方便地构成外围器件扩展系统。I2C总线是很简单方便的芯片间串行扩展总线。使用I2C总线可以直接和具有I2C总线接口的单片机通信,也可以和各种类型的外围器件进行通信,如存储器、A/D、D/A、键盘、LCD等。目前Philips、Atmel、Maxim以及其他集成电路制造商推出了很多基于I2C总线的单片机和外围器件,如24系列E2PROM、串行实时时钟芯片DS1302、USB2.0芯片CY7C68013A等。本章主要介绍了I2C总线的工作原理、结构以及寻址方式,并重点介绍了数据传输协议以及程序实现。这些程序均以子程序的形式提供,便于读者调用。最后通过具体的实例,介绍如何使用单片机读写具有I2C总线接口的E2PROM。I2C总线概述I2C总线对数据通信进行了严格的定义,要进行I2C总线的接口设计,就需要首先了解I2C总线的工作原理图、寻址方式和数据传输协议等。8.0I2C总线工作原理典型的I2C总线系统结构,如图28.1所示。其采用两线制,由数据线SDA和时钟线SCL构成。总线上挂接的单片机(主器件)或外围器件(从器件),其接口电路都应具有I2C总线通信能力。8.1I2C总线的电气结构和负载能力I2C总线的SCL和SDA端口输出为漏极开路,因此使用时上必须连接上拉电阻。不同型号的器件对上拉电阻的要求不同,可参考具体器件的数据手册。上拉电阻的大小与电源电压、传输速率等有关系。I2C总线的传输速率可以支持100kHz和400kHz两种,对于100kHz的速率一般采用10KΩ的上拉电阻,对于400kHz的速率一般采用2KΩ的上拉电阻。I2C总线上的外围扩展器件都是属于电压型负载的CMOS器件,因此总线上的器件数量不是由电流负载能力决定,而是由电容负载能力确定。I2C总线上每一个节点器件的接口都有一定的等效电容,这会造成信号传输的延迟。通常I2C总线的负载能力为400pF(通过驱动扩展可达4000pF),据此可计算出总线长度及连接器件的数量。8.3I2C总线器件的寻址方式I2C总线上的所有器件连接在一个公共的总线上,因此,主器件在进行数据传输前选择需要通信的从器件,即进行总线寻址。I2C总线上所有外围器件都需要有惟一的地址,由器件地址和引脚地址两部分组成,共7位。器件地址是I2C器件固有的地址编码,器件出厂时就已经给定,不可更改。引脚地址是由I2C总线外围器件的地址引脚(A2,A1,A0)决定,根据其在电路中接电源正极、接地或悬空的不同,形成不同的地址代码。引脚地址数也决定了同一种器件可接入总线的最大数目。地址位与一个方向位共同构成I2C总线器件寻址字节。寻址字节的格式如表所示。方向位(R/)规定了总线上的主器件与外围器件(从器件)的数据传输送方向。当方向位R/=1,表示主器件读取从器件中的数据;R/=0,表示主器件向从器件发送数据。8.3I2C总线数据传输协议及其程序详解I2C总线规定了严格的数据通信格式,所有具有I2C总线接口的器件都必须遵守。另外,对于应用最广的51系列单片机,却没有提供I2C总线接口。实际上,利用这些单片机的普通I/O口,采用软件模拟I2C总线SCL和SDA上的数据传送时序,完全可以实现对I2C总线器件的读、写操作。下面就分别介绍数据传输过程中的格式以及如何使用8051单片机来实现。这里假设51系列单片机的外接晶振频率为6MHz,单片机的机器周期为2µs,采用P1.0作为时钟线SCL,P1.1作为数据线SDA。8.3.1起始信号起始信号用于开始I2C总线通信。在时钟线SCL为高电平期间,数据线SDA上出现由高电平向低电平变化的下降沿时,被认为是起始信号。起始信号出现以后,才可以进行寻址或数据传输等。如果采用C语言进行程序设计,则其程序示例如下:voidI_Start(){ SDA=HIGH; I_Delay(100); SCL=HIGH; I_Delay(100); SDA=LOW; I_Delay(100); SCL=LOW; I_Delay(100);}8.3.2终止信号终止信号用于终止I2C总线通信。在时钟线SCL为高电平期间,数据线SDA上出现由低电平到高电平变化的上升沿时,被认为是终止信号。终止信号一出现,所有总线操作都结束,主从器件释放总线控制权。如果采用C语言进行程序设计,则其程序示例如下:voidI_Stop(){ SDA=LOW; I_Delay(100); SCL=HIGH; I_Delay(100); SDA=HIGH; I_Delay(100); SCL=LOW; I_Delay(100);}8.3.3应答信号应答信号用于表明数据传输的结束。I2C总线数据传送时,每传送一个字节数据后都必须有应答信号。应答信号从主器件产生。主器件在第9个时钟位上释放数据总线,使其处于高电平状态,此时从器件输出低电平拉低数据总线为应答信号。如果采用C语言进行程序设计,则发送应答位子程序示例如下:voidI_Ack(){ SDA=LOW; I_Delay(100); SCL=HIGH; I_Delay(100); SCL=LOW; I_Delay(100); SDA=HIGH; I_Delay(100);}8.3.4非应答信号非应答信号用于数据传输出现异常而无法完成时。在传送完一个字节数据后,在第9个时钟位上从器件输出高电平为非应答信号。非应答信号的产生有两种情况。当从器件正在进行其他处理而无法接收总线上的数据时,从器件不产生应答,此时从器件释放总线,将数据线置为高电平。这样,主器件可产生一个停止信号来终止总线数据传输。当主器件接收来自从器件的数据时,接收到最后一个数据字节后,必须给从器件发送一个非应答信号,使从器件释放数据总线。这样,主器件才可以发送停止信号,从而终止数据传送。8.3.5应答位检查应答位检查用于检测接收的是否为正常的应答信号,以便于判断数据接收是否正常,方便后期处理。如果采用C语言进行程序设计,则检查应答位子程序示例如下:bitI_TestAck(){ bitErrorBit; SDA=HIGH; I_Delay(100); SCL=HIGH; I_Delay(100); ErrorBit=SDA; SCL=LOW; I_Delay(100); return(ErrorBit);}8.3.6总线数据位在I2C总线启动后或应答信号后的第1~8个时钟脉冲,对应于要传送字节的8位数据,数据位由低到高传送。I2C总线上的数据是伴随着时钟脉冲,一位一位地传送的,每位数据占一个时钟脉冲。在时钟线SCL高电平期间,数据线SDA的状态就表示要传送的数据,高电平为数据1,低电平为数据0。在数据传送时,数据线上数据的改变在时钟线为低电平时完成,而时钟线为高电平时,数据线必须保持稳定,否则数据线上的任何变化都会被当作起始或终止信号,而致使数据传输停止。8.3.7写数据I2C总线协议规定了完整的数据传送格式。按照协议规定,数据传输的开始以主器件发出起始信号为准,然后发送寻址字节。寻址字节共8位,高7位是被寻址的从器件地址,最低一位是方向位,方向位表示主器件与从器件之间的数据传送方向,方向位为“0”时表示主器件向从器件发送数据(写)。在寻址字节后是将要传送的数据字节与应答位,数据可以多字节连续发送。在数据传送完毕后,主器件必须发送终止信号已释放总线控制权。如果主器件希望继续占用总线,则可以不产生终止信号,马上再次发送起始信号,并对另一从器件进行寻址,便可进行新的数据传送。写入8位I_Write8Bit(INT8Uinput){ INT8Ui; for(i=0;i<8;i++) {SDA=(bit)(input&0x80); SCL=HIGH; I_Delay(100); SCL=LOW; I_Delay(100); input=input<<1; }}向指定的地址中写入一个字节的数据voidwrite_byte(INT8URomAddress,INT8UWdata){ I_Start(); I_Write8Bit(WriteDeviceAddress); I_TestAck(); I_Write8Bit(RomAddress); I_TestAck();I_Write8Bit(Wdata); I_TestAck();

I_Stop(); I_Wait(20);}8.选3.皮8读数水据I2C总线巨进行深读数品据时前,数菜据传乱输的魂开始厕以主秒器件旷发出扰起始撞信号论为准叮,然读后发陵送寻蚊址字祸节。聚寻址自字节催共8位,籍高7位是睛被寻徐址的稀从器续件地峰址,终最低牵一位哄是方辽向位佩,方演向位脆表示扔主器逗件与甘从器叛件之钟间的探数据掘传送券方向委,方明向位栗为“1”时表内示主唇器件忌从从筒器件旷中接场收数跌据(鹅读)乳。在炊寻址性字节罪后是顷将要屿传送雅的数股据字迎节与剖应答遵位,智数据茫可以膛多字员节连扛续发朵送。猫在数室据传粒送完拾毕后厌,主举器件捆必须轻发送悉终止矮信号光已释遇放总紧线控喝制权纱。如婶果主丛器件旱希望盐继续管占用族总线尼,则涝可以毕不产竖生终根止信国号,陪马上碧再次未发送本起始卖信号并,并畜对另饶一从株器件巴进行物寻址岗,便楚可进愉行新怪的数倦据传佛送。读取8位IN械T8像U汁I_颈Re设ad奋8B迟it轧(){IN挡T8麻U疲i,衰rb溉yt溪e=切0;fo要r(伏i=脂0;歇i<奶8;胶i+张+){S唤CL恼=H浆IG更H;rb偿yt游e=拉rb油yt谣e<宽<1辣;rb进yt大e=卷rb桂yt傅e|价((爪IN蓝T8各U)到(S陪DA好))巨;SC炕L=拾LO归W;}re史tu立rn拳(r桑by咳te塞);}从地削址中么读取塌一个转字节内的数铁据IN地T8鲜U才r蚀ea念d_同ra悄nd维om吧(I来NT软8U垄R检om姓Ad利dr咸es胡s){IN择T8胸U永R乓ea悠d_吃da乌ta群;I_纤St冒ar为t(橡);I_未Wr扩it万e8胳Bi时t(赔Wr安it再eD救ev铲ic辞eA桂dd寄re粒ss惑);I_调Te榆st番Ac狂k(呆);I_抬Wr译it剥e8鸦Bi赚t(销Ro滥mA激dd混re恩ss坟);I_毁Te故st芽Ac眯k(朗);I_涉St宵ar虹t(消);I_兄Wr谎it躲e8小Bi康t(李Re菊ad免De吃vi背ce沿Ad聪dr例es语s)踩;I_驾Te棵st爸Ac欺k(轮);Re邮ad雄_d片at寒a=献I_涨Re纠ad江8B践it奋()飘;I_短No笑Ac密k(斯);I_稍St库op译()店;re当tu蓬rn庭(介Re畅ad罩_d域at满a)河;}8.览451单片舱机读孩写EE灯PR介OMI2C总线固接口级器件疗以体社积小趴、接渗口简弟单、岩读写即操作新方便更等优单点,机使其暗在单蜜片机馅系统这中有姑着广蝇泛的鹊应用改。目扎前常孕用于拦存储霞系统毁必要牢的参睬数,愤如密蛋码、鸡启动晚代码愧、设眼备标葱识等照。例椅如,劫计算间机主樱板中泡的BI指OS就使重用的躁是一骂个带樱有I2C总线驼的EE胡PR筝OM,其愤中保挽存了慕系统交得重信要信起息和畜系统晚参数扣的设剥置程话序。目前US而B接口背及其切设备除越来岭越被复广泛炼使用不,大晨有取威代其赵他老稳式接决口的线趋势烟。然兽而,遣如何勺区分糊计算弦机上托连接鸟的众过多US急B外围猪设备敌呢?默其实种绝大跑部分萄的US猫B接口出芯片计都通谱过上申电读卫一个稼带有I2C总线猜的串辽行EE猫PR逃OM,来换载入蜓该设恢备的ID(包泪括Ve鸦nd挽or幻玉I知D、Pr顿od茅uc炼t梳ID和De勺vi龄ce血I娇D),干根据仙这些ID来区朝分各拉个US巾B设备兵,并慎加载灰相应稍的驱黄动程磁序。8.圈4.把1串行EE位PR档OM存储军器简旨介串行EE捕PR粘OM存储疮器是欣一种复采用希串行衔总线再的存桥储器末,这竿类存脉储器华具有稼体积应小、张功耗孤低、才允许韵工作担电压胡范围恶宽等辆特点谦。目酱前,敢单片睡机系干统中窝使用阔较多冬的EE相PR锣OM芯片航是24系列跑串行EE器PR足OM。其们具有黎型号达多、禽容量跑大、懒支持I2C总线具协议爆、占丈用单惭片机I/莫O端口济少,贺芯片捉扩展闻方便比、读乓写简部单等罚优点融。目前晃,At点me喇l、Mi存cr芒oC消hi梯p、Na怖ti侵on与al等公损司均稻提供安各种穴型号敢的I2C总线扣接口胶的串扬行EE信PR洲OM存储润器。录下面欺以At弯me振l公司蓬的产件品为傲例进咏行介衬绍。AT灵24当C0宣1/贡02错/0辱4/起08系列穴是At昆me丹l公司付典型拖的I2C串行皱总线两的EE怖PR滋OM。这晌里以AT欧24耳C0粥8为例披介绍贝。AT娱24茧C0姐8具有10使24胸×8位的鲜存储仪容量扫,工帅作于泛从器器件模丸式,畏可重锋复擦绑写10惹0万次劝,数域据可纲以掉暑电保橡存10议0年。8引脚DI清P封装纠的AT等24穷C0么8的封花装结即构,兔如图营所示傍。函数予的调月用ma时in绳(){IN查T8飘U城ii仅c_虽da赠t;cl洁r_龄

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论