




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机应用设计I2C总线,学习内容:一。总线(I2C总线)。二。AD、DA转换(PCF8591)。三。键盘。四。数码管显示。五。通信。(232、485)。六。步进电机驱动控制。,第一篇i2C总线(理论2学时,实践4学时)学习目的:(1).认识i2C总线的实现原理,简单了解其协议思想。(2).通过i2C总线,认识器件之间,以及电路与软件的融合思想。(3).通过i2C总线,使学生能触类旁通的扩展到其它协议类的原理。(4)通过i2C总线,学习单片机控制原理。,i2C(InterIntegratedCircuit)总线:它是PHILIPS公司开发的双向两线制串行总线,用于连接微控制器及其外围设备,属于器件总线。i2C总线产生于80年代,最初为音频和视频设备开发,在彩色电视机中大规模应用,如今主要应用于电讯和影音产品,微控制器与各种功能模块的连接,器件之间的互连通信,在计算机服务器的管理中也大量应用。,应用实例图一,应用实例图二,一。i2C总线特点简单性(2线,电路简单,编程方便)有效性,I2C功能器件包括:实时时钟、LCD驱动、I/O扩展、AD转换器、LED调光、闪光器、LED调光、闪光器、数字温度传感器、数字DIP开关;,i2C总线在IC之间进行双向数据传送,典型速度100Kbit/S,快速模式达400Kbit/S,后来增加了高速模式达3.4Mbit/S。总线的长度可达1000米。i2C总线上的每个电路和模块都有唯一的地址,像手机拨号一样。每一个IC都可以是主控器(或被控器),都可以是发送器(或接收器)。,二。I2C总线的工作原理:数据传输的实质是:通过实现数字逻辑的“与”逻辑来传递二进制1和0的数据。“1”高电平;“0”低电平。,I2C总线接口的实现电路简图,IN=1时,T上拉通,SDA=1;IN=0时,T下拉通,SDA=0。,多个并联,即实现了“与”逻辑。0锁定总线,1释放总线。,2.1I2C总线的构成及信号类型:一。构成:数据线SDA时钟线SCL二。数据传输的有效规则:1.SCL高电平期间,SDA保持不变,数据有效。2.SCL低电平期间,SDA改变,数据变化有效。三。应用方式:1.标准硬件i2C端口(硬核)。2.软件模拟i2C端口(可编程器件用软件实现)。,I2C总线的三种信号类型:开始信号SCL高电平时,SDA产生高到低的下降沿跳变结束信号SCL高电平时,SDA产生低到高的上升沿跳变应答信号接收数据的器件在接收到8bit数据后,向发送数据的器件发出低电平信号,表示已收到数据。这个信号由接收数据的器件发出。发送端收到应答信号后,作出分析判断。若未收到应答信号,则判断为受控单元出现故障。,I2C总线数据传送典型信号时序,串行总线上的数据传送时序图:,2.2总线的工作原理时序图,时间轴,总线数据传送的模拟,(1)总线数据传送的时序要求为了保证数据传送的可靠性,标准的总线数据传送有着严格的时序要求,如总线上时钟信号的最小低电平周期为4.7us,最小的高电平周期为4us等。用单片机的普通I/O口模拟总线的数据传送时,单片机的时钟信号都能满足SDA、SCL上升沿、下降沿的时间要求,因此,在时序模拟时,最重要的是保证典型信号。,(2)I2C总线的控制程序实现:,/*I2C的启动程序*/(时钟线高时,数据线上升沿)VoidI2CStart(void)SDA=1;/释放数据线SomeNOP();/延时SCL=1;/时钟线拉高SomeNOP();/延时SDA=0;/数据线拉低SomeNOP();/延时SCL=0;/时钟线拉低SomeNOP();/延时,/*I2C的停止程序*/(时钟线高时,数据线上升沿)voidI2CStop(void)SDA=0;SomeNOP();SCL=1;SomeNOP();SDA=1;SomeNOP();,/*I2C的应答程序*/,voidACK(void)/Acknowledge信号SDA=0;/发送0,应答SomeNOP();SCL=1;SomeNOP();/产生时钟高电平SCL=0;SomeNOP();voidNACK(void)/没有Acknowledge信号SDA=1;/发送1,非应答SomeNOP();SCL=1;SomeNOP();/产生时钟高电平SCL=0;SomeNOP();,检测应答位,bitTestAck()bitErrorBit;SDA=1;SCL=1;ErrorBit=SDA;SCL=0;return(ErrorBit);,写8位数据,bitWrite8Bit(unsignedcharinput)unsignedchartemp;for(temp=8;temp!=0;temp-)SDA=(bit)(input,读8位数据,unsignedcharRead8Bit()unsignedchartemp,rbyte=0;for(temp=8;temp!=0;temp-)SCL=1;rbyte=rbyte1;rbyte=rbyte|(unsignedchar)(SDA);SCL=0;return(rbyte);,控制字,起始信号后必须是发送控制字。,控制字格式,高4位为器件识别符(不同的芯片有不同的定义,EEPROM一般应为1010),接着3位为片选,也就是三个地址位,最后1位为读写控制位,当为1时为读操作,为0时为写操作。,顺序读的操作:下图给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。,顺序读的操作时序图:,顺序写的操作:与上读操作类似,区别是控制字末位的读写控制位变成0。,读写控制位为0,I2C总线协议写数据到从机主机发送器用10位地址寻址从机接收器,主机发送器用8位地址寻址从机接收器,1ndBYTE,voidWrite24c02(unsignedchar*Wdata,unsignedcharRomAddress,unsignedcharnumber)Start();Write8Bit(WriteDeviceAddress);TestAck();Write8Bit(RomAddress);TestAck();for(;number!=0;number-)Write8Bit(*Wdata);TestAck();Wdata+;Stop();DelayMs(10);,I2C总线协议写数据到从机主机发送器用8位地址寻址从机接收器,I2C总线协议读从机数据主机接收器用8位地址寻址从机发送器,1ndBYTE,先启动一个写命令,发送地址给从机。然后再次启动读命令,读数据。,voidRead24c02(unsignedchar*RamAddress,unsignedcharRomAddress,unsignedcharbytes)Start();Write8Bit(WriteDeviceAddress);TestAck();Write8Bit(RomAddress);TestAck();Start();/再次启动Write8Bit(ReadDviceAddress);TestAck();while(bytes!=1)*RamAddress=Read8Bit();Ack();RamAddress+;bytes-;*RamAddress=Read8Bit();NoAck();Stop();,I2C总线协议读从机数据主机发送器用8位地址寻址从机接收器,在主程序中的调用读写子程序,voidmain(void)Bytebuf1=3,4,5,6,7,8;Bytebuf2;Write24c02(buf1,0,6);Read24c02(buf2,0,6);if(buf11=buf21)LED1=0;if(buf12=buf22)LED2=0;if(buf13=buf23)LED3=0;if(buf14=buf24)LED4=0;while(1);,I2C总线协议组合格式:主机用10位地址寻址从机然后发送数据到这个从机并向这个从机读数据,I2C新发展恩智浦(NXP)公司扩展的I2C控制网络:,结束语I2C总线的应用中的注意事项:1)严格按照时序图的要求进行操作。2)总线必须上拉,即在没有控制时,总线为1。在与逻辑中理解为释放总线。3)程序中为配合相应的传输速率,在对口线操作的指令后,用NOP指令做一定的延时。,(2)总线典型信号的模拟子程序,启动信号子程序STASTA:SETBP1.0;总线启动子程序SETBP1.1NOPNOPCLRP1.1NOPNOPCLRP1.0RET,附汇编语言模拟程序,终止信号子程序STOP,STOP:NOP;停止子程序CLRP1.1SETBP1.0NOPNOPSETBP1.1NOPNOPCLRP1.0RET,附汇编语言模拟程序,发送应答位子程序MACK,MACK:CLRP1.1;应答子程序SETBP1.0;准备发送NOPNOPCLRP1.0SETBP1.1RET,附汇编语言模拟程序,发送非应答位子程序MNACK,MNACK:CLRP1.0CLRP1.1SETBP1.1;非应答子程序SETBP1.0NOPNOPCLRP1.0CLRP1.1RET,附汇编语言模拟程序,(3)总线模拟传送的通用子程序,总线数据模拟传送的通用软件包除了上述基本的启动、停止、发送应答位和发送非应答位子程序外,还有应答位检查(CACK)、发送一个字节数据(WRBYT)、接收一个字节数据(RDBYT)、发送n个字节数据(WRNBYT)、接收n个字节数据(RDNBYT)子程序。,附汇编语言模拟程序,应答位检查子程序CACK,在应答位检查子程序(CACK)中,设置了标志位,CACK中用F0作标志位,当检查到正常应答位后,F0=0,否则F0=1。CACK:SETBP1.1;设P1.1为输入SETBP1.0;准备读CLRF0MOVA,P1;读P1.1JNBACC.1,GEND;判断有无应答SETBF0;P1.1为“1”,无应答,F0=1GEND:CLRP1.0;P1.1为“0”,有应答,F0=0NOPRET,发送一个字节数据(WRBYT)子程序,占用资源:R0,C。WRBYT:MOVR0,#08HCLRP1.0CLRCWLP:RLCAJCWR1AJMPWR2WLP1:DJNZR0,WLPRET,WR1:SETBP1.1SETBP1.0NOPNOPCLRP1.0CLRP1.1AJMPWLP1WR2:CLRP1.1SETBP1.0NOPNOPCLRP1.0AJMPWLP1,接收一个字节数据(RDBYT)子程序,RDBYT:MOVR0,#08HRLP:SETBP1.1SETBP1.0MOVA,P1JNBACC.1,RD0AJMPRD1RLP1:DJNZR0,RLPRETRD0:CLRCMOVA,R2RLCAMOVR2,ACLRP1.0AJMPRLP1,RD1:SETBMOVA,R2RLCAMOVR2,ACLRP1.0AJMPRLP1,发送n个字节数据(WRNBYT)子程序,WRNBYT:PUSHPSWMOVPSW,#18HMOVR3,NUMBYTLCALLSTAMOVA,SLALCALLWRBYTLCALLCACKJBF0,WRNBYTMOVR1,MTDWRDA:MOVA,R1LCALLWRBYTLCALLCACK,LCALLWRBYTLCALLCACKJBF0,WRNBYTINCR1DJNZR3,WRDALCALLSTOPPOPPSWRET,读取n个字节数据(RDNBYT)子程序,RDNBYT:PUSHPSWMOVPSW,#18MOVR3,NUMBYTLCALLSTAMOVA,SLALCALLWRBYTJBF0,RDNBYTRDN:MOVR1,#MRDRDN1:LCALLRDBYMOVR1,ADJNZR3,ACKLCALLMNACKLCALLSTOP,POPPSWRETACK:LCALLMACKINCR1SJMPRDN1,第一篇AD/DA-PCF8591,(1)AIN0AIN3:模拟输入端;(2)VSS:电源地线;(3)A0A2:地址输入端;(4)SDA:总线数据线;(5)SCL:总线的时钟输入端;(6)OSC:外部时钟输入端/内部时钟输出端;(7)EXT:时钟选择端。为1时,用外部时钟;为0时,用内部时钟;(8)AGND:模拟信号地;(9)VREF:基准电源输入端;(10)AOUT:D/A转换模拟,1.PCF8591的主要特性与引脚功能,2PCF8591的结构与应用原理,控制寄存器其控制字格式如下:D1、D0=00时:模拟量输入通道选择0通道D1、D0=01时:模拟量输入通道选择1通道D1、D0=10时:模拟量输入通道选择2通道D1、D0=11时:模拟量输入通道选择3通道,D2:自动增量选择位,此位有效,A/D转换通道自动循环递增,每次A/D转换结束都自动选择下一通道。D3、D7:标志位,必须设置为“0”。D5、D4:模拟量输入方式选择,分别为4路单端输入、3路差分输入、单端与差分混合、两路差分输入4种方式。,D6:模拟量输出允许位,D6=1时激活模拟量输出,3PCF8591的数据操作格式,(1)DAC数据操作格式S:总线的启始信号(电平由高到低);SLAW:总线的8位寻址字节(写);A:应答信号(低电平);CONBYT:PCF8591的控制字,D/A转换时控制字D6位置1;DATA0DATAn:待转换的二进制数;P:总线的终止信号(电平由低到高)。,(2)ADC数据操作格式,S:总线的启始信号;SLAW:总线的8位寻址字节(写);A:应答信号;CONBYT:PCF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 分党校培训工作管理制度
- 互联网公司岗位管理制度
- 培训机构监护室管理制度
- 培训师办公用品管理制度
- 学校解剖实训室管理制度
- 宁夏皮肤美容店管理制度
- 大润发超市消防管理制度
- 幼儿园装修工程管理制度
- 培训老师休息室管理制度
- 海外产品授权管理制度
- 2025年公众生态环境满意度调查方案
- 换瓦合同书安全协议书
- 2025年湖南省长沙市雅礼教育集团中考数学一模试卷
- 第24个全国“安全生产月”专题宣讲
- 2025年4月自考00186国际商务谈判试题及答案含评分标准
- 警务技能抓捕课件
- 2025年教育管理专业考研试题及答案
- 广东省广州市南沙区2025届七下生物期末教学质量检测试题含解析
- DB13T 2700-2018 水工柔性生态防护结构设计规范
- 2025天津中考:语文必背知识点
- 2025汾西矿业井下操作技能人员招聘300人(山西)笔试参考题库附带答案详解
评论
0/150
提交评论