基于Linux的温度传感器DS18B20驱动程序设计

发布者:eta17最新更新时间:2010-03-03 来源: 单片机与嵌入式系统关键字:Linux  DS18B20  驱动程序 手机看文章 扫描二维码
随时随地手机看文章

 引言

 传统的模拟温度测量抗干扰能力差,放大电路零点漂移大,导致测量值误差大,难以达到所需精度。在实际应用中,采用抗干扰能力强的数字温度传感器是解决上述问题的有效办法。

  DS18B20是Dallas公司生产的数字温度传感器,具有体积小、适用电压宽、经济灵活的特点。它内部使用了onboard专利技术,全部传感元件及转换电路集成在一个形如三极管的集成电路内。DS18B20有电源线、地线及数据线3根引脚线,工作电压范围为3~5.5 V,支持单总线接口。

  准确的温度测量是很多嵌入式系统中重要的一点。在Linux操作系统下使用数字温度传感器DS18B20,不仅可以得到高精度的温度测量值,而且硬件简单可靠。

  1Linux的设备驱动程序

  在Linux中,驱动程序是内核的一部分,它屏蔽了硬件细节,是整个操作系统的基础。驱动程序与Linux内核结合有两种方式:在编译内核时,静态地链接进内核;在系统运行时,以模块加载的方式加载进内核。

  驱动的对象是存储器和外设。Linux将存储器和外设分为3个基础类:字符设备、块设备、网络设备。字符设备是指必须以串行顺序依次进行访问的设备,不需要经过系统的快速缓冲;而块设备要经过系统的快速缓冲,可以任意顺序进行访问,以块为单位进行操作。字符设备和块设备并没有严格的界限,有些设备(如Flash)既可看作字符设备,也可作为块设备来访问。网络设备面向数据包的接收和发送而设计,并不对应于文件系统节点。内核与网络设备的通信方式完全不同于内核与字符设备、块设备的通信方式。

  DS18B20是单总线温度传感器,主机只能以“位”为单位对其进行访问。因此,在Linux系统中,将DS18B20作为一种典型的字符设备来访问。

  2 DS18B20的结构和工作原理

  2.1DS18B20的内外结构

  DS18B20的外部结构如图1所示。其中,VDD为电源输入端,DQ为数字信号输入/输出端,GND为电源地。


  DS18B20内部结构主要包括4部分:64位光刻ROM、温度传感器、非易失的温度报警触发器TH和TL、配置寄存器,如图2所示。


  64位ROM中,在产品出厂前就被厂家通过光刻刻录好了64位序列号。该序列号可以看作是DS18B20的地址序列码,用来区分每一个DS18B20,从而更好地实现对现场温度的多点测量。

  图2中的暂存器是DS18B20中最重要的寄存器。暂存器由9个字节组成,各字节定义如表1所列。


  配置寄存器用于用户设置温度传感器的转换精度,其各位定义如下:


  TM位是测试模式位,用于设置DS18B20是工作模式(0)还是测试模式(1),其出厂值为0。R1、R0用于设置温度传感器的转换精度:00,分辨率为9位,转换时间为93.75ms;01,分辨率为10位,转换时间为187.5 ms;10,分辨率为11位,转换时间为375 ms;11,分辨为12位,转换时间为750 ms。R1、R0的出厂值为11。其余5位值始终为1。

  第0和第1字节为16位转换后的温度二进制值,其中前4位为符号位,其余12位为转换后的数据位(分辨率为12位)。如果温度大于0,则前4位值为0,只要将测到的数值乘上0.062 5即可得到实际温度值;如果温度小于0,则前4位为1,需将测得的数值取反加1后,再乘上0.062 5。第0和第1字节各位的二进制值如下:


  2.2 DS18B20的应用电路结构

  按DS18B20的供电方式,其应用电路结构可分为如下3种:寄生电源供电方式;寄生电源强上拉供电方式;外部电源供电方式。实际应用中,以外部电源供电方式为主。其应用原理图如图3所示。


  2.3DS18B20的工作原理

  根据DS18B20的通信协议,MCU对其操作主要有如下3个步骤:读写之前,对DS18B20发送约500 μs的低电平进行复位;复位成功,发送ROM指令;发送RAM指令。MCU对DS18B20的具体操作流程如图4所示。

  3Linux的DS18B20驱动程序实现

  选取mini2440开发板为硬件平台(主芯片为Samsung公司的S3C2440),选取Linux的最新内核Linux2.6.29为软件平台。通过mini2440的扩展接口引出GPIO口(GPBl)为数据线DQ。

  DS18B20为单总线器件,因此对其操作的时序比较严格。DS18B20驱动最终能否得以正常运行,获得实时温度值,关键在于能否正确地编写复位程序、位写程序和位读程序。

  3.1复位程序

  对DS18B20进行读写之前要对其复位初始化,以检测DS18B20的存在。复位要求MCU将数据线下拉480~960 μs,再释放数据线,等待约60 μs。若MCU接收到DS18B20发出的存在低电平,则表示复位成功。

  下面是复位程序代码:

 3.2写1字节子程序

  发送ROM和RAM指令,需向DS18B20写入数据。写1字节子程序如下:


  3.3读N字节子程序

  当温度转换完毕,需从DS18B20的RAM中读取第0和第1字节的二进制数据。

  读1字节子程序如下:


  读N字节子程序如下:

  4结论

  本文采用模块加载的方法来调试DS18B20的驱动程序。调试结果如图5所示。

  图5显示的是手离开DS18B20后温度值不断降低的情况。由显示结果可知,DS18B20驱动成功加载进了Linux2.6.29内核,能实时显示当前的温度值。

