关闭
关闭
首页 > 嵌入式硬件 > 总线与接口

1-Wire总线的基本通信协议

本文引用地址: http://embed.21ic.com/hardware/can/201712/49830.html

作为一种单主机多从机的总线系统,在一条1-Wire总线上可挂接的从器件数量几乎不受限制。为了不引起逻辑上的冲突,所有从器件的1-Wire总线接口都是漏极开路的,因此在使用时必须对总线外加上拉电阻(一般取5kΩ左右)。主机对1-Wire总线的基本操作分为复位、读和写三种,其中所有的读写操作均为低位在前高位在后。复位、读和写是1-Wire总线通信的基础,下面通过具体程序详细介绍这3种操作的时序要求。(程序中DQ代表1-Wire总线,定义为P1.0,uchar定义为unsigned char)

1 1-Wire总线的复位

复位是1-Wire总线通信中最为重要的一种操作,在每次总线通信之前主机必须首先发送复位信号。如程序1.1所示,产生复位信号时主机首先将总线拉低480~960μs然后释放,由于上拉电阻的存在,此时总线变为高电平。1-Wire总线器件在接收到有效跳变的15~60μs内会将总线拉低60~240μs,在此期间主机可以通过对DQ采样来判断是否有从器件挂接在当前总线上。函数Reset()的返回值为0表示有器件挂接在总线上,返回值为1表示没有器件挂接在总线上。

程序1.1 总线复位

uchar Reset(void)

{

uchar tdq;

DQ=0; //主机拉低总线

delay480μs(); //等待480μs

DQ=1; //主机释放总线

delay60μs(); //等待60μs

tdq=DQ; //主机对总线采样

delay480μs(); //等待复位结束

return tdq; //返回采样值

}

2 1-Wire总线的写操作

由于只有一条I/O线,主机1-Wire总线的写操作只能逐位进行,连续写8次即可写入总线一个字节。如程序1.2所示,当MCS-51单片机的时钟频率为12MHz时,程序中的语句_nop_();可以产生1μs的延时,调用此函数时需包含头文件“intrins.h”。向1-Wire总线写1bit至少需要60μs,同时还要保证两次连续的写操作有1μs以上的间隔。若待写位wbit为0则主机拉低总线60μs然后释放,写0操作完成。若待写位wbit为1,则主机拉低总线并在1~15μs内释放,然后等待60μs,写1操作完成。

程序1.2 向总线写1bit

void Writebit(uchar wbit)

{

_nop_();

//保证两次写操作间隔1μs以上

DQ=0;

_nop_();

//保证主机拉低总线1μs以上

if(wbit)

{

//向总线写1

DQ=1;

delay60μs();

}

else

{

//向总线写0

delay60μs();

DQ=1;

}

}

3 1-Wire总线的读操作

与写操作类似,主机对1-Wire总线的读操作也只能逐位进行,连续读8次,即可读入主机一个字节。从1-Wire总线读取1bit同样至少需要60μs,同时也要保证两次连续的读操作间隔1μs以上。如程序1.3所示,从总线读数据时,主机首先拉低总线1μs以上然后释放,在释放总线后的1~15μs内主机对总线的采样值即为读取到的数据。

程序1.3 从总线读1bit

uchar Readbit()

{

uchar tdq;

_nop_();

//保证两次连续写操作间隔1μs以上

DQ=0;

_nop_();

//保证拉低总线的时间不少于1μs

DQ=1;

_nop_();

tdq=DQ;

//主机对总线采样

delay60μs();

//等待读操作结束

return tdq;

//返回读取到的数据

}

数字温度传感器DS18B20

1 DS18B20的基本特性

● 采用1-Wire总线接口,可以方便实现多点测温。

● 与主机连接方便,除5kΩ的总线上拉电阻外无须其他额外器件。

● 电源电压范围为3.0~5.5V,与3.3V和5V数字系统均可很好地兼容。

● 测量范围为-55~+125℃,分辨率为9~12位可编程。

● 通过编程可设置温度报警上下限,设置值掉电不丢失。

● 内部集成了用于器件寻址的64bit光刻ROM编码。

2 DS18B20中的存储器

在DS18B20中共有三种存储器,分别是ROM、RAM、EEPROM,每种存储器都有其特定的功能,可查阅相关资料。

3 1-Wire总线ROM功能命令

在DS18B20内部光刻了一个长度为64bit的ROM编码,这个编码是器件的身份识别标志。当总线上挂接着多个DS18B20时可以通过ROM编码对特定器件进行操作。ROM功能命令是针对器件的ROM编码进行操作的命令,共有5个,长度均为8bit(1Byte)。

①读ROM(33H)

当挂接在总线上的1-Wire总线器件接收到此命令时,会在主机读操作的配合下将自身的ROM编码按由低位到高位的顺序依次发送给主机。总线上挂接有多个DS18B20时,此命令会使所有器件同时向主机传送自身的ROM编码,这将导致数据的冲突。

