笔记1wire
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2013-9-24
1-Wire总线测温网络的构建
软件编程:
二叉树遍历算法
二叉树遍历算法是搜索识别网络中1-Wire器件的编程首选,二叉树遍历算法的要点可归纳为“读2位,写1位”。
编程思路:
首先主机向从机发出搜索命令,等待从机向主机发回当前位之后,再读从机发回当前位的反码,这两个位数据的编码存在4种可能:00、01、10和11。
00表示从机在当前位上有位分叉,即0和1两个分支;01表示从机的当前位均为0;10表示从机的当前位均为1;11表示总线上无器件响应。
显然,出现11时搜索应退出。
对于前3种情况,根据搜索策略,主机向从机写1位数据,决定继续搜索哪一分支。
第2和第3种情况下,搜索仅有一个方向,如果是第1种情况即出现00时,需要选择下一步搜索路径,方法是比较搜索位所在位置和最后一次发生位差异的所在位置,若二者相等,搜索1分支,若前者>后者,搜索0分支,若前者<后者,则采用上一次的搜索路径。
在此有两点需要注意:一是网络上从机发回的位数据呈“线与”关系;二是DS18B20中64位ID码分别标记为第1—64位,而不是0—63位,空出来的0用来表示差异位位置记录的初始状态。
1-wire总线定义了复位脉冲、应答脉冲、写操作、读操作等几种信号类型,所有的1-wire总线命令序列都是由这些基本的信号类型组成。
(1)复位子函数
主机通过拉低总线至少480ms产生复位脉冲,然后释放总线,主机释放总线时,会产生低电平向高电平的跳变,之后延时60ms,等待DS18B20的应答,DS18B20通过拉低总线240ms产生应答脉冲,主机收到器件的应答脉冲后,说明有1-wire 器件在线,然后主机就可以对DS18B20进行ROM命令。
(2)读写操作
所有的读写时序至少需要60ms,写时序时,主机在拉低总线15ms之内释放总线,并向1-wire器件写1。
1-wire器件仅在主机发出读时序时才向主机传输数据,因此,当主机发出读数据命令后,必须马上产生读时序,以便1-wire器件传输数据[4]。
(3)温度转换
1-wire器件工作时,首先需要进行ROM操作,然后转换温度。
编程时需注意三点。
⑴DS18B20ROM命令共5种,读ROM、匹配ROM、跳过ROM、搜索ROM、报警。
⑵增加延时函数,确保温度转换完成。
(3)读出温度数据后,要进行数据转换。
读出温度低8位和高8位,把此低8位和高8位转换为1个16位的数,其高5位是相同的,代表符号;低11位,是温度的二进制数,其中高7位是温度整数,低4位是温度小数;如果是负温度,则从温度寄存器读出的是补码,应将补码取反加1得到原码。
DS18B20的小数位可以这样理解:单片机发出读取温度寄存器命令后,DS18B20会返回9组数据,其中第一组数据的低4位代表温度小数部分,换言之,即是把1度分解为16个4位二进制数来表示,则温度小数部分的精度为1/16=0.0625。
与列举ID号编程的比较
列举ID法需要预先储存器件ID号,然后接入全部器件读取温度,实验需分两步进行。
储存ID号时,仅允许接入一只器件,此器件操作完成后取下,再接入另一只器件,效率低下,且频繁插拔对电路板及器件均有损伤,因此这种编程方法在实际应用中比较受限。
二叉树搜索可以直接读取总线上所有器件温度,功能强大,操作简便,是1-Wire总线器件组网编程的首选[5]。
1-W ire 总线技术的通信特点及其应用
无收获
在DS18B20的有关资料中均未提及1-Wire上所挂DS18B20 数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。
当1-Wire 上所挂DS18B20超过8 个时,就需要考虑微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
连接DS18B20的总线电缆是有长度限制的。
试验中,当采用普通信号电缆传输长度超过50米时,读取的测温数据将发生错误。
当将总线电缆改为双绞线带屏蔽电缆时,正常通信距离可达150米。
这主要是由于总线分布电容使信号波形产生畸变造成的。
因此,在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。
实际应用中,测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。
2013-9-25
所有的1-Wire 总线器件都具有一个共同的特征:出厂时每个器件都有一个与其他任何器件互不重复的固定序列号。
也就是说,每一个器件都是唯一的。
这就使得可以在众多连到同一总线的器件中选择出任意一个器件进行通信,一旦器件的序列号已知,通过访问序列号,任何器件都可被唯一地选出,以用于通信。
1-Wire总线器件是把模拟信号数字化,1-Wire 总线上传的是数字信号,系统抗干扰性能好、可靠性高,缺点是一旦某个元件接触不好或断线,就很容易造成没有返回信号,使程序进入死循环,所以在进行软件设计时要格外注意。
2013-9-26
1-Wire 器件与8051 系列单片机的软件接口。