你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第三十五章 DS18B20数字温度传感器实验

[复制链接]
正点原子-90136 提问时间:2013-3-23 22:33 /
 
<div style="layout-grid:  15.6pt 0pt">
<a name="_Toc342394290">35.1 DS18B20简介

DS18B20是由DALLAS半导体公司推出的一种的“一线总线”接口的温度传感器。与传统的热敏电阻等测温元件相比,它是一种新型的体积小、适用电压宽、与微处理器接口简单的数字化温度传感器。一线总线结构具有简洁且经济的特点,可使用户轻松地组建传感器网络,从而为测量系统的构建引入全新概念,测量温度范围为-55~+125℃ ,精度为±0.5℃。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~l2位的数字值读数方式。它工作在3—5.5 V的电压范围,采用多种封装形式,从而使系统设计灵活、方便,设定分辨率及用户设定的报警温度存储在EEPROM中,掉电后依然保存。其内部结构如图35.1.1所示:
 

图35.1.1 DS18B20内部结构图ROM中的64位序列号是出厂前被光记好的,它可以看作是该DS18B20的地址序列码,每DS18B20的64位序列号均不相同。64位ROM的排列是:前8位是产品家族码,接着48位是DS18B20的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5 +X4 +1)。ROM作用是使每一个DS18B20都各不相同,这样就可实现一根总线上挂接多个。
所有的单总线器件要求采用严格的信号时序,以保证数据的完整性。DS18B20共有6种信号类型:复位脉冲、应答脉冲、写0、写1、读0和读1。所有这些信号,除了应答脉冲以外,都由主机发出同步信号。并且发送所有的命令和数据都是字节的低位在前。这里我们简单介绍这几个信号的时序:
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。
在了解了单总线时序之后,我们来看看DS18B20的典型温度读取过程,DS18B20的典型温度读取过程为:复位à发SKIP ROM命令(0XCC)à发开始转换命令(0X44)à延时à复位à发送SKIP ROM命令(0XCC)à发读存储器命令(0XBE)à连续读出两个字节数据(即温度)à结束。
DS18B20的介绍就到这里,更详细的介绍,请大家参考DS18B20的技术手册。
<a name="_Toc342394292">35.3 软件设计
打开上一章的工程,首先在HARDWARE文件夹下新建一个DS18B20的文件夹。然后新建一个ds18b20.c和ds18b20.h的文件保存在DS18B20文件夹下,并将这个文件夹加入头文件包含路径。
打开ds18b20.c在该文件下输入如下代码:
#include "ds18b20.h"
#include "delay.h" 
//复位DS18B20
void DS18B20_Rst(void)        
{                
       DS18B20_IO_OUT();   //SET PG11 OUTPUT
    DS18B20_DQ_OUT=0; //拉低DQ
    delay_us(750);                  //拉低750us
    DS18B20_DQ_OUT=1; //DQ=1
       delay_us(15);                   //15US
}
//等待DS18B20的回应
//返回1:未检测到DS18B20的存在
//返回0:存在
u8 DS18B20_Check(void)       
{  
       u8 retry=0;
       DS18B20_IO_IN();//SET PG11 INPUT      
    while (DS18B20_DQ_IN&&retry=200)return 1;
       else retry=0;
    while (!DS18B20_DQ_IN&&retry=240)return 1;     
       return 0;
}
//从DS18B20读取一个位
//返回值:1/0
u8 DS18B20_Read_Bit(void)                      // read one bit
{
    u8 data;
       DS18B20_IO_OUT();//SET PG11 OUTPUT
    DS18B20_DQ_OUT=0;
       delay_us(2);
    DS18B20_DQ_OUT=1;
       DS18B20_IO_IN();//SET PG11 INPUT
       delay_us(12);
       if(DS18B20_DQ_IN)data=1;
    else data=0;   
    delay_us(50);          
    return data;
}
//从DS18B20读取一个字节
//返回值:读到的数据
u8 DS18B20_Read_Byte(void)    // read one byte
{       
    u8 i,j,dat;
    dat=0;
       for (i=1;i1;
        if (testb)
        {
            DS18B20_DQ_OUT=0;// Write 1
            delay_us(2);                           
            DS18B20_DQ_OUT=1;
            delay_us(60);            
        }
        else
        {
            DS18B20_DQ_OUT=0;// Write 0
            delay_us(60);            
            DS18B20_DQ_OUT=1;
            delay_us(2);                         
        }
    }
}
//开始温度转换
void DS18B20_Start(void)// ds1820 start convert
{                                                            
    DS18B20_Rst();       
       DS18B20_Check();      
    DS18B20_Write_Byte(0xcc);// skip rom
    DS18B20_Write_Byte(0x44);// convert
}
//初始化DS18B20的IO口 DQ 同时检测DS的存在
//返回1:不存在
//返回0:存在       
u8 DS18B20_Init(void)
{
       RCC->APB2ENR|=1CRH|=0X00003000;
       GPIOG->ODR|=1

《STM32开发指南》第三十五章 DS18B20数字温度传感器实验.rar

下载

598.28 KB, 下载次数: 59, 下载积分: ST金币 -1

实验30 DS18B20数字温度传感器实验.rar

下载

152.77 KB, 下载次数: 50, 下载积分: ST金币 -1

收藏 评论1 发布时间:2013-3-23 22:33

举报

1个回答
hadesMUC 回答时间:2014-8-10 19:43:37

RE:【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第三十五章 DS18B20数字温度传感器实验

正好要用到此驱动

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版