《接口技术》:第五章《 I2C串行总线及单总线技术》 课件_第1页
《接口技术》:第五章《 I2C串行总线及单总线技术》 课件_第2页
《接口技术》:第五章《 I2C串行总线及单总线技术》 课件_第3页
《接口技术》:第五章《 I2C串行总线及单总线技术》 课件_第4页
《接口技术》:第五章《 I2C串行总线及单总线技术》 课件_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

第五章I2C串行总线及单总线技术

串行总线广泛用于芯片间的串行数据传输技术。由于串行总线结构简单,连接线少,因此,采用串行总线可以使系统的硬件设计简化、体积小、可靠性高。同时,系统的更改和扩充极为容易。目前,单片机应用系统中使用的串行总线主要有

I2C总线、SPI总线、1-Wire总线。对于无这种接口的89C52等单片机可以用软件模拟串行通信时序。§5.1I2C串行总线扩展技术(软件模拟)

I2C总线是Philips公司推出的一种高性能芯片间的串行传输总线,它仅以两根连线就可实现完善的全双工同步数据传送。I2C总线采用了器件地址的硬件设置方法,通过软件寻址,使硬件系统具有跟简单、灵活的扩展方法。

I2C总线进行数据传输时只需两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有连接到I2C总线上的设备,其串行数据都连接到总线的SDA线上,而各设备的时钟均接到总线的SCL上。I2C总线是一个多主机总线,即一个I2C总线可以有一个或多个主机,总线运行由主机控制。这里所说的主机是指启动数据发送(发起始信号),发终止信号、传送结束时发终止信号的设备。通常,主机由各种单片机担当。被主机寻址的设备叫从机,它可以是各种单片机也可以是其他器件,如IC卡存储器、LED或LCD的驱动器、A/D、D/A转换器、时钟日历器件等。

为了进行通信,每个接到I2C总线上的设备都有一个唯一的地址。主机与从机的数据传送可以是由主机发送数据到总线上其他设备,这时的主机称为发送器。从总线上接收数据的设备称为接收器。单片机ASCLSDA单片机BSCLSDASRAM或E2PROMSCLSDAA/D或D/ASCLSDA日历时钟SCLSDA其他I2C外围设备SCLSDA§5.1.1I2C串行总线的数据传送

I2C总线进行数据传送时,在时钟高电平期间,数据线上必须保持稳定的逻辑电平状态,高电平为“1”,低电平为“0”。只有在时钟线为低电平期间,才允许数据线上的电平状态变化。如下图所示。一、总线上数据的有效性二、数据传送的起始信号和终止信号

根据I2C总线协议的规定,SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。起始和终止信号图如下图所示。1、字节传送与应答每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位),与应答信号相对应的时钟由主机产生,主机必须在这一时钟位上释放数据线,使其处于高电平状态。应答信号为低电平表示继续接收,高电平为非应答表示结束接收。三、数据传送格式四、单主机I2C总线数据传送时序

START:CLRCLK;起始位

NOP NOPSETB IO;IO=SDA,CLK=SCL NOP NOP SETB CLK NOP NOP CLR IO NOP NOP CLR CLK NOP RET

STOP:CLRCLK;停止位

NOP NOP CLR IO NOP NOP SETB CLK NOP NOP SETB IO NOP NOP CLR CLK NOP NOP CLR IO RETWR_BYTE:MOVR5,#08 ;一字节8位数据

CLR CLK NOP NOPWR_BYTE1:RLC A ;带进位位左移,A.8->C MOV IO,C ;SCL低电平时改变SDA上的数据

NOP SETB CLK ;拉高SCL把数据发送出去

NOP NOP CLR CLKNOP NOP DJNZ R5,WR_BYTE1 ;依次发送A中的8位数据

SETB IO SETB CLK JB IO,$ ;等待IC卡ACK信号

CLR CLK NOP RETB;***************A==读出的数据*********************************RD_BYTE:MOVR5,#08 SETB IO ;设备IO为输入状态

CLR A ;清空A寄存器RD_BYTE1:MOVC,IO ;读一位数据到进位位,直到第九个时钟的下降沿泵出

RLC A ;左移数据到A.0 SETB CLK NOP NOP CLR CLK ;泵出下一位数据

NOP NOP DJNZ R5,RD_BYTE1 ;依次读出8位数据到A中

RET ;无应答信号详见IC卡实验§5.2单总线(1-Wire)扩展技术

单总线(1-Wire)是美国Dallas公司推出的外围串行扩展总线。单总线只有一根数据输入/输出线,所有单总线的器件都挂在这根线上,即仅通过1条连接线,便可完成全部的控制、通信和供电。本节以单总线温度传感器DS18B20构成的温度测控系统为例详细介绍单总线的接口方法及应用。§5.2.1单总线(1-Wire)简介

