基于DS18B20和nRF2401的库区测温网络无线传输系统

3.1.2 读写操作

所有的读写时序至少需要60μs,在位读和位写时序中,主机要在规定的时间内读回或写出数据。

写时序时,主机在拉低总线15μs之内释放总线,并向1-wire器件写1;读时序时,主机发出读数据命令,产生读时序,1-wire器件随即向主机传输数据。

3.2 DS18B20的温度转换

DS18B20网络温度测量的步骤一般是:器件初始化、复位、ROM操作、温度转换。初始化及复位完成后,要对网络中的器件进行ROM识别,然后再读取温度数据。3.2.1 利用二叉树遍历算法进行器件识别

二叉树遍历算法是搜索识别网络中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分支,若前者[10];二是DS18B20中64位ID码标记为第1—64位,而不是0—63位,空出来的0用来表示差异位位置记录的初始状态。