您当前的位置:五五电子网电子知识电子知识资料总线技术1-wrie总线技术在DS1820上的应用 正文
1-wrie总线技术在DS1820上的应用

1-wrie总线技术在DS1820上的应用

点击数:7353 次   录入时间:03-04 11:40:29   整理:http://www.55dianzi.com   总线技术

  BASCOM代码支持带有特殊命令的单线总线。实际上所必须作的只是决定哪个端口管脚用作总线。可以选择任何所希望的管脚,在这里我们定义使用端口D.5(命令:configlwire=portd.5)。

  每一个操作都是从总线复位(RESET,命令:1wreset)开始的。此后,就可以读、写数据。为了与IC通讯,可以使用SKIPROM命令:(CCh)。

  这可以作为地址使IC注意自己,虽然其地址并没有被提到。

  接下来是温度测量命令:CONVERTT(44h)。

  紧接着,电源必须被打开。虽然在空闲状态下总线已经是“高电平”状态,这时会被拉到低阻抗“高电平”状态(Ddrd.5=1)。为了完成测量,最大时间必须达750ms。为了保证安全,可以总是为此状态分配800ms时间。此后这个端口管脚必须重新配置为输入(Ddrd.5=0)。DS1280现在已经得到了温度数据,但还必须读出它来,为此,首先传送总线复位命令,随后传送读缓冲区命令(BEH)。直到8个字节被从IC中读出。这些字节的意义描述在数据表中(见下图)。温度数据装在两个字节中。但其高位字节仅用来区分温度正(00)和负(FF)。如果希望得到更高的温度分辨率,必须使用更多的字节。但这在第一个例子中是做不到的。在这个最初的试验中,可以假定温度是正的。这意味着只需要读出一个字节。其中包括以0.5度为单位的温度测量值。简单地用2除,就能得到整数度数。

  如果在实验中看到85度的固定温度。这说明温度转换或电源有了故障。因为这是在加电之后和任何温度测量之前的默认设置值。
  
  每个单线总线IC都有一个48位编号,没有两个IC会有相同编号(至少达拉斯公司芯片不会)通过阅读和存储总长8个字节,可以获得这个编号。

  随后可以在总线上使用这个编号作为地址,有选择地与特定的IC通讯。这些IC没有相同的类型,因为每个单总线IC的类型都包括在这个地址之中。(见下图)。

  开始时,可以询问现在总线上有几个IC(命令:1wirecount)。达拉斯总线协议指定,所有的IC最初都以其ID号应答。BASCOM语言使用两个函数:

  1Wsearchfist()和1Wsearchnext()来询问它们。对于每个ID代码,必须分配一个8字节的矢量。

  Dimidl(8)astype,dimid2(8)astype
  
  下表中是单总线上仅限于两个设备的程序实例,显示出这两个芯片的ID,可简单地满足我们的好奇心。它们都以‘10’开始,是DS1820的同族代码。

 

  温度测量程序在下表中。首先使用无地址模式启动一次会话。这意味着:总线上所有的温度测量芯片接到同样的命令,并使它们同时开始测量。当800ms时间间隔过去后,各芯片各自被寻址和读出。

  寻址是通过传送MATCHROM命令(55H),后边接8个ID字节来完成的。这可以通过循环写入不同字节,或者用1WWRITEID2(1),8命令一次性写入。

  传送地址使特定的IC被选中,只有这个IC对读出命令进行应答。现在,就可以读出一个字节,或一次读出8个字节以便增加分辨率(Rom(1)=1WREAD(8))。可以通过评估读入的这组字节中的第7个字节(COUNTREMAIN)来提高温度的分辨率。其中包括一个1~16之间的一个值。它必须被翻译成一个16进制的度数值。但在这里必须小心,因为正常的温度读数(0.5度)的低位字节的最低有效位同样作为countremain寄存器的最高有效位。这意味着必须首先对整个温度值四舍五入,然后再加上16进制计数值。能得到的最好的分辨率是0.06度。因此结果在小数点后用两位数字显示。自然,最终结果要小心处理。因为在精度和分辨率之间总是要清楚地加以区别。当测量范围在-55℃到85℃之间,实际精度约为0.5℃。而增强的分辨率使其很容易识别出很小的温度变化。如果拿着两个顶端紧紧接触的传感器,并且比较它们显示的读数,就可以看到其误差通常小于0.1℃。




本文关键字:技术  DS1820  总线技术电子知识资料 - 总线技术

上一篇:IIC总线特点

《1-wrie总线技术在DS1820上的应用》相关文章>>>