STM32_DS18B20_1_芯片简介及初始化配置
DS18B20介绍
DS18B20数字温度计提供9位到12位摄氏度的温度测量,并具有非易失性,用户可编程的上下触发点的报警功能。DS18B20通过1线总线进行通信,根据定义,该总线只需要一条数据线,即可与中央微处理器进行通信。它的工作温度范围为-55°C到+125°C,在-10°C到+85°C的范围内精确到±0.5°C。此外,DS18B20可以直接从数据线获得电力,消除了对外部电源的需要。
每个DS18B20都有一个唯一的64位串行码,它允许多个DS18B20在同一个1线总线上工作。因此,使用一个微处理器来控制分布在大面积区域内的许多ds18b20是很简单的。可以受益于此特性的应用程序包括暖通空调环境控制、建筑物内部的温度监测系统、设备或机械内部的温度监测系统,以及过程监控和控制系统。
引脚说明
| 8引脚SOIC封装 | T0-9封装 | 符号 | 说明 |
| 5 | 1 | GND | 接地 |
| 4 | 2 | DQ | 数据输入/输出引脚。对于单线操作:漏极开漏。当工作在寄生电源模式时用来提供电源(建“寄生电源”节) |
| 3 | 3 | VDD | 可选的VDD引脚。工作与寄生电源模式时VDD必须接地。 |
Tips:上表没说的引脚不需要连接。
DS18B20的另一个功能是可以在没有外部电源供电的情况下工作。当总线处于高电平状态,DQ与上拉电阻连接通过单总线对器件供电。同时处于高电平状态的总线信号对内部电容(Cpp)充电,在总线处于低电平状态时,该电容提供能量给器件。这种提供能量的形式被称为“寄生电源”。作为替代选择,DS18B20同样可以通过VDD引脚连接外部电源供电。
配置寄存器
| bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 |
| 0 | R1 | R0 | 1 | 1 | 1 | 1 | 1 |
可通过按R1和R0来设置DS18B20的精度。上电默认设置:R0=1,R1=1(12位精度)。
Tips:精度和转换时间之间一般成反比。
温度计精确度配置表
| R1 | R0 | 精度 | 最大转换时间 | |
| 0 | 0 | 9-bit | 93.75ms | (Tconv/8) |
| 0 | 1 | 10-bit | 187.5ms | (Tconv/4) |
| 1 | 0 | 11-bit | 375ms | (Tconv/2) |
| 1 | 1 | 12-bit | 750ms | (Tconv) |
温度转换期间(tconv)
执行序列
通过单线总线端口访问DS18B20的协议如下:
- 初始化
- ROM操作指令
- DS18B20功能指令
每次执行DS18B20都需要满足以上步骤,若是步骤缺少或混乱,DS18B20都将不会返回值。
初始化
通过单总线的所有执行操作都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和其后由从机发出的存在脉冲。从机的存在脉冲告知总线控制器DS18B20已就绪。
初始化序列
在初始化序列期间,总线控制器拉低总线并保持480us发出(TX)一个复位脉冲,然后释放总线,进入接受状态(RX)。单总线由5K上拉电阻拉到高电平。当DS18B20探测到I/O引脚上的上升沿后,等待15-60us,然后发出一个由60-240us低电平信号构成的存在脉冲。
简而言之,Vpu单总线刚开始为输出模式,输出480us低电平,然后输出高电平(15-60us)后,转换为上拉输入模式,总线接收到DS18B20的60-240us的低电平存在脉冲。

ROM操作指令
一旦总线控制器探测到一个存在脉冲,他就发出一条ROM指令。如果总线上挂有多个DS18B20,这些指令将通过器件独有的64位ROM片序列码使得总线控制器选出特定的需要控制的器件进行操作。
33h(读取ROM指令)
在总线只有单只DS18B20的时候才能使用这条命令。该命令允许总线控制器在不适用搜索ROM指令的情况下读取从机的64位片序列码;
CCh(忽略ROM指令)
这条指令允许总线控制器不用提供64位ROM编码使用功能指令。
其他ROM指令可以去看DS18B20的手册。
DS18B20控制指令
在总线控制器发给准备连接的DS18B20一条ROM命令后,随之发送一条DS18B20功能指令。这些命令可以让总线控制器读写DS18B20的暂存器,发起一些功能。
44h(温度转换指令)
使用这条指令可以启动一次温度转换。温度转换执行后,产生的温度转换结果数据以2个字节的形式被存储在高速暂存器中,而后DS18B20保持等待状态。如果在寄生电源模式下发出该指令后,在温度转换期间(tconv),在10us之内,给单总线一个强上拉。
B4h(读电源模式指令)
发出指令后,若是寄生电源模式,DS1820将拉低总线,若是外部电源模式,DS18B20将把总线拉高。
供电
DS18B20可以通过从VDD引脚接入一个外部电源供电,或者可以工作与寄生电源模式(通过数据线贡献),该模式允许DS18B20工作于无外部电源供电的状态。寄生电源在远距离测温时非常有用。
Tips:寄生电源模式时,VDD必须接地。
测温操作
DS18B20能够直接读取数字。DS18B20启动后保持低消耗状态;当需要执行温度测量和AD转换时,总线控制必须发出0x44的命令。之后,产生的温度数据以两个字节的形式被存储到高速暂存的温度寄存器中,然后DS18B20继续保持等待状态。
当DS18B20由外部电源供电时,总线控制器在温度转换指令之后发起“读时序”。


读时序
总线控制器发起读时序时,DS18B20 仅被用来传输数据给控制器。因此,总线控制器在发出读暂存器指令[BEh]或读电源模式指令[B4H]后必须立刻开始读时序,DS18B20可以提供请求信息。除此之外,总线控制器在发出发送温度转换指令[44h]或召回 EEPROM 指令[B8h]之后读时序。所有读时序必须最少 60us,包括两个读周期间至少 1us 的恢复时间。当总线控制器把数据线从高电平拉到低电平时,读时序开始,数据线必须至少保持 1us,然后总线被释放。在总线控制器发出读时序后,DS18B20 通过拉高或拉低总线上来传输 1 或 0。当传输逻辑 0 结束后,总线将被释放,通过上拉电阻回到上升沿状态。从 DS18B20 输出的数据在读时序的下降沿出现后 15us 内有效。因此,总线控制器在读时序开始后必须停止把 I/O 脚驱动为低电平 15us,以读取I/O 脚状态。


代码
bsp_ds18b20.c
#include "bsp_ds18b20.h"
void DS18B20_Mode_Out_PP(void)
{GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);
}void DS18B20_Mode_IPU(void)
{GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void DS18B20_GPIO_Configuration(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void DS18B20_Init(void)
{DS18B20_Mode_Out_PP();DS18B20_DATA_OUT(0);Delay_us(750);DS18B20_DATA_OUT(1);Delay_us(15);DS18B20_Mode_IPU();while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_6) != 0);while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_6) == 0);
}
bsp_ds18b20.h
#ifndef __BSP_DS18B20_H__
#define __BSP_DS18B20_H__#include <stm32f10x.h>
#include "bsp_SysTick.h"#define DS18B20_DATA_OUT(a) GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)(a))void DS18B20_GPIO_Configuration(void);
void DS18B20_Init(void);#endif
bsp_SysTick.c
#include "bsp_SysTick.h"unsigned int TimingDelay;void SysTick_Configuration(void)
{while(SysTick_Config(72));SysTick->CTRL &= ~(1<<0); //暂时初始化后先关闭定时器,使用前开启
}
void Delay_us(unsigned int n)
{TimingDelay = n;SysTick->CTRL |= (1<<0); //开启Sys_Tickwhile(TimingDelay);SysTick->CTRL &= ~(1<<0);
}
bsp_Systick.h
#ifndef __BSP_SYSTICK_H__
#define __BSP_SYSTICK_H__#include <stm32f10x.h>extern unsigned int TimingDelay;void SysTick_Configuration(void);
void Delay_us(unsigned int n);#endif
相关文章:
STM32_DS18B20_1_芯片简介及初始化配置
DS18B20介绍 DS18B20数字温度计提供9位到12位摄氏度的温度测量,并具有非易失性,用户可编程的上下触发点的报警功能。DS18B20通过1线总线进行通信,根据定义,该总线只需要一条数据线,即可与中央微处理器进行通信…...
每天一个数据分析题(一百六十四)
关于OLAP系统,下列选项不正确的是() A. 是基于数据仓库的信息进行分析处理过程 B. 用户数量相对较少,其用户主要是业务决策人员与管理人员 C. 对响应时间要求非常高。 D. 基础数据来源于生产系统的操作数据,也就是…...
单词倒排——c语言解法
以下是题目: 这个题中有三个点, 一个是将非字母的字符转换为空格, 第二是如果有两个连续的空格, 那么就可以将这两个连续的空格变成一个空格。 第三个点就是让单词倒排。 那么我们就可以将这三个点分别封装成三个函数。 还有就是…...
Python + Selenium —— 网页元素定位之class name定位!
class 属性可以为元素应用一个或者多个 CSS 样式类。 利用此属性可以与指定的 CSS 样式类关联起来,以此达到设置元素样式的功能。 可以这样理解,比如一个页面上的所有按钮,都想做成同样的样式,那么是不是要在每个按钮上写同样的 c…...
matlab simulink变压器温度仿真
1、内容简介 略 48-可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 matlab simulink变压器温度仿真_哔哩哔哩_bilibili 4、参考论文 略 大型油浸风冷变压器绕组温度场分析_高原 基于顶层油温的变压器绕组热点温度计算改进模型_陈伟根 基于热电类比理论的油浸式电…...
设计模式七:责任链模式
文章目录 1、责任链模式2、spring中的责任链模式Spring InterceptorServlet FilterNetty 1、责任链模式 责任链模式为请求创建了一个接收者对象的链,在这种模式下,通常每个节点都包含对另一个节点者的引用。每个节点针对请求,处理自己感兴趣…...
Git,GitHub与GitLab分别是什么?有什么关系和区别?
Git 定义:Git 是一个分布式版本控制系统,用于跟踪文件的变化,并协助多人协作开发软件项目。作用:Git 可以在本地存储完整的项目历史记录,并允许开发者在不同的分支上进行独立的开发,最后将它们合并到主干分…...
【Spring连载】使用Spring Data访问 MongoDB----Template API 查询Documents
【Spring连载】使用Spring Data访问 MongoDB----Template API 查询Documents 一、 查询集合中的Documents二 选择字段三、 其他查询选项3.1 Hints3.2 游标批大小Cursor Batch Size3.3 Collations3.4 读取首选项Read Preference3.5 Comments 四、查询Distinct值五、GeoSpatial Q…...
git describe
git describe一般用于查看当前提交距离上次最近的tag是什么,并且还可以知道差了多少个commit,在工程实践当中是个非常好用的命令 如果git describe后面什么都不加的话,默认找的是最近的有注释的tag 如何打有注释的tag打注释? g…...
React Switch用法及手写Switch实现
问:如果注册的路由特别多,找到一个匹配项以后还会一直往下找,我们想让react找到一个匹配项以后不再继续了,怎么处理?答:<Switch>独特之处在于它只绘制子元素中第一个匹配的路由元素。 如果没有<Sw…...
PowerShell执行策略:确保脚本安全执行的关键
PowerShell执行策略:确保脚本安全执行的关键 在自动化和脚本任务管理中,PowerShell 是 Windows 系统管理员和自动化工程师的强大工具。但随着这种强大的能力也带来了安全风险,特别是在执行未经验证的脚本时。为了降低这种风险,Po…...
LeetCode 热题 100 | 图论(上)
目录 1 200. 岛屿数量 2 994. 腐烂的橘子 2.1 智障遍历法 2.2 仿层序遍历法 菜鸟做题,语言是 C 1 200. 岛屿数量 解题思路: 遍历二维数组,寻找 “1”(若找到则岛屿数量 1)寻找与当前 “1” 直接或间接连接在…...
跟着cherno手搓游戏引擎【25】封装2DRenderer,封装shader传参,自定义Texture
封装2DRenderer: Renderer.h: #include"ytpch.h" #include"Renderer.h" #include <Platform/OpenGL/OpenGLShader.h> #include"Renderer2D.h" namespace YOTO {Renderer::SceneData* Renderer::m_SceneData new Renderer::S…...
多个值时 if [ -z 报错 binary operator expected
if [ ! -z "\$client_pid" ]; then 报错: line 23: [: 662: binary operator expected 改成 if [[ ! -z "\$client_pid" ]]; then 即可。 unix - binary operator expected error when checking if a file with full pathname exists - Stack Overflo…...
如何使用ChatGPT创建一份优质简历
目录 第一步:明确目标和重点 第二步:与ChatGPT建立对话 第三步:整理生成的内容 第四步:注重行文风格 第五步:强调成就和量化结果 第六步:个性化和定制 第七步:反复修改和完善 总结 在现…...
k8s(6)
目录 一.kubectl 命令行管理K8S 陈述式资源管理方式(可理解成使用一条kubectl命令及其参数选项来实现资源对象的管理操作) service的4的基本类型: service的端口 应用发布策略: 声明式资源管理方式(可理解成使用…...
自动驾驶框架:自动驾驶汽车定位-感知-规划-决策-控制概述,按照我的架构图理解:决策决定的是速度,规划决定的是路径(架构理解推荐)
1.按照我的架构图理解:决策决定的是速度,规划决定的是路径 参考链接:【自动驾驶】运动规划丨速度规划丨自动驾驶速度规划及状态协调方法 2.下面是参考别人的理解: 自动驾驶汽车定位-感知-规划-决策-控制概述 规划-决策-控制知…...
Gemma
Gemma 1.使用2.RAG3.LoRA3.1LoRA分类任务3.2LoRA中文建模任务 1.使用 首先是去HF下载模型,但一直下载不了,所以去了HF镜像网站,下载gemma需要HF的Token,按照步骤就可以下载。代码主要是Kaggle论坛里面的分享内容。 huggingface-…...
淘宝关键词搜索API、搜索商品接口、商品价格监控
淘宝搜索引擎的工作原理: 淘宝搜索引擎的工作原理是基于搜索引擎的核心技术——爬虫和索引,通过对海量数据的抓取、分析和存储,提供给用户最准确的搜索结果。 具体来说,淘宝搜索引擎的工作流程如下: 企业级api数据…...
vue实现水印功能
目录 一、应用场景 二、实现原理 三、详细开发 1.水印的实现方式 2.防止用户通过控制台修改样式去除水印效果(可跳过,有弊端) 3.水印的使用 (1)单页面/全局使用 (2)全局使用个别页面去掉…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