关键字:Linux  DS18B20  驱动程序 引用地址:基于Linux的温度传感器DS18B20驱动程序设计

上一篇:基于蓝牙技术的无线显示屏系统设计
下一篇:数字标牌显示器市场2010年有望增长25%

推荐阅读最新更新时间:2024-05-02 21:00

基于DS18B20的家用温度测量器设计
一、设计概况   本制作采用USB口作为供电端口,用DS18B20温度传感器进行温度信息采集,用AT89C2051单片机进行控制,采用四位共阳数码管显示,从而实现对温度的测量显示(系统框图如图1所示)。本设计可培养学生对单片机学习的兴趣,提高其制作与编程能力。 图1 系统框图 二、电路原理   采用PROteUS仿真软件进行原理图设计与程序仿真。电路如图2所示。 图2 电路图 1、电源   采用USB口供电,可将USB适配器接人电路板的USB口或直接接计算机USB口。这样,既节省了资源,又能够获得较为理想的工作电压。USB口的外形及电源口定义如图3所示。 图3 USB口的外形及电源口定义   2、温度
[单片机]
基于<font color='red'>DS18B20</font>的家用温度测量器设计
单片机和linux有什么区别?
  随着嵌入式行业硬件平台的性能增强,项目需求和功能日益复杂,ARM公司推出的 CORTEX-M3,更是让以往做单片机的工程师在芯片和技术选型面临两难选择,本专题将从芯片价格、整个系统的硬件软件设计及维护的成本等各个方面给您提供一个参考, 并从技术角度分析单片机和带操作系统的系统的软件开发的异同点。   ● 1.单片机与ARM等新处理器的价格比较   ● 2.带操作系统与不带操作系统的软件开发的区别   ● 2.1.驱动开发的区别   ● 2.2.应用程序开发的区别   1. 单片机与ARM等新处理器的价格比较   表1   从表1里面各种芯片的资源,大概就可以猜知它们的应用场合。51单片机通常被用来做一些比较简单
