资料来源:白文网_嵌入式Linux Wiki _ JZ 2440新一期视频Wiki教程(视频文字版)

作者:贝东山

正文字数:1322,阅读时间:2分钟

精度比DHT11温度和湿度传感器高得多

DS18B20只通过一根数据线传输数据,控制器通过芯片传输数据,通过芯片向控制器传输数据,因此是双向数据传输。

如何在一个引脚上双向传输数据:参考视频19分钟后的内容3360和19以及第_ 001节_I2C协议和EEPROM

需要主芯片来检测温度。

如果有多个温度传感器,当主控制器对其进行管理并发送命令来发送数据时,每个设备在芯片内部都有固化的64位ID ROM,以便区分不同的设备。

主控制器必须发送带有ID返回值的命令才能访问设备

访问指定的DS18B20

发送0低脉冲到准备工作: initialization1,ID命令:ROM Command2执行功能命令: Function Command a转换温度b读取温度,每次进行数据读取工作时,此过程都会重叠

内部箱子

模板传感器温度ADC

scratchpad实际上是9字节内存9位。如下图所示

温度值存储在9byte内存中的BYTE0和BYTE1中。也就是说,在发出温度值的命令后,要读取温度值,还必须发送读取内存的命令

最后一位是CRC检查代码。将前8位数据与最后一位检查代码进行比较,64位数据中的8位是检查代码。

如何取样温度?

1初始化2 ROM命令3 FunctionCommand转换温度4等待完成5 init6 R om cmd7 Function Command读取RAM值等特定值

EEPROM寄存器的前两个字节可用于设置用户自己的目的。还可用于设置Th Tl寄存器Th Tl寄存器。也就是说,用于设置温度上限或下限。温度超过特定值时发出警报。所谓的警报只是在DS18B20上设置状态。您可以在主芯片主芯片上运行特定命令,以确定用于设置精度的警告配置寄存器。

使用EEPROM

1电气EEPROM自动放置在RAM中,以控制精度。

2发出EEPROM a写入命令,首先写入RAM

从B RAM移至EEPROM

读取3个EEPROM值a个EEPROM值存储在RAM中

运行b命令读取RAM

p>

关于ROM命令和功能命令整理成一个表格

信号传输

  • 1怎么initialization(初始化)

  • 2 怎么发数据,怎么发出1bit

怎么发出bit0

怎么发出bit1

  • 3怎么读数据==>怎么读1bit

怎么判读读到0

怎么判断读到1

初始化时序

一开始是高电平,想要开始传输信号,必须要拉低至少480us释放总线 经过15~60us之后 DS18B20会把这条线拉低60~240us

2 怎么发数据,怎么发出1bit

  • 怎么发出bit0
  • 怎么发出bit1

写数据时序

不论是写0还是写1时序都是大于60us 写0拉低总线维持60us以上 写1时,信号线拉低1us时间,提醒要写数据了,然后回高,写1位之间的时间间隔1us

读数据时序 也是由主机发起 提醒脉冲大于1us,主机马上释放总线 在15us之内读信号,一个读周期至少是60us,每位的间隔也是1us

DS18B20提供了编程图

供电方式

「新品首发」STM32MP157开发板火爆预售!首批仅300套

相关推荐