DS18B20用的是1-write总线。这种总线其实还是比较方便的。这个芯片使用注意事项就是要严格按照事件序列来。 1、发送一个初始化命令(复位脉冲) 2、发送ROM命令 3、发送功能命令
其实rom命令主要是用来识别不同设备的,如果你只用了一个此芯片,那基本就是使用跳过命令就可以了。 功能命令 温度转换【44h】 初始化单次温度转换,温度转换的数据在暂存寄存器的0 ,1 byte中。采用寄生电源时,该命令执行10us后主设备必须强制拉高数据线。 如果用外部供电,主设备可以执行读取数据时序 写入暂寄存器【4Eh】这个命令允许控制器写3个字节的数据到byte2 3 4 所以数据都是低位先发原则。写入之前主设备必须先对从设备复位 读取暂寄存器【BEh】这个命令允许控制器读暂寄存器的内容,从0字节开始发直到8字节。主设备若只需要暂存寄存器中部分数据,则可以在读数据中通过复位终止 复制暂存寄存器【48h】这个命令会将byte2 3 4的内容复制到eeprom 如果采用寄生模式,命令发送后10us后主设备要强制拉高总线10MS 召回EEPROM 将eeprom中的值召回byte2 3 4 可以在召回后执行读取数据时许,若在进行召回响应0,召回响应1; 读取供电模式【B4h】 通过执行该命令之后在执行读取数据时序来确定总线是否是计生供电,在读取数据时序中,寄生模式会拉低总线,外部供电会释放总线让其保持在高电平 通过这些命令来操作芯片。
关于初始化 主设备拉低总线480US来发射复位脉冲,之后主设备释放总线进入接受模式。总线释放后,5K欧左右的上拉电阻将总线拉至高电平。,当芯片检测到上升边沿信号后,等待15到60US后通过把总线拉低60 -240us来发送存在脉冲。 也就是说,发送复位60us后,收到0那么久是收到存在脉冲
这个命令其实就是看一下设备是否正常,每次执行各种行动之前都要复位一下。 也可以用复位命令来打断读取暂时寄存器命令,达到读取部分字节的目的
关于读写时序 读写时序其实都是要控制器拉低总线来进行初始化,在发送完功能命令之后拉低,拉低超过1us为读,拉低接着释放或持续拉低为写。而且两个时序之间要由1us的恢复时间,让上拉电阻来拉高电平。 每个时段持续60us
需要注意的是写时段时,芯片会在15~60us之间某个时段进行采样,写1时,一定要在15us以内释放掉总线。写0时,要持续拉低总线。 读的时候要保证在15us内读完,15us后读的数据就失效了。因为15us后芯片会释放总线,总线会被上拉电阻拉高。
总之:写1拉低立即释放,写0持续拉低60ms。 读1 或0就是要拉低1us后释放。剩下的就是寄存器的事了,不过拉低后要立即收取数据
//================================================================================================================================ 下面是对手册的一些重要内容的翻译特点:http://www.doc88.com/p-2498209808392.html https://wenku.baidu.com/view/6114b106a76e58fafbb00301.html 只需要一个引脚通讯 1、每个器件都由唯一的64位串行代码,存在板级ROM 2、多点功能简化了分布(多点组网,串联) 3、不需要外部器件 4、可以通过data线供电,3V-5.5V 5、测量范围 55℃-125℃ 6、10℃ 到86℃ 由0.5℃的偏差 7、温度分辨率可以选择9位到12位 8、将温度转换为12位数字在最多750MS内(在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快 ) 9、用户可定义的非易失性警报设置 10、报警搜索超出程序设定限制的命令标识和地址设备 11、可用的由8管脚SO(50mils),8管脚 μSOP,和3管脚TO-92封装 12、软件兼容DS182213、应用包括恒温控制,工业系统,消费品,温度计或者热敏系统 负温度S=1正温度S=0 温度数据以16位标志扩展二进制补码形式存储在温度寄存器中。 上电复位时,温度寄存器中值位+85 总线必须在温度转换命令或暂存寄存器开被命令下达10US后提供一个上拉,在温度转换期间或数据传送(10MS)期间,总线必须一直拉高。采用外部供电,当发送完温度转换命令时【44h】,主设备可以执行“读数据时序”,若此时温度转换正在进行,将会响应0.若完成转换则响应1。 配置寄存器止可写入bit5,6 用来配置转换精度
如果总线被拉低480US 所以设备都会复位 事件序列:1、初始化 2、ROM命令(紧跟任何数据交换请求)3、DS19B20功能命令(紧跟任何数据交换请求) 如果任何一个步骤丢失或没执行。则DS18B20不会想要。除了ROM搜索命令和报价搜索命令外。 ROM命令 读取ROM【33h】 直接读取64位ROM编码 匹配ROM【55h】 匹配ROM命令后跟随发送64位ROM编码,使得主设备匹配从设备。 跳过ROM 【cch】 多设备是是同时对多设备进行命令。只有一个设备时,读取寄存器命令可以跟随跳过ROM命令。不用发送64位编码 功能命令 温度转换【44h】 初始化单次温度转换,温度转换的数据在暂存寄存器的0 ,1 byte中。采用寄生电源时,该命令执行10us后主设备必须强制拉高数据线。 如果用外部供电,主设备可以执行读取数据时序 写入暂寄存器【4Eh】这个命令允许控制器写3个字节的数据到byte2 3 4 所以数据都是低位先发原则。写入之前主设备必须先对从设备复位 读取暂寄存器【BEh】这个命令允许控制器读暂寄存器的内容,从0字节开始发直到8字节。主设备若只需要暂存寄存器中福分数据,则可以在读数据中通过复位终止 复制暂存寄存器【48h】这个命令会将byte2 3 4的内容复制到eeprom 如果采用寄生模式,命令发送后10us后主设备要强制拉高总线10MS 召回EEPROM 将eeprom中的值召回byte2 3 4 可以在召回后执行读取数据时许,若在进行召回响应0,召回响应1; 读取供电模式【B4h】 通过执行该命令之后在执行读取数据时序来确定总线是否是计生供电,在读取数据时序中,寄生模式会拉低总线,外部供电模式会释放总线让其保持在高电平
DS18B20采用严谨的1-write总线通信协议,该协议定义了多个信号形式:复位脉冲。存在脉冲(从设备发送),存在脉冲,写0 写1.读0 读1
复位和存在脉冲。。。初始化期间,主设备拉低总线480US来发射复位脉冲,之后主设备释放总线进入接受模式。总线释放后,5K欧左右的上拉电阻将总线拉至高电平。,当1820检测到上升边沿信号后,等待14到60US后通过把总线拉低60 -240us来发送存在脉冲。 读写时段:每个时段只能传送一个位的数据。
写时段:写1和写0时段,。 每个时段最小必须由60us的持续时间且独立的写时段至少由1us的恢复时间,两个写时段都由主设备通过将总线拉低来进行初始化,
为了形成写1时段,主设备必须在15us内释放总线,当总线释放后,上拉电阻将总线拉高。写0时段,总线拉低后,整个时段期间主设备必须一致拉低总线至少60ms主设备初始化后写时段后,从设备会在15到60US的时间窗口内对总线进行采用,如果采样时段是高则写入1,如果是低则写入0
读时段: 在主设备执行完读寄存器【BEh】或读取供电模式【B4h】后,必须及时生产读时段。可以在,执行完转换温度或拷贝命令后生产读时段以获取操作信息。
每个读时段也是最小60us,且独立的读时段至少由1us回复时间,**通过主设备将总线拉低超过1US再释放来初始化。**完成初始化后,从设备会像总线发送0或1;从从设备输出的数据在初始化读时序后只有15us有效时间,因此主设备改读时段后15us内必须释放总线,并对总线采用。