来源:百问网_嵌入式Linux wiki_jz2440 新1期视频维基教程 (视频文字版)
作者:韦东山
本文字数:1322,阅读时长:2分钟
比DHT11温湿度传感器精度高很多
DS18B20只通过一条数据线传输数据,既要控制器发送数据给芯片,又要通过芯片发送数据给控制器,所以这个是双向传输数据的
怎么在一个引脚上实现数据的双向传输 : 参考这视频的第19分钟之后的内容: 第19课_第001节_I2C协议与EEPROM
检测温度,我们需要一个主控芯片
如果有多个温度传感器,则需要一个主控制器去管理它们,通过发送命令传输数据,每个设备都会有固化在芯片内部的64bit ID的ROM来用于区分不同的设备
如果主控制器想访问设备,必须发送命令,这个命令中带有ID返回值
怎么访问指定的DS18B20
- 0 发出低脉冲,提醒准备工作: initialization
- 1 发出ID命令:ROM Command
- 2 发出功能命令: Function Command a转换温度 b读温度,读数据
每次操作,都要重重上述过程
内部框图
TEMPERATURE SENSOR温度ADC
SCRATCHPAD实际上是一个9 byte的内存 9byte的说明如下图所示
温度值会保存在9byte内存中的 BYTE0 和 BYTE1 也就是当我们发出一个温度值的命令之后,还需要发送一个读内存的命令才能把温度值读取出来
最后一位是CRC校验码,通过前8位的数据和最后一位的校验码比较 64位数据中有8位是校验码,
怎么采样温度?
- 1 初始化
- 2 ROM命令
- 3 FunctionCommand 设置某些值,比如转换温度
- 4等待完成
- 5 init
- 6 R om cmd
- 7 Function Command 读RAM中的值