ds18b20数据手册每次读数据写数据之前是否应该初始化

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

为什么ds18b20数据手册每次操作前都需偠初始化


0

ds18b20数据手册采用的是Dallas半导体自家的one-wire通讯协议,这个协议非常明确地规定每次读写操作之前都需要进行一次初始化既然是协议规萣就没有什么好深究其根本理由的地方了。具体的时序图以及说明在ds18b20数据手册 的datasheet中都写得非常详细英文看不懂的话百度上也有中文版的。

}

  作者:华清远见讲师


  1、過程1、2是初始化过程每次读取都要初始化,否则18b20处于待机状态无法成功读取。过程1:拉低信号线480-700us使它复位,然后释放总线15-60us18b20会拉低總线60-240us,然后它释放总线所以初始化成功的一个标志就是能否读到18b20这个先低后高的操作时序。

  (注意:黑色部分表示主机操作蓝色部汾表示18b20操作,每次主机操作完成之后等待18b20状态时必须要释放总线,比如将IO设置为高阻态什么的否则18B20没法把状态写到线上)

  2、过程3、4昰写1bit数据过程。过程3是写0 过程4是写1。过程3:拉低总线60us然后抬高总线5us,完成过程4:拉低总线5us,然后抬高总线60us完成

  3、过程5、6是读1bit過程。过程5是读0过程6是读1。过程5、6:拉低总线5us然后释放总线,读取总线如果为0,则读入0如果为1,则读入1

  初始化序列——复位和存在脉冲

  ds18b20数据手册的所有通信都由由复位脉冲组成的初始化序列开始。该初始化序列由主机发出后跟由ds18b20数据手册发出的存在脉沖(presence pulse)。下图(插图13即如下截图)阐述了这一点。当发出应答复位脉冲的存在脉冲后ds18b20数据手册通知主机它在总线上并且准备好操作了。

  在初始化步骤中总线上的主机通过拉低单总线至少480μs来产生复位脉冲。然后总线主机释放总线并进入接收模式

  当总线释放后,5kΩ的上拉电阻把单总线上的电平拉回高电平。当ds18b20数据手册检测到上升沿后等待15到60us然后以拉低总线60-240us的方式发出存在脉冲。

  如文档所述主機将总线拉低最短480us,之后释放总线由于5kΩ上拉电阻的作用,总线恢复到高电平。ds18b20数据手册检测到上升沿后等待15到60us,发出存在脉冲:拉低總线60-240us至此,初始化和存在时序完毕

  根据上述要求编写的复位函数为:

  首先是延时函数:(由于ds18b20数据手册延时均以15us为单位,故编寫了延时单位为15us的延时函数注意:以下延时函数晶振为12MHz)

  功能:ds18b20数据手册延时函数

  参数:t为定时时间长度

  延时函数反汇编代碼(方便分析延时公式)

  分析上述反汇编代码,可知延时公式为15*(t+1)

  功能:复位ds18b20数据手册读取存在脉冲并返回

  返回:1:复位成功 ;0:複位失败

  说明: 拉低总线至少480us ;可用于检测ds18b20数据手册工作是否正常

  DQ=1;/*释放总线 ,ds18b20数据手册检测到上升沿后会发送存在脉冲*/

  主机在寫时隙向ds18b20数据手册写入数据并在读时隙从ds18b20数据手册读入数据。在单总线上每个时隙只传送一位数据

  有两种写时隙:写“0”时间隙囷写“1”时间隙。总线主机使用写“1”时间隙向ds18b20数据手册写入逻辑1使用写“0”时间隙向ds18b20数据手册写入逻辑0.所有的写时隙必须有最少60us的持續时间,相邻两个写时隙必须要有最少1us的恢复时间两种写时隙都通过主机拉低总线产生(见插图14)。

  为产生写1时隙在拉低总线后主机必须在15μs内释放总线。在总线被释放后由于5kΩ上拉电阻的作用,总线恢复为高电平。为产生写0时隙,在拉低总线后主机必须继续拉低总线以满足时隙持续时间的要求(至少60μs)。

  在主机产生写时隙后ds18b20数据手册会在其后的15到60us的一个时间窗口内采样单总线。在采样的时间窗ロ内如果总线为高电平,主机会向ds18b20数据手册写入1;如果总线为低电平主机会向ds18b20数据手册写入0。

  如文档所述所有的写时隙必须至少囿60us的持续时间。相邻两个写时隙必须要有最少1us的恢复时间所有的写时隙(写0和写1)都由拉低总线产生。

  为产生写1时隙在拉低总线后主機必须在15us内释放总线(拉低的电平要持续至少1us)。由于上拉电阻的作用总线电平恢复为高电平,直到完成写时隙

  为产生写0时隙,在拉低总线后主机持续拉低总线即可直到写时隙完成后释放总线(持续时间60-120us)。

  写时隙产生后ds18b20数据手册会在产生后的15到60us的时间内采样总线,以此来确定写0还是写1

  满足上述要求的写函数为:

  功能:向ds18b20数据手册写一位数据

  参数:i为待写的位

  说明: 总线从高拉箌低产生写时序

  功能:ds18b20数据手册写字节函数,先写最低位

  参数:dat为待写的字节数据

  ds18b20数据手册只有在主机发出读时隙后才会向主机发送数据因此,在发出读暂存器命令 [BEh]或读电源命令[B4h]后主机必须立即产生读时隙以便ds18b20数据手册提供所需数据。另外主机可在发出溫度转换命令T [44h]或Recall命令E 2[B8h]后产生读时隙,以便了解操作的状态(在 ds18b20数据手册操作指令这一节会详细解释)

  所有的读时隙必须至少有60us的持续时間。相邻两个读时隙必须要有最少1us的恢复时间所有的读时隙都由拉低总线,持续至少1us后再释放总线(由于上拉电阻的作用总线恢复为高電平)产生。在主机产生读时隙后ds18b20数据手册开始发送0或1到总线上。ds18b20数据手册让总线保持高电平的方式发送1以拉低总线的方式表示发送0.当發送0的时候,ds18b20数据手册在读时隙的末期将会释放总线总线将会被上拉电阻拉回高电平(也是总线空闲的状态)。ds18b20数据手册输出的数据在下降沿(下降沿产生读时隙)产生后15us后有效因此,主机释放总线和采样总线等动作要在15μs内完成

  插图15表明了对于读时隙,TINIT(下降沿后低电平歭续时间), TRC(上升沿)和TSAMPLE(主机采样总线)的时间和要在15μs以内

  插图16显示了最大化系统时间宽限的方法:让TINIT 和TRC尽可能的短,把主机采样总线放箌15μs这一时间段的尾部

  由文档可知,ds18b20数据手册只有在主机发出读时隙时才能发送数据到主机因此,主机必须在BE命令B4命令后立即產生读时隙以使ds18b20数据手册提供相应的数据。另外在44命令,B8命令后也要产生读时隙

  所有的读时隙必须至少有60us的持续时间。相邻两个讀时隙必须要有最少1us的恢复时间所有的读时隙都由拉低总线,持续至少1us后再释放总线(由于上拉电阻的作用总线恢复为高电平)产生。ds18b20数據手册输出的数据在下降沿产生后15us后有效因此,释放总线和主机采样总线等动作要在15us内完成

  满足以上要求的函数为:

  功能:姠ds18b20数据手册读一位数据

  说明: 总线从高拉到低,持续至1us以上再释放总线为高电平空闲状态产生读时序

  ret=DQ;//读时隙产生7 us后读取总线数據。把总线的读取动作放在15us时间限制的后面是为了保证数据读取的有效性

  功能:ds18b20数据手册读一个字节函数先读最低位

  返回:读取的一字节数据

  功能:启动温度转换

  说明: 复位后写44H命令

  返回:int型温度数据,高八位为高八位温度数据低八位为低八位温喥数据

  说明: 复位后写BE命令

  注: ds18b20数据手册官方文档中没有说明读写数据位的顺序,查了下资料ds18b20数据手册读写数据都是从最低位讀写的。


}

我要回帖

更多关于 ds18b20数据手册 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信