资源描述
,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,1-wire,总线及应用,一根数据线。设备(主机或从机)通过一个漏极开路端口,连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其它设备所使用。,1-wire,总线端口为漏极开路,单总线要求外接一个约,5k,的上拉电阻,这样单总线的闲置状态为高电平。,主机对,1-Wire,总线的基本操作分为复位、读和写三种,其中所有的读写操作均为低位在前,高位在后。,典型的单总线命令序列,第一步 初始化;,第二步,ROM,命令 跟随需要交换的数据;,第三步 功能命令 跟随需要交换的数据;,1-wire总线及应用 一根数据线。设备(主机或从机)通过一,1,实例:,DS18B20,单线温度传感器,主要特征,全数字温度转换及输出。,1-wire,总线数据通信。,最高,12,位分辨率,精度可达土,0.5,摄氏度。,12,位分辨率,最大工作周期为,750,毫秒。,检测温度范围为,-55+125,。,内置,EEPROM,,限温报警功能。,64,位光刻,ROM,,内置产品序列号,方便多机挂接。,多样封装形式,适应不同硬件系统。,实例:DS18B20单线温度传感器主要特征,2,DS18B20,工作原理,三种形态的存储器资源,ROM,只读存储器,用于存放,DS18B20ID,编码。,RAM,数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,,DS18B20,共,9,个字节,RAM,,每个字节为,8,位。,EEPROM,非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据。,RAM,及,EEPROM,结构图:,DS18B20工作原理三种形态的存储器资源,3,控制器对,18b20,操作流程,复位:,给,DS18B20,单总线至少,480uS,的低电平信号。,存在脉冲:,复位电平结束之后,控制器应该将数据单总线拉高,以便于在,1560uS,后接收存在脉冲,存在脉冲为一个,60240uS,的低电平信号。,控制器发送,ROM,指令:,ROM,指令共有,5,条,每一个工作周期只能发一条,,ROM,指令分别是读,ROM,数据、指定匹配芯片、跳跃,ROM,、芯片搜索、报警芯片搜索。(一般只挂接单个,18B20,芯片时可以跳过,ROM,指令),控制器发送存储器操作指令:,分别是写,RAM,数据、读,RAM,数据、将,RAM,数据复制到,EEPROM,、温度转换、将,EEPROM,中的报警值复制到,RAM,、工作方式切换。,执行或数据读写:,一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。,控制器对18b20操作流程,4,几种时间隙,DS18B20,复位及应答关系,写时间隙,几种时间隙DS18B20复位及应答关系,5,读时间隙,注意:必须在读间隙开始的,15uS,内读取数据位才可以保证通信的正确。,DS18B20,与单片机接法,读时间隙注意:必须在读间隙开始的15uS内读取数据位才可以保,6,示例程序:,void Init_DS18B20(void)/18b20,初始化,DQ=1;/DQ,复位,_nop_();_nop_();_nop_();,DQ=0;/,拉低,DQ,delay(200);/,约,600us,DQ=1;/,拉高总线,delay(20);/75us,30:100us,示例程序:void Init_DS18B20(void),7,uchar Read_byte(void)/,读一字节,uchar i=0;,uchar dat=0;,for(i=8;i0;i-),DQ=1;,_nop_();_nop_();_nop_();_nop_();,DQ=0;/,从高拉到低,产生读时间隙,_nop_();_nop_();/,至少保持低电平,1us,_nop_();_nop_();_nop_();_nop_();,dat=1;/,右移一位,DQ=1;/15us,内停止将,DQ,拉低,15us,内数据有效,_nop_();_nop_();/,稍作延时,_nop_();_nop_();,if(DQ)/,若高电平 置,1,dat|=0 x80;,delay(30);/,至少保持,60us,,,100us,确保读数据成功,DQ=1;/,结束拉高,return(dat);,uchar Read_byte(void)/读一字节,8,void Write_byte(uchar dat)/,写一个字节,uchar i=0;,for(i=8;i0;i-),DQ=1;,_nop_();_nop_();/,稍作延时,_nop_();_nop_();_nop_();_nop_();,DQ=0;/,拉低,DQ,开始写,_nop_();_nop_();,_nop_();_nop_();/15us,内释放总线,_nop_();_nop_();_nop_();_nop_();,DQ=dat/,从,lsb,开始,delay(20);/75us,至少需保持,60us,写时间隙,dat=1;/,右移一位,DQ=1;/,结束拉高,delay(4);,void Write_byte(uchar dat)/,9,uint Get_Temperature(void)/,读温度函数,uchar a=0;,uchar b=0;,uint t=0;,Init_DS18B20();,Write_byte(0 xCC);/,只接一个,18b20,芯片,,skip ROM,Write_byte(0 x44);/,温度转换,delay(200);/,延时,600us,等待转换完成,一般转换时间为,500us,Init_DS18B20();,Write_byte(0 xCC);/skip ROM,Write_byte(0 xBE);/,从,RAM,读数据,a=Read_byte();/,先读低位,b=Read_byte();/,再读高位,t=b8;,t=t|a;/t,为最后读得的数据,return(t);,C51程序设计方案2实例课件,10,双向二线制串行通信总线,时钟线,SCL,数据线,SDA,。,NXP,半导体(原,Philips,半导体)于,20,多年前发明。,I,2,C,总线是同步串行数据传输总线,。,经常使用的带,I,2,C,总线通用外围器件有:,SRAM,、,E,2,PROM,、,ADC/DAC,、,RTC,、,I/O,口等。,带,I,2,C,总线的外围设备模块有由,LED,驱动控制器构成的,LED,显示器,由各种,LCD,驱动控制器构成的段式、字符点阵、图形点阵液晶显示器等。,I,2,C,总线及应用,I2C总线及应用,11,I2C,总线的信号线,I2C,总线只需要由两根信号线组成,一根是串行数据线,SDA,,另一根是串行时钟线,SCL,,均为为开漏结构,故总线上必须有上拉电阻,Rp,,通常可选,5,10k,。,I2C 总线的信号线,12,I2C,总线时序定义:,起始条件和停止条件(,START and STOP conditions,),起始条件:当,SCL,处于高电平期间时,,SDA,从高电平向低电平跳变时产生起始条件。总线在起始条件产生后便处于忙的状态。起始条件常常简记为,S,。,停止条件:当,SCL,处于高电平期间时,,SDA,从低电平向高电平跳变时产生停止条件。总线在停止条件产生后处于空闲状态。停止条件简记为,P,。,I2C总线时序定义:,13,I2C,总线上数据的有效性(,Data validity,),数据线,SDA,的电平状态必须在时钟线,SCL,处于高电平期间保持稳定不变。,SDA,的电平状态只有在,SCL,处于低电平期间才允许改变。但是在,I2C,总线的起始和结束时例外。,I2C 总线上数据的有效性(Data validity),14,从机地址(,Slave Address,),I2C,总线不需要地址译码器和片选信号。多个具有,I2C,总线接口的器件都可以连接到同一条,I2C,总线上,它们之间通过器件地址来区分。,主机是主控器件,它不需要器件地址,其它器件都属于从机,要有器件地址。必须保证同一条,I2C,总线上所有从机的地址都是唯一。,一般从机地址由,7,位地址位和一位读写标志,R/W,组成,,7,位地址占据高,7,位,读写位在最后。读写位是,0,,表示主机将要向从机写入数据;读写位是,1,,则表示主机将要从从机读取数据。,从机地址由一个固定和一个可编程的部分构成。从机地址的可编程部分使最大数量的相同器件可以连接到,I2C,总线上,器件可编程地址位的数量由管脚决定,如果器件,3,个可编程的地址管脚,那么,I2C,总线上共可以连接,8,个相同的器件。,从机地址(Slave Address),15,I2C,数据传输的方式,以字节(,Byte,)为单位收发数据。首先传输的是数据的最高位(,MSB,,第,7,位),最后传输的是最低位(,LSB,,第,0,位)。另外,每个字节之后还要跟一个响应位,称为应答。,应答(,Acknowledge,),每传输一个字节,要跟一个应答状态位。接收器接收数据的情况可通过应答位来告知发送器。应答位的时钟脉冲由主机产生,而应答位的数据状态则遵循“谁接收谁产生”的原则,即总是由接收器产生应答位。主机向从机发送数据时,应答位由从机产生;主机从从机接收数据时,应答位由主机产生。,I2C,总线上第,9,个脉冲对应应答位,,SDA,为,0,表示接收器应答(,ACK,),,A,;为,1,则表示非应答(,NACK,),,/A,。,I2C数据传输的方式,16,基本的数据传输格式,主机向从机发送数据的基本格式,主机从从机接收数据的基本格式,注意:主机向从机发送最后一个字节的数据时,从机可能应答也可能非应答,但不管怎样主机都可以产生停止条件。如果主机在向从机发送数据(甚至包括从机地址在内)时检测到从机非应答,则应当及时停止传输。,基本的数据传输格式主机向从机发送数据的基本格式主机从从机接收,17,数据传输时序图,主机向从机写数据,(,24LC01,),数据传输时序图主机向从机写数据(24LC01),18,主机读从机数据(,24LC01,),主机读从机数据(24LC01),19,EEPROM 24LC01B,主要特征,低至,2.5V,的单电源供电;,低功耗的,CMOS,技术;,128 bytes,(,1288,)的存储块;,标准,2,线串行接口总线,,I,2,C,总线;,兼容,100 kHz(2.5V),、,400kHz(5.0V),;,高达,8 bytes,的页写入缓存;,2 ms,页写入时间周期;,硬件写保护。,EEPROM 24LC01B主要特征,20,硬件电路,硬件电路,21,I2C,通过,IO,口模拟,void Start(void)/,起始信号,Sda=1;,Scl=1;,delay1us();,Sda=0;,delay1us();,void Stop(void)/,停止,Sda=0;,Scl=1;,delay1us();,Sda=1;,delay1us();,I2C通过IO口模拟void Start(void),22,void Ack(void)/,应答,Sda=0;,delay1us();,Scl=1;,delay1us();,Scl=0;,void NoAck(void)/,不应答,Sda=1;,delay1us();,Scl=1;,delay1us();,Scl=0;,void Ack(void)/应答,23,void Send(unsigned char Data)/,发送字节,unsigned char xdata BitCounter=8;,unsigned char xdata temp;,do,temp=Data;,Scl=0;,delay1us();,if(temp&0 x80)=0 x80),Sda=1;,else,Sda=0;,delay1us();,Scl=1;,delay1us();,te
展开阅读全文