[单片机]
单片机和<font color='red'>linux</font>有什么区别?
《ARM与Linux些许问题》第一章:ARM工作模式
==================================================================================================================================== 早期的ARM核有状态(ARM或Thumb)切换(通过BX等指令修改CPSR寄存器(当前程序状态寄存器,存放条件码标志,中断禁止位,当前处理器模式以及其他状态和控制信息)中T的控制位完成程序状态的切换),现在ARM都只使用Thumb状态了。所以,我们不在讨论状态切换相关。 一、ARM七种工作模式及其应用场合(Linux操作系统使用了其中USR和SVC模式、出现异常时还
[单片机]
S3C2440,Linux,LCD驱动
到了神秘的LCD驱动了,信息还真有点胆怯,但是还是不得不走下去。对刚刚学习的linux驱动坐一下总结,毕竟是Linux内核当中的东东,而且是那么的繁琐。做一总结,等用笔记把学过东西几下来,这样就不会忘了。哈哈! 那就开始!!! 在编写裸机LCD程序的时候,首先就是硬件初始化操作。有一个寄存器当中存放了帧缓冲的起始地址。这个参数是非常重要的。当配置好硬件后,帧缓冲中的数据能够脱离CPU不停地将真缓冲当中的数据写入到LCD屏。如果我们要现实一个图片的话只需要将图片数据放到帧缓冲当中,这样就非常的方便了。 在linux当中,把整个LCD驱动分为两层:LCD帧缓冲区层和LCD硬件驱动层。LCD帧缓冲区层其实就是将内核中的一部分空间当作一个
[单片机]
微软首次推出自主版本Linux系统
   微软 周一发布了名为Azure Sphere的新技术。这个系统能通过微处理器去驱动智能家电、互联玩具和其他数码设备。下面就随嵌入式小编一起来了解一下相关内容吧。   作为Azure Sphere的一部分, 微软 自行开发了订制版本的 Linux 。作为免费的开源操作系统, Linux 曾被 微软 认为是Windows的最大威胁。   微软总裁布拉德·史密斯(Brad Smith)在旧金山的发布会上表示:“在43年之后,这是我们首次宣布,将发布订制的 Linux 内核。”   史密斯表示,根据微软的估计,大部分新数码产品都将配备处理器,这带来了问题:2016年,不安全的摄像头和其他家电被恶意人群利用,展开大规模信息安全攻击,
[嵌入式]
利用MCP2515的多路CAN总线接口及驱动程序设计
引言   在铁路系统中,为了保证列车的安全运行,需要对铁轨及周围状况进行实时检测。目前采用的方法是在铁路沿线安装多个检测设备,用于检测洪水、大风、泥石流等自然灾害及轨温等参数。这些设备一般采用的通信方式是RS232、RS485或CAN,并通过专线连接至监控中心的各个监控设备。这种方式极大浪费了线路资源,也不易于设备的统一管理。因此,需要一种安装在铁路沿线的设备,它将附近的检测设备发送的信息统一收集并通过一条专线直接送往监控中心。为了与多个检测设备通信,必须同时具有多个RS232、RS485和CAN接口。基于这种应用需要,本文提出了扩展多个CAN总线接口的方法。 1  系统结构 1.1  芯片介绍系统   采用Atmel公
[嵌入式]
Linux-2.6.32.2内核在mini2440上的移植(十八)---将UART2更成普通串口
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,linux 版本:linux-2.6.32.2 7,参考文章: 嵌入式linux应用开发完全手册,韦东山,编著。 Mini2440 之Linux 移植开发实战指南 【1】硬件原理 S3C2440 芯片具有3 个串口:UART0,1,2,我们下载的L
[单片机]
<font color='red'>Linux</font>-2.6.32.2内核在mini2440上的移植(十八)---将UART2更成普通串口
通用和Red Hat合作开发基于Linux的全新开源车载系统
包括汽车和卡车在内,目前大多数车载系统都是基于相对封闭的专有软件,这些企业包括 Research In Motion(黑莓背后的公司)、一级供应商大陆集团和 Google。通用汽车希望通过与软件公司 Red Hat 的合作来改变这种状况。 本周二,通用汽车公司宣布,IBM 旗下的 Red Hat 公司将牵头开发一个新的、基于 Linux 的开源操作系统,该系统将支撑通用汽车在 2021 年宣布的基于云的客户服务平台 Ultifi 计划。通用汽车的 Ultifi平台将监督从未来的信息娱乐系统操作和电池管理到该公司的汽车与其他车辆、智能基础设施甚至家庭的通信方式等一切。 那么相比较市场上的其他车载系统,Red Hat 的系统有
[汽车电子]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved