STM32F4_DS18B20红外温度传感器

本文详细介绍了STM32F4如何通过单总线协议与DS18B20温度传感器进行通信,包括初始化、时序结构、操作流程、数据帧格式以及温度存储和转换方法。还提供了硬件分析和实验程序解析,展示如何读取并显示温度数据。

目录

前言

1. 单总线时序结构

2. DS18B20结构

2.1 DS18B20操作流程

2.2 DS18B20数据帧

3. 温度存储格式

4. 硬件分析

5. 实验程序详解

5.1 main.c

5.2 DS18B20.c

5.3 DS18B20.h


前言

        STM32F4内部集成了温度传感器。在之前的学习中,我们已经学习了使用AD进行温度采集,但是因为芯片温升较大,与实际的温度差别较大。所以本次我们学习使用STM32来读取开发板外部的温度传感器的温度开发板外部的温度传感器是DS18B20,该传感器和MCU实现通讯使用的是单总线协议。

1. 单总线时序结构

初始化:

        主机将总线拉低至少480us,然后释放总线,4.7K的上拉电阻将单总线拉高,等待15~60us后,存在的从机会拉低总线60~240us产生低电平以响应主机,之后从机将释放总线。

 

发送一位:

        主机将总线拉低60~120us,然后释放总线,表示发送0;主机将总线拉低1~15us,然后释放总线,表示发送1。

        从机将在总线拉低30us后(典型值)读取电平,整个时间片应大于60us。  

发送一个字节:

        连续调用8次发送一位的时序,依次发送一个字节的8位(低位在前

接收一位:

        主机将总线拉低1~15us,然后释放总线,并且在拉低后15us内读取总线电平(尽量贴近15us的末尾),读取为低电平则为接收0,读取为高电平则为接收1,整个时间片应大于60us。

接收一个字节:

        连续调用8次接收一位的时序,依次接收一个字节的8位(低位在前

正点原子官方提供的单总线时序:

1. 复位脉冲和应答脉冲

        单总线上的所有通信都是以初始化序列开始。主机输出低电平,保持低电平时间至少 480 us,以产生复位脉冲。接着主机释放总线,4.7K 的上拉电阻将单总线拉高,延时 15~60 us, 并进入接收模式(Rx)。接着 DS18B20 拉低总线 60~240 us,以产生低电平应答脉冲。

若为低电平,再延时 480 us。

2. 写时序

        写时序包括写 0 时序和写 1 时序。所有写时序至少需要 60us,且在 2 次独立的写时序之间 至少需要 1us 的恢复时间,两种写时序均起始于主机拉低总线。写 1 时序:主机输出低电平, 延时 2us,然后释放总线,延时 60us。写 0 时序:主机输出低电平,延时 60us,然后释放总线, 延时 2us。

3. 读时序

        单总线器件仅在主机发出读时序时,才向主机传输数据,所以 ,在主机发出读数据命令后, 必须马上产生读时序,以便从机能够传输数据。所有读时序至少需要 60us,且在 2 次独立的读 时序之间至少需要 1us 的恢复时间。每个读时序都由主机发起,至少拉低总线 1us。主机在读时序期间必须释放总线,并且在时序起始后的 15us 之内采样总线状态  

典型的读时序过程为: 主机输出低电平延时 2us,然后主机转入输入模式延时 12us,然后读取单总线当前的电平,然后延时50us

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值