1硬件配置单总线的连接方式如图1-1(a)所示,一个简洁的单总线网络包括三个主要部分:带有控制软件的主控器(由单片机或PC相当),连接上拉电阻和稳压二极管的连接线及各种功能的单总线从器件。每一位读/写时序开始时,主控器把总线拉低,结束时,释放总线为高电平。单总线的内部结构如图1-1(b)所示,单总线接口是用来实现供电和同步的;64位ROM用于存储由生产厂家光刻的、全球唯一的、且不可更改的64位序列号,其中最低8位是器件的类型号,功能相同的一类器件具有相同的类型号,然后是48位的器件序列号,最后8位是CRC校验位,用于验证数据传输的正确性;外围功能部件用来完成某一特定的功能;主控器通过对RAM的读/写操作实现对器件的控制。2通信规程单总线通过主从式、位同步、半双工串行方式通信,规程如下:l总线初始化,主控制器先发复位脉冲,然后从控制器发应答脉冲。lROM指令,主控制器通过ROM指令读取各从器件的ROM识别码(即64位序列号)以选择单总线上的某一从器件。lRAM指令,通过对从器件RAM的读/写操作,让外围器件实现某一功能。1、DS18B20的特性及引脚l

采用单总线技术,与单片机只需要一根I/O线。在一根I/O线上可挂接多个DS18B20.l每个DS18B20具有一个独立的、不可修改的64位序列号,根据序列号可以访问对应器件。l低电压供电,电源范围3-5V。l测温范围-55℃-+125℃,在-10℃-+85℃范围内误差为±0.5℃.l可编程数据为9-12位。l用户可自行设定报警的上、下限温度值。lDS18B20的分辨率可由用户通过EEPROM设置为9-12位。lDS18B20可将检测到的温度值直接转换为数字量,并通过串行通信方式与主控制器进行数据通信。lDQ为数据输入/输出线。§5.2.2DS18B20内部结构2、内部结构

DS18B20的内部结构如图1-2所示。主要包括:寄生电源、温度传感器、64位激光ROM和单总线接口、存放中间数据的高速暂存器RAM、用于存储用户设定温度上下限值的TH和TL触发器、存储与控制逻辑、8位循环冗余校验码(CRC)发生器等8部分。图1-2DS18B20内部结构DS18B20内部存储器由ROM、RAM、EEPROM组成,如图1-3所示字节ROMRAMEEPROM0产品代号(28H)温度低8位148位温度高8位

2器件序列号THTH3

TLTL4

配置寄存器配置寄存器5

保留6

保留7CRC保留8

CRC图1-3DS18B20内部存储器结构

ROM由64位二进制数字组成,共分为8个字节,字节0的内容是该产品的厂家代号28H,字节1~6的内容是48位器件序列号,字节7是ROM前56位的CRC校验码。由于64位ROM码具有唯一性,在使用时作为该器件校对的地址,通过读ROM命令可以将它读出来。64位只读存储器ROMRAM是由9个字节的高速暂存器和非易失性电擦写EEPROM组成。其中字节0/1存储当前温度,字节2、3存储上、下限报警温度TH和TL,字节4是配置寄存器,字节8是RAM前64位的CRC校验码。RAM中EEPROM用于存储TH、TL和配置存储器的值。数据先写入RAM,经校验后再传给EEPROM。通过DS18B20功能命令对RAM进行操作。高速暂存器RAMDS18B20的温度测量范围是-55°c~+125°C,分辨率的默认值12位。表1-4是温度存储格式与配置寄存器控制字的格式。由表1-4可知,检测温度由两个字节组成,字节1的高5位S代表符号位,字节0的低4位是小数部分,中间7位是整数部分,字节4是配置寄存器控制字的格式,当R1R0的值为00B、01B、10B、11B时,对应的分辨率为9、10、11、12。温度存储格式表1-4温度存储格式与配置寄存器控制字的格式

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0字节0232221202-12-22-32-4字节1SSSSS262524字节40R1R011111(1)ROM操作指令

表1-5ROM操作指令命令说明读ROM命令(33H)读总线上18B20的序列号(包括产品编号、序列号和校验码)搜索ROM命令(F0H)对总线上的多个DS18B20进行ROM编码的搜索匹配ROM命令(55H)后继64位序列号对总线上DS18B20寻址,用于多个DS18B20的定位跳过ROM命令(CCH)在单位检测时,跳过ROM编码的搜索报警搜索ROM命令(ECH)搜索有报警的DS18B20的测温点3、DS18B20的命令集

表1-6RAM操作指令命令说明温度转换(44H)启动温度转换读暂存器(BEH)读全部暂存器内容,包括CRC字节写暂存器(4EH)写暂存器第2、3、4字节的数据复制暂存器(48H)将暂存器中的TH、TL和配置寄存器内容复制到EEPROM读EEPROM(B8H)将TH、TL和配置寄存器内容从EEPROM中读至暂存器中读供电方式命令(B4H)检测供电方式

(2)RAM操作指令

当主机发出温度转换命令(44H)时,启动温度转换过程,转换时间最750ms。主机通过读暂存器功能命令(BEH),将温度值读出。通过写暂存器功能命令(4EH),可改变分辨率的设置。

