温度传感器DS18B20读写

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位在后->转换为实际温度值

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章