1.复位
主机发送480us-960us的低电平,然后设置端口为高电平,释放总线。
温度传感器接收到复位信号,等待15-60us,拉低总线,发出60-240us的复位应答脉冲。
主机读取总线电平是否为低,如果为低,则判定温度传感器复位。
2.读1bit数据
主机产生一个下降沿,低电平维持至少1us,之后释放总线为高电平,让DS18B20把数据传输到单总线上。
DS18B20在检测到总线被拉低1微秒后,开始发送数据,若是0就把总线拉为低电平直到读周期结束;
若是1则释放总线为高电平。
主机在一开始拉低总线1us后释放总线,然后在包括前面的拉低总线电平1us在内的15us时间内完成对
总线进行采样检测,采样期内总线为低电平则确认为0,采样期内总线为高电平则确认为1,完成一个读时序过程,
至少需要60μs才能完成。
两次读之间间隔至少1us。
3.写1bit数据
写周期60-120us,主机先把总线拉低1us表示写周期开始,随后若主机写0,则继续拉低电平最少60us直至
写周期结束,然后释放总线为高电平;若主机写1,在一开始拉低总线电平1us后就释放总线为高电平,一直到写周期结束。
从机的DS18B20则在检测到总线被拉低后等待15us,然后从15μs到45μs开始对总线采样,在采样期内总线为高电平则为1,
若采样期内总线为低电平则为0。
两次写之间至少间隔1us。
4.读取ID
功能码 0x33(仅仅在总线上只有一个传感器时使用)
复位-发送0x33-读取8字节ID ID=族系码1+串行号6+CRC1
5.获取温度数据
复位->发送0xcc(跳过ROM)->发送0x44(启动温度转换)->等待至少750ms转换完毕
复位->发送0xcc(跳过ROM)->发送0xbe(读取温度寄存器)->低8位在前,高8位在后->转换为实际温度值