数字式温度传感器和模拟传感器最大的区别,是将温度信号直接转化成数字信号,然后通过串行通信的方式输出。因此,掌握DS18B20的通信协议是使用该器件的关键。所有的DS18B20器件要求采用严格的通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲、应答脉冲时序;写“0”、写“1”时序;读“0”、读“1”时序。与DS18B20的通信,是通过操作时序完成单总线上的数据传输。发送所有的命令和数据时,都是字节的低位在前,高位在后。4、DS18B20的通信协议(1)复位和应答脉冲时序图1-7复位和应答脉冲时序每个通信周期起始于微控制器发出的复位脉冲,其后紧跟DS18B20发出的应答脉冲,如图1-7所示。在写时序期间,主机向DS18B20器件写入数据,而在读时序期间,主机读入来自DS18B20的数据。在每写一个时序,总线只能传输一位数据。1)DS18B20的复位子程序RST:SETBDAT

NOP

NOP

CLRDAT;复位DAT=0

MOVR6,#250DJNZR6,$

movr6,#50djnzr6,$;延时600us

SETBDAT;DAT

=1

MOVR6,#15DJNZR6,$;延时30us

CALL

CHCK;读应答

MOVR6,#60DJNZR6,$;延时120us

SETBDAT;

RETCHCK:MOVC,DAT;读应答

JCRST0;有应答C=0

SETBF0;则置“1”F0SJMPCHCK0RST0:CLRF0;无应答C=0CHCK0:RET;清”0”F0

当主机将单总线DQ从逻辑高(空闲状态)拉为逻辑低时,即启动一个写时序。所有的写时序必须在60-120μs内完成,且在每个时序之间至少需要1μs的恢复时间。写“0”和写“1”时序如图1-8所示。在写“0”时序期间微控制器在整个时序中将总线拉低;而写“1”时序期间,微控制器将总线拉低,然后在时序起始后15μs之内释放总线为高。(1)写时序图1-8写“0”和写“1”时序WRITE_0:CLRDAT;写“0”子程序

MOVR6,#30DJNZR6,$;延时60us

SETBDAT

RETWRITE_1:CLRDAT;写“1”子程序

NOP

NOP

NOP

NOP

NOP;延时12us

SETBDAT

MOVR6,#30DJNZR6,$;延时60us

RETSEND_BYTE:MOVA,R0;写一字节子程序

MOVR5,#8SEN3:CLRCRRCA

JCSEN1LCALLWRITE_0SJMPSEN2SEN1:LCALLWRITE_1SEN2:DJNZR5,SEN3

RETDS18B20器件仅在主机发出读时序时,才向主机传输数据,所以在主机发出读数据命令后,必须马上产生读时序,以便DS18B20能够传输数据。所有读时序至少需要60μs,且在两次独立的时序之间,至少需要1μs的恢复时间。每个读时序都由主机发起,至少拉低总线1μs,读时序如图1-9所示。在主机发起读时序之后DS18B20器件才开始在总线上发送“0”或“1”,若DS18B20发送“1”,则保持总线为高电平;若发送“0”,则拉低总线。当发送0时,DS18B20需在该时序结束后,释放总线,由上拉电阻将总线拉回空闲高电平状态。DS18B20发出的数据,在起始时序之后保持有效时间15μs,因而主机在读时序期间,必须释放总线,并且在起始时序后的15μs之内采样总线状态。(3)读程序READ:SETBDAT;读一位子程序

NOP

NOPCLRDAT

NOP

NOP

SETBDAT;发读时序

NOP

NOP

NOP

NOP

NOP

NOP

NOP

MOVC,DAT;15us内读数据

MOVR6,#23DJNZR6,$;延时45usRETREAD_BYTE:

MOVR5,#8;读一个字节子程序READ1:LCALLREADRRCADJNZR5,READ1

MOVR0,A

RETDSWD:LCALLRST

JNBF0,KEND;F0=1有应答

MOVR0,#0CCH;忽略64位rom地址,直接向DS18B20发温度变换指令

LCALLSEND_BYTE

MOVR0,#44H;启动DS18B20进行温度转换,转换时间最长500ms(典型为200ms),结果存入9字节ram中

LCALLSEND_BYTE

MOV48H,#1SS2:

MOV49H,#255SS1:

MOV4AH,#255

LCALLRST

JNBF0,KEND

MOVR0,#0CCH;忽略64位rom地址,直接向DS18B20发温度变换指令

LCALLSEND_BYTE

MOVR0,#0BEH;读取内部9字节的内容

LCALLSEND_BYTELCALLREAD_BYTE

MOVWDLSB,ALCALLREAD_BYTE

MOVWDMSB,ALCALLTRANS12;温度转换(十进制)子程序KEND:

RETSS0:DJNZ4AH,SS0DJNZ49H,SS1DJNZ48H,SS2启动18B20转换读结果子程序:DATBITP3.7WDLSBDATA30HWDMSBDATA31H/**********************

温馨提示

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

评论

0/150

提交评论