资料来源:白文网_嵌入式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读取温度,读取数据每次工作时此过程都重叠
内部箱子
temperature sensor温度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登录的前2个位元组可让您设定自己的目的。还可用于设置Th Tl寄存器Th Tl寄存器。也就是说,用于设置温度上限或下限。温度超过特定值时,会发出警告。所谓的警报只是在DS18B20上设置状态。您可以在主芯片主芯片上运行特定命令,以确定用于设置精度的警告配置寄存器。精度越高,转换时间越长。
使用EEPROM
1电气EEPROM自动放置在RAM中,以控制精度。
2发出EEPROM a写入命令,首先写入RAM
从B RAM移至EEPROM
读取3个EEPROM值a个EEPROM值存储在RAM中
运行b命令读取RAM
关于ROM命令和功能命令组织到一个表中
outiaoimg.com/large/pgc-image/d91dafc06c904808acaa11d44936ae07?_iz=31825&from=ar;x-expires=1695991367&x-signature=w2ubGpo3%2FpTHMRFYgXFQ67jzoak%3D&index=4" width="640" height="268"/>信号传输
- 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套