马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
DS18B20依靠一个单线端口进行通信,测温范围为-55~+125℃,温度分辨率为9~12bit,上电后默认为12bit。每个温度传感器有一个独特的序列码,当总线上连接多个DS18B20时,总线依靠序列码对特定的传感器进行操作。
由于本开发板只外挂一个DS18B20,因此不需要发送匹配ROM命令[55h],只发送忽略ROM指令[CCh]即可,然后再发送DSB18B20功能指令。
每一次操作DS18B20的协议如下: 1)初始化DS18B20; 2)ROM操作指令; 3)DS18B20功能指令。 本设计中的读取DS18B20的步骤: 1)初始化; 2)发送忽略ROM指令[CCh]; 3)发送DS18B20温度转换指令[44h]; 4)初始化; 5)发送忽略ROM指令[CCh]; 6)发送读取暂存器指令[BEh]; 7)开始读取总线上的数据,读取12次后完成一次温度的读取。 初始化过程: 在初始化过程中,主机通过拉低单总线至少480μs,以产生复位脉冲(TX)。然后主机释放总线并进入接收(RX)模式。当总线被释放后,5kΩ的上拉电阻将单总线拉高。DS18B20检测到这个上升沿后,延时15μs~60μs,通过拉低总线60μs~240μs产生应答(存在)脉冲。因为默认硬件工作正常,不需要检测存在脉冲,简化后的初始化步骤: 1)主机拉低总线500us,然后释放总线; 2)等待500us,初始化完成。 主机向DS18B20写1步骤: 1)主机拉低总线10us,然后释放总线; 2)等待60us; 3)等待2us恢复时间,完成一次写1操作,总共需要72us。 主机向DS18B20写0步骤: 1)主机拉低总线70us; 等待2us恢复时间,完成一次写0操作,总共需要72us。
主机读取DS18B20的温度数据步骤: 1)主机拉低总线2us,然后释放总线; 2)等待10us,在10us结束时进行一次总线数据采样; 3)等待60us,其中包含2us的恢复时间,完成一次数据采样,总共需要72us。 |