②匹配ROM(55H)

主机在发送完此命令后,必须紧接着发送一个64bit的ROM编码,与此ROM编码匹配的从器件会响应主机的后续命令,而其他从器件则处于等待状态。该命令主要用于选择总线上的特定器件进行访问。

③跳过ROM(CCH)

发送此命令后,主机不必提供ROM编码即可对从器件进行访问。与读ROM命令类似,该命令同样只适用于单节点的1-Wire总线系统,当总线上有多个器件挂接时会引起数据的冲突。

④查找ROM(F0H)

当主机不知道总线上器件的ROM编码时,可以使用此命令并配合特定的算法查找出总线上从器件的数量和各个从器件的ROM编码。

⑤报警查找(ECH)

此命令用于查找总线上满足报警条件的DS18B20,通过报警查找命令并配合特定的查找算法,可以查找出总线上满足报警条件的器件数目和各个器件的ROM编码。

4 DS18B20器件功能命令

与1-Wire总线相关的命令分为ROM功能命令和器件功能命令两种,ROM功能命令具有通用性,不仅适用于DS18B20也适用于其他具有1-Wire总线接口的器件,主要用于器件的识别与寻址;器件功能命令具有专用性,它们与器件的具体功能紧密相关。下面是DS18B20的器件功能命令。

①启动温度转换(44H)

该命令发送完成后,主机可以通过调用Readbit()函数判断温度转换是否完成,若Readbit()的返回值为0则表示转换正在进行,若Readbit()的返回值为1则表示转换完成。

换一批

延伸阅读

[真心话] 从修理工跻身于电子研发者的艰苦历程,你有什么理由不成功?

从修理工跻身于电子研发者的艰苦历程,你有什么理由不成功?

10年前,16岁的我刚好初中毕业,家里没有条件继续供我读书,于是被送到一个亲戚开的维修店去当学徒。正好也合了我的意,因为从刚刚记事起就摆弄家里的收音机,小学5年级开始拿烙铁,97年初中毕业时,已经对随身听很熟悉了,所以去维修店的第二天便开始......

关键字:修理工 电子研发者

[新鲜事] 可怕的超级病毒!太空环境下细菌进行致命变异

可怕的超级病毒!太空环境下细菌进行致命变异

美国休斯顿大学博士后研究员马德罕·蒂鲁马莱发现,在类似太空的条件下细菌将变异和扩散,做为迄今最严谨的一项研究工作,他观察到大肠杆菌在一个模拟微重力的旋转容器内迅速繁殖1000多代。......

关键字:病毒 太空环境 细菌

[新鲜事] 136年后人类再不用上班:人工智能全部包揽

136年后人类再不用上班:人工智能全部包揽

据牛津大学和耶鲁大学研究人员近日发布的研究报告显示,10年后所有的卡车都将实现自动驾驶,36年后最精细外科手术将由机器人来完成。......

关键字:人类 上班 人工智能

[新鲜事] 元老级工程师宣布退出谷歌:谷歌的创新力已死,只会抄袭

元老级工程师宣布退出谷歌:谷歌的创新力已死,只会抄袭

一名曾在谷歌任职13年的工程师周三对该公司提出批评,他指责这家科技巨头“100%关注竞争对手”,还认为它“已经无力创新”。这位工程师名叫史蒂夫·耶格(SteveYegge),2005年从亚马逊跳槽到谷歌。他在博文中谈到自己离开谷歌的决定时说......

关键字:谷歌 工程师

[真心话] 搞事!微软前CEO鲍尔默自曝:离职前天天在办公室追剧

搞事!微软前CEO鲍尔默自曝:离职前天天在办公室追剧

鲍尔默于2014年初离开微软,因为依然是个人大股东,所以他衣食无忧,退休后“颓废”了短暂一段时间后,他拿下了NBA快船队,出任老板。......

关键字:微软 CEO 鲍尔默

[真心话] 明明数千行代码能搞定的为什么要写数万行?

明明数千行代码能搞定的为什么要写数万行?

本文是小编在FB看到的,觉得挺有意思的,应该是很多公司或者软件工程师都会遇到的,特地转过来分享给大家。......

关键字:代码 工程师

[破谣言] 为什么俄罗斯科学家说把月球炸了,地球才安全?

为什么俄罗斯科学家说把月球炸了,地球才安全?

俄罗斯科学家说把月球炸了,这是一种极端的做法,当然这样的做法对于某个地区的人们来说,可能是受益的,比如俄罗斯。因为在这个提议中指出,月球的引力是地球自然灾害的根源,比如潮汐、自转速度变慢、自转轴倾斜等。......

关键字:月球
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi®和蓝牙®combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14